Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/richdocuments.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Dubiniuk <victor.dubiniuk@gmail.com>2015-06-10 19:05:58 +0300
committerVictor Dubiniuk <victor.dubiniuk@gmail.com>2015-06-11 01:33:26 +0300
commit7898d5bc31a7e4902222db8d770b3f4146646f54 (patch)
treed81515d0dfe55238e847ba3e07ad8ef983e5e31c
parent194ad804088fb1d5c46a63b0531a06472464fe79 (diff)
Add vanilla webodf
-rw-r--r--css/3rdparty/webodf/editor.css300
-rw-r--r--css/3rdparty/webodf/wodocollabpane.css72
-rw-r--r--css/3rdparty/webodf/wodotexteditor.css170
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/Calendar.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/Calendar_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/ColorPalette.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/Common.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/Dialog.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/Dialog_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/Editor.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/Editor_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/Menu.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/Menu_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/ProgressBar.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/TimePicker.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/TimePicker_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/TitlePane.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/TitlePane_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/Toolbar.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/Tree.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/Tree_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/form/Button.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/form/Button_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/form/Checkbox.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/form/Common.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/form/RadioButton.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/form/Select.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/form/Slider.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/form/Slider_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/form/TimeTextBox.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/accordionItemActive.pngbin148 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/buttonActive.pngbin139 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/buttonDisabled.pngbin139 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/buttonEnabled.pngbin135 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/buttonHover.pngbin134 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/dndCopy.pngbin777 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/dndMove.pngbin726 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/dndNoCopy.pngbin1332 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/dndNoMove.pngbin991 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/no.gifbin179 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/preciseSliderThumb.gifbin258 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/preciseSliderThumb.pngbin413 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/preciseSliderThumbFocus.gifbin258 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/preciseSliderThumbFocus.pngbin434 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/progressBarAnim.gifbin7064 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/progressBarEmpty.pngbin314 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/progressBarFull.pngbin746 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/sliderEmpty.pngbin114 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/sliderEmptyVertical.pngbin114 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/sliderFull.pngbin130 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/sliderFullFocus.pngbin132 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/sliderFullVertical.pngbin126 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/sliderFullVerticalFocus.pngbin126 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/sliderThumb.gifbin238 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/sliderThumb.pngbin413 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/sliderThumbFocus.gifbin238 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/sliderThumbFocus.pngbin421 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/splitContainerSizerH-thumb.pngbin127 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/splitContainerSizerH.pngbin121 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/splitContainerSizerV-thumb.pngbin129 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/splitContainerSizerV.pngbin116 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/spriteArrows.gifbin446 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/spriteArrows.pngbin720 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/spriteCheckbox.gifbin774 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/spriteCheckbox.pngbin707 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/spriteDivIcons.gifbin875 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/spriteDivIcons.pngbin1062 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/spriteRadio.gifbin1137 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/spriteRadio.pngbin1073 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/spriteRoundedIconsSmall.gifbin1863 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/spriteRoundedIconsSmall.pngbin2195 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/spriteTree.gifbin233 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/spriteTree.pngbin337 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/spriteTree_rtl.gifbin233 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/spriteTree_rtl.pngbin335 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/tabBottomActiveC.gifbin518 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/tabBottomEnabledC.gifbin511 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/tabBottomHoverC.gifbin542 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/tabContainerSprite.gifbin1285 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/titleBar.pngbin148 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/titleBarActive.pngbin155 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorDown.gifbin205 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorDown.pngbin342 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorLeft.gifbin205 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorLeft.pngbin361 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorRight.gifbin204 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorRight.pngbin363 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorUp.gifbin205 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorUp.pngbin319 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/treeExpand_loading.gifbin662 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/treeHover.pngbin112 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/treeI.gifbin71 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/treeI_half.gifbin65 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/treeI_half_rtl.gifbin66 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/treeI_rtl.gifbin72 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/validationInputBg.gifbin93 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/validationInputBg.pngbin126 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/images/warning.pngbin1275 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/layout/AccordionContainer.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/layout/AccordionContainer_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/layout/BorderContainer.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/layout/ContentPane.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/layout/SplitContainer.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/layout/TabContainer.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/layout/TabContainer_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/nihilo.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/nihilo/nihilo_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/Calendar.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/Calendar_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/ColorPalette.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/Common.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/Dialog.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/Dialog_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/Editor.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/Editor_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/Menu.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/Menu_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/ProgressBar.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/TimePicker.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/TimePicker_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/TitlePane.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/TitlePane_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/Toolbar.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/Tree.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/Tree_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/form/Button.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/form/Button_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/form/Checkbox.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/form/Common.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/form/RadioButton.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/form/Select.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/form/Slider.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/form/Slider_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/form/TimeTextBox.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/accordionItemActive.gifbin174 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/accordionItemActive.pngbin171 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/buttonActive.pngbin187 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/buttonDisabled.pngbin187 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/buttonEnabled.pngbin174 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/buttonHover.pngbin160 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/dndCopy.pngbin777 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/dndMove.pngbin726 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/dndNoCopy.pngbin1332 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/dndNoMove.pngbin991 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/preciseSliderThumb.gifbin258 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/preciseSliderThumb.pngbin413 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/preciseSliderThumbFocus.gifbin258 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/preciseSliderThumbFocus.pngbin434 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/progressBarAnim.gifbin9304 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/progressBarEmpty.pngbin232 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/progressBarFull.pngbin251 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/sliderEmpty.pngbin114 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/sliderEmptyVertical.pngbin114 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/sliderFull.pngbin131 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/sliderFullFocus.pngbin146 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/sliderFullVertical.pngbin127 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/sliderFullVerticalFocus.pngbin143 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/sliderThumb.gifbin238 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/sliderThumb.pngbin413 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/sliderThumbFocus.gifbin238 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/sliderThumbFocus.pngbin421 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/splitContainerSizerH-thumb.pngbin125 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/splitContainerSizerH.pngbin127 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/splitContainerSizerV-thumb.pngbin121 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/splitContainerSizerV.pngbin124 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/spriteArrows.gifbin446 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/spriteArrows.pngbin720 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/spriteCheckbox.gifbin774 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/spriteCheckbox.pngbin707 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/spriteDivIcons.gifbin884 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/spriteDivIcons.pngbin1114 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/spriteRadio.gifbin1137 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/spriteRadio.pngbin1073 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/spriteRoundedIconsSmall.gifbin1937 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/spriteRoundedIconsSmall.pngbin3187 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/spriteRoundedIconsSmallBl.gifbin1907 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/spriteRoundedIconsSmallBl.pngbin3010 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/spriteTree.gifbin233 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/spriteTree.pngbin337 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/spriteTree_rtl.gifbin233 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/spriteTree_rtl.pngbin335 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/tabBottomActiveC.gifbin482 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/tabBottomEnabledC.gifbin337 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/tabBottomEnabledSpriteLR.gifbin676 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/tabBottomHoverC.gifbin280 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/tabContainerSprite.gifbin2570 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/tabLeftChecked.gifbin2005 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/tabRightChecked.gifbin2003 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/titleBar.pngbin183 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/titleBarActive.pngbin183 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorDown.gifbin205 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorDown.pngbin342 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorLeft.gifbin205 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorLeft.pngbin361 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorRight.gifbin204 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorRight.pngbin363 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorUp.gifbin205 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorUp.pngbin319 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/treeExpand_loading.gifbin662 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/treeHover.pngbin112 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/treeI.gifbin71 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/treeI_half.gifbin65 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/treeI_half_rtl.gifbin66 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/treeI_rtl.gifbin72 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/validationInputBg.gifbin93 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/validationInputBg.pngbin126 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/images/warning.pngbin1275 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/layout/AccordionContainer.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/layout/AccordionContainer_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/layout/BorderContainer.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/layout/ContentPane.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/layout/SplitContainer.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/layout/TabContainer.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/layout/TabContainer_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/soria.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/soria/soria_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/Calendar.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/Calendar_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/ColorPalette.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/Common.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/Dialog.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/Dialog_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/Editor.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/Editor_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/Menu.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/Menu_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/ProgressBar.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/TimePicker.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/TimePicker_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/TitlePane.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/TitlePane_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/Toolbar.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/Tree.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/Tree_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/form/Button.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/form/Checkbox.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/form/Common.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/form/RadioButton.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/form/Select.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/form/Slider.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/form/Slider_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/accordionItemActive.gifbin107 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/accordionItemHover.gifbin171 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/buttonActive.pngbin129 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/buttonDisabled.pngbin135 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/buttonEnabled.pngbin120 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/buttonHover.pngbin144 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/calendarDayLabel.pngbin161 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/calendarMonthLabel.pngbin162 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/calendarYearLabel.pngbin172 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/checkmark.gifbin2060 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/checkmark.pngbin5529 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/checkmarkNoBorder.gifbin1658 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/checkmarkNoBorder.pngbin4401 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/circleIcon.gifbin204 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/circleIcon.pngbin2975 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/comboArrowDown.gifbin49 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/dijitProgressBarAnim.gifbin1676 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/dijitProgressBarAnim.psdbin40142 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/dndCopy.pngbin777 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/dndMove.pngbin726 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/dndNoCopy.pngbin1332 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/dndNoMove.pngbin991 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/dojoTundraGradientBg.gifbin65 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/dojoTundraGradientBg.pngbin135 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/doubleArrowDown.pngbin152 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/doubleArrowUp.pngbin158 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/folderClosed.gifbin933 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/folderOpened.gifbin941 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/i.gifbin48 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/i_half.gifbin63 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/i_half_rtl.gifbin61 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/i_rtl.gifbin48 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/leaf.gifbin403 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/loading.gifbin751 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/menu.pngbin140 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/minusButton.gifbin148 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/no.gifbin179 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/noX.gifbin80 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/plusButton.gifbin212 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/popupMenuBg.gifbin151 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/preciseSliderThumb.gifbin212 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/preciseSliderThumb.pngbin248 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/preciseSliderThumbFocus.gifbin212 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/preciseSliderThumbFocus.pngbin281 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-1.pngbin288 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-2.pngbin289 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-3.pngbin288 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-4.pngbin287 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-5.pngbin283 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-6.pngbin283 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-7.pngbin284 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-8.pngbin286 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-9.pngbin289 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim.gifbin2624 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim.psdbin40142 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/progressBarEmpty.pngbin164 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/progressBarFull.pngbin160 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/radioButtonActive.pngbin550 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/radioButtonActiveDisabled.pngbin517 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/radioButtonActiveHover.pngbin646 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/radioButtonDisabled.pngbin403 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/radioButtonEnabled.pngbin487 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/radioButtonHover.pngbin497 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/sliderEmpty.pngbin124 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/sliderEmptyVertical.pngbin88 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/sliderFull.pngbin135 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/sliderFullFocus.pngbin163 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/sliderFullVertical.pngbin99 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/sliderFullVerticalFocus.pngbin164 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/sliderThumb.pngbin241 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/sliderThumbFocus.gifbin216 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/sliderThumbFocus.pngbin288 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/smallArrowDown.pngbin134 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/smallArrowUp.pngbin134 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/splitContainerSizerH-thumb.pngbin127 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/splitContainerSizerH.pngbin140 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/splitContainerSizerV-thumb.pngbin129 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/splitContainerSizerV.pngbin135 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/spriteArrows.gifbin116 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/spriteArrows.pngbin338 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/spriteRoundedIconsSmall.gifbin1863 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/spriteRoundedIconsSmall.pngbin2195 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/tabActive.pngbin155 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/tabClose.gifbin193 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/tabClose.pngbin220 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/tabCloseHover.gifbin193 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/tabCloseHover.pngbin220 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/tabDisabled.pngbin139 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/tabEnabled.pngbin142 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/tabHover.gifbin156 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/tabHover.pngbin154 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/titleBar.pngbin151 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/titleBarBg.gifbin97 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorDown.gifbin179 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorDown.pngbin410 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorLeft.gifbin193 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorLeft.pngbin3106 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorRight.gifbin194 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorRight.pngbin3121 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorUp.gifbin184 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorUp.pngbin3092 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_leaf.gifbin839 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_leaf_rtl.gifbin841 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_loading.gifbin1944 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_minus.gifbin211 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_minus_rtl.gifbin210 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_mius.gifbin211 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_plus.gifbin216 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_plus_rtl.gifbin215 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/treeHover.pngbin112 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/validationInputBg.gifbin109 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/validationInputBg.pngbin165 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/images/warning.pngbin1275 -> 0 bytes
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/layout/AccordionContainer.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/layout/BorderContainer.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/layout/ContentPane.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/layout/SplitContainer.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/layout/TabContainer.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/layout/TabContainer_rtl.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/tundra.css1
-rw-r--r--js/3rdparty/resources/dijit/themes/tundra/tundra_rtl.css1
-rw-r--r--js/3rdparty/resources/dojo/dojo.js1263
-rwxr-xr-x[-rw-r--r--]js/3rdparty/resources/dojox/layout/resources/icons/gridcontainer_grip.gifbin80 -> 80 bytes
-rwxr-xr-x[-rw-r--r--]js/3rdparty/resources/dojox/layout/resources/icons/grip_bg.gifbin46 -> 46 bytes
-rwxr-xr-x[-rw-r--r--]js/3rdparty/resources/dojox/layout/resources/icons/pixel.gifbin64 -> 64 bytes
-rwxr-xr-x[-rw-r--r--]js/3rdparty/resources/dojox/layout/resources/icons/resize.pngbin319 -> 319 bytes
-rwxr-xr-x[-rw-r--r--]js/3rdparty/resources/dojox/layout/resources/icons/rotator.pngbin1895 -> 1895 bytes
-rwxr-xr-x[-rw-r--r--]js/3rdparty/resources/dojox/layout/resources/icons/splitterToggleH.pngbin2937 -> 2937 bytes
-rwxr-xr-x[-rw-r--r--]js/3rdparty/resources/dojox/layout/resources/icons/splitterToggleV.pngbin2938 -> 2938 bytes
-rwxr-xr-x[-rw-r--r--]js/3rdparty/resources/dojox/widget/ColorPicker/images/hue.pngbin1991 -> 1991 bytes
-rwxr-xr-x[-rw-r--r--]js/3rdparty/resources/dojox/widget/ColorPicker/images/hueHandle.pngbin280 -> 280 bytes
-rwxr-xr-x[-rw-r--r--]js/3rdparty/resources/dojox/widget/ColorPicker/images/hueHandleA11y.pngbin199 -> 199 bytes
-rwxr-xr-x[-rw-r--r--]js/3rdparty/resources/dojox/widget/ColorPicker/images/pickerPointer.pngbin228 -> 228 bytes
-rwxr-xr-x[-rw-r--r--]js/3rdparty/resources/dojox/widget/ColorPicker/images/underlay.pngbin10788 -> 10788 bytes
-rw-r--r--js/3rdparty/webodf/dojo-amalgamation.js2548
-rw-r--r--js/3rdparty/webodf/editor/EditorSession.js217
-rw-r--r--js/3rdparty/webodf/editor/MemberListView.js336
-rw-r--r--js/3rdparty/webodf/editor/Tools.js312
-rw-r--r--js/3rdparty/webodf/editor/backend/ServerFactory.js50
-rw-r--r--js/3rdparty/webodf/editor/backend/pullbox/OperationRouter.js (renamed from js/3rdparty/webodf/editor/server/pullbox/OperationRouter.js)37
-rw-r--r--js/3rdparty/webodf/editor/backend/pullbox/Server.js (renamed from js/3rdparty/webodf/editor/server/pullbox/Server.js)17
-rw-r--r--js/3rdparty/webodf/editor/backend/pullbox/ServerFactory.js (renamed from js/3rdparty/webodf/editor/server/pullbox/ServerFactory.js)15
-rw-r--r--js/3rdparty/webodf/editor/backend/pullbox/SessionBackend.js64
-rw-r--r--js/3rdparty/webodf/editor/backend/pullbox/SessionList.js (renamed from js/3rdparty/webodf/editor/server/pullbox/SessionList.js)19
-rw-r--r--js/3rdparty/webodf/editor/server/ServerFactory.js65
-rw-r--r--js/3rdparty/webodf/editor/widgets/aboutDialog.js67
-rw-r--r--js/3rdparty/webodf/editor/widgets/annotation.js58
-rw-r--r--js/3rdparty/webodf/editor/widgets/dialogWidgets/alignmentPane.js81
-rw-r--r--js/3rdparty/webodf/editor/widgets/dialogWidgets/editHyperlinkPane.html2
-rw-r--r--js/3rdparty/webodf/editor/widgets/dialogWidgets/editHyperlinkPane.js58
-rw-r--r--js/3rdparty/webodf/editor/widgets/dialogWidgets/fontEffectsPane.js69
-rw-r--r--js/3rdparty/webodf/editor/widgets/dialogWidgets/idMangler.js90
-rw-r--r--js/3rdparty/webodf/editor/widgets/editHyperlinks.js233
-rw-r--r--js/3rdparty/webodf/editor/widgets/fontPicker.js60
-rw-r--r--js/3rdparty/webodf/editor/widgets/imageInserter.js89
-rw-r--r--js/3rdparty/webodf/editor/widgets/paragraphAlignment.js89
-rw-r--r--js/3rdparty/webodf/editor/widgets/paragraphStyles.js138
-rw-r--r--js/3rdparty/webodf/editor/widgets/paragraphStylesDialog.js202
-rw-r--r--js/3rdparty/webodf/editor/widgets/simpleStyles.js115
-rw-r--r--js/3rdparty/webodf/editor/widgets/toolbarWidgets/currentStyle.js131
-rw-r--r--js/3rdparty/webodf/editor/widgets/undoRedoMenu.js49
-rw-r--r--js/3rdparty/webodf/editor/widgets/zoomSlider.js116
-rw-r--r--js/3rdparty/webodf/webodf-debug.js21990
-rw-r--r--js/3rdparty/webodf/webodf.js3972
405 files changed, 15433 insertions, 17766 deletions
diff --git a/css/3rdparty/webodf/editor.css b/css/3rdparty/webodf/editor.css
deleted file mode 100644
index 6f23a0c8..00000000
--- a/css/3rdparty/webodf/editor.css
+++ /dev/null
@@ -1,300 +0,0 @@
-body.claro, #mainContainer {
- width: 100%;
- height: 100%;
- margin: 0;
- font-family: sans-serif;
- font-size: 10pt;
- padding: 0px;
-}
-
-#mainContainer {
- background-color: gray;
-}
-
-#editor *:focus {
- outline: none;
-}
-
-#editor {
- border: none;
- box-shadow: 0px 0px 14px #555;
- overflow: hidden;
- padding: 0px !important;
- z-index: 4;
-}
-
-#toolbar {
- overflow: hidden;
- top: 0;
- left: 0;
- right: 0;
- position: absolute;
- z-index: 5;
- box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25);
-}
-
-#container {
- text-align: center;
- background-color: #ddd;
- overflow: auto;
- position: absolute;
- top: 30px;
- bottom: 0;
- left: 0;
- right: 0;
-}
-
-#canvas {
- margin-top: 30px;
- margin-left: 10px;
- margin-right: 10px;
- margin-bottom: 30px;
-
- transform-origin: top center;
- -webkit-transform-origin: top center;
- -moz-transform-origin: top center;
- -o-transform-origin: top center;
- overflow: visible;
-}
-
-/* Add shadow to the sizer and not the canvas,
- * so that it will follow the smooth zooming
- * of the slider and not have to be updated
- * every time a gesture ends
- */
-#canvas > div {
- box-shadow: 0px 0px 20px #aaa;
- border: 1px solid #ccc;
-}
-
-#collaboration {
- width: 20%;
- border-top-left-radius: 5px;
- border-top-right-radius: 5px;
-
- box-shadow: 0 0 3px #888;
-
- border: none;
-}
-
-#collaboration > .dojoxExpandoTitle {
- border-top-left-radius: 5px;
- border-top-right-radius: 5px;
- border: none;
- background-color: rgb(243, 243, 243);
-}
-
-#collaboration > .dojoxExpandoWrapper {
- width: 100%;
- background-color: rgb(243, 243, 243);
- border: 1px solid #769DC0;
- border: none;
-
-}
-
-#members {
- width: 70px;
- padding: 2px;
- text-align: center;
- background-color: gray;
- border: none;
-}
-
-#inviteButton {
- display: none;
-
- color: white;
- margin-top: 5px;
- padding: 3px;
- word-wrap: break-word;
- text-align: center justify;
- margin-left: auto;
- margin-right: auto;
- border-radius: 5px;
- text-align: center;
- background-color: black;
- box-shadow: 0px 0px 5px rgb(90, 90, 90);
- border: 1px solid black;
- cursor: pointer;
-}
-#inviteButton:hover {
- color: yellow;
- box-shadow: 0px 0px 5px red;
-}
-#inviteButton:active {
- box-shadow: 0px 0px 15px red;
-}
-
-#members > #nameInfo {
- padding-top: 3px;
- padding-bottom: 3px;
- width: 100%;
- background-color: #eef;
-}
-
-#memberList .memberListButton {
- margin-top: 5px;
- padding-top: 3px;
- margin-left: auto;
- margin-right: auto;
- width: 68px;
- border-radius: 5px;
- text-align: center;
- background-color: black;
- box-shadow: 0px 0px 5px rgb(90, 90, 90);
- border: 1px solid black;
- cursor: pointer;
-}
-
-#memberList .memberListLabel {
- color: white;
- border-radius: 5px;
- padding: 2px;
- font-size: 8pt;
- word-wrap: break-word;
- text-align: center justify;
-}
-div.memberListLabel[fullname]:before {
- content: attr(fullname) "";
-}
-
-#memberList img {
- box-shadow: 0px 0px 5px rgb(90, 90, 90) inset;
- background-color: rgb(200, 200, 200);
- border-radius: 5px;
- border: 2px solid;
- height: 60px;
- width: 60px;
- display: block;
- margin: auto;
-}
-
-#memberList img:hover {
- opacity: 0.9;
-}
-
-.dijitDialog {
- border: none !important;
- box-shadow: 0 1px 50px rgba(0, 0, 0, 0.25) !important;
- -moz-box-shadow: 0 1px 50px rgba(0, 0, 0, 0.25) !important;
- -o-box-shadow: 0 1px 50px rgba(0, 0, 0, 0.25) !important;
- -webkit-box-shadow: 0 1px 50px rgba(0, 0, 0, 0.25) !important;
- -ms-box-shadow: 0 1px 50px rgba(0, 0, 0, 0.25) !important;
-}
-
-.dijitDialogTitle {
- color: #333 !important;
- font-size: 14pt !important;
-}
-
-.dijitDialogPaneContent {
- border: none !important;
- overflow: hidden !important;
- height: 510px !important;
- width: 450px !important;
-}
-
-.dijitDialogPaneContent h3 {
- font-weight: normal;
- color: #333;
- font-size: 12pt;
- padding: 0px;
- width: 80%;
- border-bottom: 1px solid #eee;
-}
-
-.dijitTabPaneWrapper {
- border: none !important;
-}
-.dijitDialogTitleBar {
- border: none !important;
- background-color: #fff !important;
-}
-
-.dijitDialogPaneActionBar {
- margin: 0 !important;
-}
-
-.dijitDialogUnderlay {
- background: radial-gradient(center, transparent, #333) !important;
- background: -webkit-radial-gradient(center, transparent , #333) !important;
- background: -moz-radial-gradient(center, transparent , #333) !important;
- background: -o-radial-gradient(center, transparent , #333) !important;
- background: -ms-radial-gradient(center, transparent , #333) !important;
-}
-
-.labeledSelect > table {
- margin-left: 10px;
-}
-
-.dijitSpinner {
- width: 50px !important;
-}
-
-.dijitRadio {
- margin-top: 3px !important;
- margin-bottom: 3px !important;
-}
-
-.dijitCheckBox {
- margin-top: 3px !important;
- margin-bottom: 7px !important;
-}
-.dojoxColorPicker {
- background-color: transparent !important;
- border: none !important;
-}
-
-.dialogPreviewBox {
- height: 100px;
- width: 100%;
- border: 1px solid gray;
- background-color: white;
- text-align: center;
-}
-
-cursor .handle {
- margin-top: 5px;
- padding-top: 3px;
- margin-left: auto;
- margin-right: auto;
- width: 64px !important;
- height: 68px !important;
- border-radius: 5px;
- text-align: center;
- background-color: black !important;
- box-shadow: 0px 0px 5px rgb(90, 90, 90);
- border: 1px solid black;
-
- top: -85px !important;
- left: -34px !important;
-}
-
-cursor img {
- box-shadow: 0px 0px 5px rgb(90, 90, 90) inset;
- background-color: rgb(200, 200, 200);
- border-radius: 5px;
- border: 2px solid;
- height: 60px !important;
- width: 60px !important;
- display: block;
- margin: auto;
-}
-
-cursor .handle.active {
- opacity: 0.8;
-}
-
-cursor .handle:after {
- content: ' ';
- position: absolute;
- width: 0px;
- height: 0px;
- border-style: solid;
- border-width: 8.7px 5px 0 5px;
- border-color: black transparent transparent transparent;
-
- top: 100%;
- left: 43%;
-}
-
diff --git a/css/3rdparty/webodf/wodocollabpane.css b/css/3rdparty/webodf/wodocollabpane.css
new file mode 100644
index 00000000..13068bb5
--- /dev/null
+++ b/css/3rdparty/webodf/wodocollabpane.css
@@ -0,0 +1,72 @@
+/**
+ * Copyright (C) 2012-2014 KO GmbH <copyright@kogmbh.com>
+ *
+ * @licstart
+ * This file is part of WebODF.
+ *
+ * WebODF is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License (GNU AGPL)
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * WebODF is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with WebODF. If not, see <http://www.gnu.org/licenses/>.
+ * @licend
+ *
+ * @source: http://www.webodf.org/
+ * @source: https://github.com/kogmbh/WebODF/
+ */
+
+.webodfeditor-members {
+ width: 70px !important;
+ padding: 2px !important;
+ text-align: center !important;
+ background-color: gray !important;
+ border: none !important;
+}
+
+.webodfeditor-memberList .webodfeditor-memberListButton {
+ margin-top: 5px;
+ padding-top: 3px;
+ margin-left: auto;
+ margin-right: auto;
+ width: 68px;
+ border-radius: 5px;
+ text-align: center;
+ background-color: black;
+ box-shadow: 0px 0px 5px rgb(90, 90, 90);
+ border: 1px solid black;
+ cursor: pointer;
+}
+
+.webodfeditor-memberList .webodfeditor-memberListLabel {
+ color: white;
+ border-radius: 5px;
+ padding: 2px;
+ font-size: 8pt;
+ word-wrap: break-word;
+ text-align: center justify;
+}
+div.webodfeditor-memberListLabel[fullname]:before {
+ content: attr(fullname) "";
+}
+
+.webodfeditor-memberList img {
+ box-shadow: 0px 0px 5px rgb(90, 90, 90) inset;
+ background-color: rgb(200, 200, 200);
+ border-radius: 5px;
+ border: 2px solid;
+ height: 60px;
+ width: 60px;
+ display: block;
+ margin: auto;
+}
+
+.webodfeditor-memberList img:hover {
+ opacity: 0.9;
+}
diff --git a/css/3rdparty/webodf/wodotexteditor.css b/css/3rdparty/webodf/wodotexteditor.css
new file mode 100644
index 00000000..0c58b92a
--- /dev/null
+++ b/css/3rdparty/webodf/wodotexteditor.css
@@ -0,0 +1,170 @@
+/**
+ * Copyright (C) 2012-2014 KO GmbH <copyright@kogmbh.com>
+ *
+ * @licstart
+ * This file is part of WebODF.
+ *
+ * WebODF is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License (GNU AGPL)
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * WebODF is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with WebODF. If not, see <http://www.gnu.org/licenses/>.
+ * @licend
+ *
+ * @source: http://www.webodf.org/
+ * @source: https://github.com/kogmbh/WebODF/
+ */
+
+.webodfeditor-editor *:focus {
+ outline: none;
+}
+
+.webodfeditor-editor {
+ border: none;
+ box-shadow: 0px 0px 14px #555;
+ overflow: hidden;
+ padding: 0px !important;
+ z-index: 4;
+}
+
+.webodfeditor-canvascontainer {
+ text-align: center;
+ background-color: #ddd;
+ overflow: auto;
+ position: absolute;
+ top: 30px;
+ bottom: 0;
+ left: 0;
+ right: 0;
+}
+
+.webodfeditor-canvas {
+ margin-top: 30px;
+ margin-left: 10px;
+ margin-right: 10px;
+ margin-bottom: 30px;
+
+ transform-origin: top center;
+ -webkit-transform-origin: top center;
+ -moz-transform-origin: top center;
+ -o-transform-origin: top center;
+
+ box-shadow: 0px 0px 20px #aaa;
+ border: 1px solid #ccc;
+
+ /*
+ * Hide the canvas overflow because otherwise the CSS-scaled 'sizer' child
+ * of the canvas will still advertise the original size in Firefox, causing
+ * strange scrollbar behavior.
+ */
+ overflow: hidden;
+}
+
+.webodfeditor-dijitWebODFIcon {
+ background-image: url("images/webodf.png");
+ background-repeat: no-repeat;
+ width: 16px;
+ height: 16px;
+ text-align: center;
+}
+
+.webodfeditor-dijitSaveAsIcon {
+ background-image: url("images/saveas.png");
+ background-repeat: no-repeat;
+ width: 18px;
+ height: 18px;
+ text-align: center;
+}
+
+/* Fix toolbar not adapting size to floating toolbar elements */
+.dijitToolbar:after {
+ content: ".";
+ visibility: hidden;
+ display: block;
+ height: 0;
+ clear: both;
+}
+
+.dijitDialog {
+ border: none !important;
+ box-shadow: 0 1px 50px rgba(0, 0, 0, 0.25) !important;
+ -moz-box-shadow: 0 1px 50px rgba(0, 0, 0, 0.25) !important;
+ -o-box-shadow: 0 1px 50px rgba(0, 0, 0, 0.25) !important;
+ -webkit-box-shadow: 0 1px 50px rgba(0, 0, 0, 0.25) !important;
+ -ms-box-shadow: 0 1px 50px rgba(0, 0, 0, 0.25) !important;
+}
+
+.dijitDialogTitle {
+ color: #333 !important;
+ font-size: 14pt !important;
+}
+
+.dijitDialogPaneContent {
+ border: none !important;
+}
+
+.dijitDialogPaneContent h3 {
+ font-weight: normal;
+ color: #333;
+ font-size: 12pt;
+ padding: 0px;
+ width: 80%;
+ border-bottom: 1px solid #eee;
+}
+
+.dijitTabPaneWrapper {
+ border: none !important;
+}
+.dijitDialogTitleBar {
+ border: none !important;
+ background-color: #fff !important;
+}
+
+.dijitDialogPaneActionBar {
+ margin: 0 !important;
+}
+
+.dijitDialogUnderlay {
+ background: radial-gradient(center, transparent, #333) !important;
+ background: -webkit-radial-gradient(center, transparent , #333) !important;
+ background: -moz-radial-gradient(center, transparent , #333) !important;
+ background: -o-radial-gradient(center, transparent , #333) !important;
+ background: -ms-radial-gradient(center, transparent , #333) !important;
+}
+
+.labeledSelect > table {
+ margin-left: 10px;
+}
+
+.dijitSpinner {
+ width: 50px !important;
+}
+
+.dijitRadio {
+ margin-top: 3px !important;
+ margin-bottom: 3px !important;
+}
+
+.dijitCheckBox {
+ margin-top: 3px !important;
+ margin-bottom: 7px !important;
+}
+.dojoxColorPicker {
+ background-color: transparent !important;
+ border: none !important;
+}
+
+.dialogPreviewBox {
+ height: 100px;
+ width: 100%;
+ border: 1px solid gray;
+ background-color: white;
+ text-align: center;
+}
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/Calendar.css b/js/3rdparty/resources/dijit/themes/nihilo/Calendar.css
deleted file mode 100644
index 88c63433..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/Calendar.css
+++ /dev/null
@@ -1 +0,0 @@
-.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; padding: 0 4px;}.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; font-size: 1.17em;}.nihilo .dijitCalendarSelectedYear {font-weight:bolder; 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 .dijitCalendar .dijitDropDownButton {margin: 0;}.nihilo .dijitCalendar .dijitButtonText {padding: 0;}.nihilo .dijitCalendar .dijitDropDownButton .dijitButtonNode {background-color: transparent; background-image: none; padding: 0;}.nihilo .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover {background-color: #ffe284; color: #243C5F;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/Calendar_rtl.css b/js/3rdparty/resources/dijit/themes/nihilo/Calendar_rtl.css
deleted file mode 100644
index a210dbe7..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/Calendar_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.dijitRtl .nihilo .dijitCalendarDecrease {background-position: -30px top;}.dijitRtl .nihilo .dijitCalendarIncrease {background-position: 0 top;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/ColorPalette.css b/js/3rdparty/resources/dijit/themes/nihilo/ColorPalette.css
deleted file mode 100644
index 86be8351..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/ColorPalette.css
+++ /dev/null
@@ -1 +0,0 @@
-.dijitColorPalette {border:1px solid #d3d3d3; background:#fff; -moz-border-radius: 0 !important;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/Common.css b/js/3rdparty/resources/dijit/themes/nihilo/Common.css
deleted file mode 100644
index 34c05980..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/Common.css
+++ /dev/null
@@ -1 +0,0 @@
-.nihilo .dojoDndItemOver {background-image: url(images/treeHover.png);}.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/Dialog.css b/js/3rdparty/resources/dijit/themes/nihilo/Dialog.css
deleted file mode 100644
index 4b68361a..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/Dialog.css
+++ /dev/null
@@ -1 +0,0 @@
-.nihilo .dijitDialog {background: #eee; border: 1px solid #d3d3d3; -webkit-box-shadow: 0 5px 10px #adadad; padding: 0;}.nihilo .dijitDialog .dijitDialogTitle {font-size: 0.9em; color: #243C5F; font-weight: bold; padding: 0 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 0; 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:0; z-index: 2;}.nihilo .dijitTooltipABRight .dijitTooltipConnector {left: auto !important; right: 6px;}.nihilo .dijitTooltipBelow .dijitTooltipConnector {top: 0; 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: 0; 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;}.nihilo .dijitTooltipLeft .dijitTooltipConnector {right: 0; 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: 0; background:url("images/tooltipConnectorLeft.png") no-repeat top left; width:11px; height:17px;}.dj_ie .nihilo .dijitTooltipRight .dijitTooltipConnector {background-image: url("images/tooltipConnectorLeft.gif");} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/Dialog_rtl.css b/js/3rdparty/resources/dijit/themes/nihilo/Dialog_rtl.css
deleted file mode 100644
index 9a0d311e..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/Dialog_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.dijitRtl .nihilo .dijitDialogTitleBar .dijitDialogCloseIcon {right: auto; left: 5px;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/Editor.css b/js/3rdparty/resources/dijit/themes/nihilo/Editor.css
deleted file mode 100644
index 8ca81e08..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/Editor.css
+++ /dev/null
@@ -1 +0,0 @@
-.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');} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/Editor_rtl.css b/js/3rdparty/resources/dijit/themes/nihilo/Editor_rtl.css
deleted file mode 100644
index 8b92c7dd..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/Editor_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.dijitRtl .nihilo .dijitEditorIcon {background-image: url('../../icons/images/editorIconsEnabled_rtl.png');}.dijitRtl .nihilo .dijitDisabled .dijitEditorIcon {background-image: url('../../icons/images/editorIconsDisabled_rtl.png');} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/Menu.css b/js/3rdparty/resources/dijit/themes/nihilo/Menu.css
deleted file mode 100644
index d9517def..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/Menu.css
+++ /dev/null
@@ -1 +0,0 @@
-.nihilo .dijitMenu,.nihilo .dijitMenuBar {border: 1px solid #d3d3d3; margin: 0; padding: 0; background-color: #fff;}.nihilo .dijitBorderContainer .dijitMenuBar {border: 1px #ccc solid;}.nihilo .dijitMenuItem {font-family: sans-serif; margin: 0; color: #243C5F;}.nihilo .dijitMenuBar .dijitMenuItem {padding: 4px 5px;}.nihilo .dijitMenuPreviousButton, .nihilo .dijitMenuNextButton {font-style: italic;}.nihilo .dijitMenuItem TD {padding:1px;}.nihilo .dijitMenuPassive .dijitMenuItemHover,.nihilo .dijitComboBoxMenu .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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/Menu_rtl.css b/js/3rdparty/resources/dijit/themes/nihilo/Menu_rtl.css
deleted file mode 100644
index b560e460..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/Menu_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.dijitRtl .nihilo .dijitMenuItem .dijitMenuItemIcon {padding-left: 3px; padding-right: 0;}.dijitRtl .nihilo .dijitMenuItem .dijitMenuExpand {background-position: 0 top;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/ProgressBar.css b/js/3rdparty/resources/dijit/themes/nihilo/ProgressBar.css
deleted file mode 100644
index 68089ce8..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/ProgressBar.css
+++ /dev/null
@@ -1 +0,0 @@
-.nihilo .dijitProgressBar {margin:2px 0 2px 0;}.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/TimePicker.css b/js/3rdparty/resources/dijit/themes/nihilo/TimePicker.css
deleted file mode 100644
index cb8737ae..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/TimePicker.css
+++ /dev/null
@@ -1 +0,0 @@
-.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/TimePicker_rtl.css b/js/3rdparty/resources/dijit/themes/nihilo/TimePicker_rtl.css
deleted file mode 100644
index 71723eb4..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/TimePicker_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.dj_ie6-rtl .nihilo .dijitTimePickerMarkerHover,.dj_ie7-rtl .nihilo .dijitTimePickerMarkerHover {border-top: 0;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/TitlePane.css b/js/3rdparty/resources/dijit/themes/nihilo/TitlePane.css
deleted file mode 100644
index 2e7ed925..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/TitlePane.css
+++ /dev/null
@@ -1 +0,0 @@
-.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: 0;}.nihilo .dijitTitlePaneContentInner {padding:10px;}.nihilo .dijitTitlePaneTextNode {margin-left: 4px; margin-right: 4px;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/TitlePane_rtl.css b/js/3rdparty/resources/dijit/themes/nihilo/TitlePane_rtl.css
deleted file mode 100644
index 405c57de..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/TitlePane_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.dijitRtl .nihilo .dijitTitlePane .dijitClosed .dijitArrowNode {background-position: 0 top;}.dj_ie6-rtl .nihilo .dijitTitlePane .dijitClosed .dijitArrowNode {background-position: 0 top;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/Toolbar.css b/js/3rdparty/resources/dijit/themes/nihilo/Toolbar.css
deleted file mode 100644
index 838316e3..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/Toolbar.css
+++ /dev/null
@@ -1 +0,0 @@
-.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: 0; padding: 0; 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: 0;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/Tree.css b/js/3rdparty/resources/dijit/themes/nihilo/Tree.css
deleted file mode 100644
index 782ace0e..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/Tree.css
+++ /dev/null
@@ -1 +0,0 @@
-.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/Tree_rtl.css b/js/3rdparty/resources/dijit/themes/nihilo/Tree_rtl.css
deleted file mode 100644
index 03c30a35..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/Tree_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.dijitRtl .nihilo .dijitTreeNode,.dijitRtl .nihilo .dijitTreeExpandoLeaf {background-image: none;}.dijitRtl .nihilo .dijitTreeContent {padding-left: 0; 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');} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/form/Button.css b/js/3rdparty/resources/dijit/themes/nihilo/form/Button.css
deleted file mode 100644
index 3b5d0a0d..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/form/Button.css
+++ /dev/null
@@ -1 +0,0 @@
-.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 .dijitButtonText {text-align: center; padding: 0 0.3em;}.nihilo .dijitInputField {padding: 0;}.nihilo .dijitComboBox .dijitButtonNode {border-width: 0 0 0 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: 0 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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/form/Button_rtl.css b/js/3rdparty/resources/dijit/themes/nihilo/form/Button_rtl.css
deleted file mode 100644
index 91e4fc9e..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/form/Button_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.nihilo .dijitComboBoxRtl .dijitButtonNode {border-width: 0 0 0 1px;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/form/Checkbox.css b/js/3rdparty/resources/dijit/themes/nihilo/form/Checkbox.css
deleted file mode 100644
index 71ecfc18..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/form/Checkbox.css
+++ /dev/null
@@ -1 +0,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: 0;}.nihilo .dijitCheckBoxDisabled {background-position: -48px;}.nihilo .dijitCheckBoxCheckedDisabled {background-position: -32px;}.nihilo .dijitCheckBoxHover {background-position: -80px;}.nihilo .dijitCheckBoxCheckedHover {background-position: -64px;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/form/Common.css b/js/3rdparty/resources/dijit/themes/nihilo/form/Common.css
deleted file mode 100644
index d92dd995..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/form/Common.css
+++ /dev/null
@@ -1 +0,0 @@
-.nihilo .dijitInputContainer input {margin: 0 0.1em;}.nihilo .dijitSelect .dijitButtonContents,.nihilo .dijitSelect,.nihilo .dijitTextBox,.nihilo .dijitTextArea {background:#fff url("../images/validationInputBg.png") repeat-x top left; #background:#fff url('../images/validationInputBg.gif') repeat-x top left;}.nihilo .dijitSelect,.nihilo .dijitTextBox,.nihilo .dijitTextArea {border:1px solid #d3d3d3;}.nihilo .dijitSelect .dijitArrowButton,.nihilo .dijitComboBox .dijitButtonNode {padding: 0 0.2em;}.nihilo .dijitSelect .dijitButtonContents,.nihilo .dijitTextBox .dijitButtonNode {border-color: #d3d3d3;}.nihilo .dijitSelectFocused,.nihilo .dijitTextBoxFocused,.nihilo .dijitTextAreaFocused {border-color:#b3b3b3;}.nihilo .dijitSelectFocused TD,.nihilo .dijitTextBoxFocused .dijitButtonNode,.nihilo .dijitSpinner .dijitUpArrowButtonActive,.nihilo .dijitSpinner .dijitDownArrowButtonActive {border-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 .dijitValidationTextBoxError .dijitValidationIcon {width: 16px; background: transparent url('../images/warning.png') no-repeat center center;}.nihilo .dijitComboBoxHighlightMatch {background-color:#d3d3d3;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/form/RadioButton.css b/js/3rdparty/resources/dijit/themes/nihilo/form/RadioButton.css
deleted file mode 100644
index d4dee0a4..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/form/RadioButton.css
+++ /dev/null
@@ -1 +0,0 @@
-.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: 0;}.nihilo .dijitRadioDisabled {background-position: -48px;}.nihilo .dijitRadioCheckedDisabled {background-position: -32px;}.nihilo .dijitRadioHover {background-position: -80px;}.nihilo .dijitRadioCheckedHover {background-position: -64px;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/form/Select.css b/js/3rdparty/resources/dijit/themes/nihilo/form/Select.css
deleted file mode 100644
index 27298606..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/form/Select.css
+++ /dev/null
@@ -1 +0,0 @@
-.nihilo .dijitSelectError .dijitButtonContents,.nihilo .dijitSelectHover .dijitArrowButton,.nihilo .dijitSelectActive .dijitArrowButton,.nihilo .dijitSelectOpened .dijitArrowButton,.nihilo .dijitSelectDisabled .dijitArrowButton,.nihilo .dijitSelectReadOnly .dijitArrowButton {background: transparent none;}.nihilo .dijitSelect .dijitArrowButton {background: #bcd5f0 url("../images/buttonEnabled.png") repeat-x top left; border-width: 0;}.nihilo .dijitSelectDisabled,.nihilo .dijitSelectDisabled TD {border-color: #dedede !important; background:#fafafa url("../images/buttonDisabled.png") top repeat-x;}.dj_ie .nihilo .dijitSelectDisabled TD * {filter: gray() alpha(opacity=50);}.nihilo .dijitSelectHover,.nihilo .dijitSelectHover TD {color:#000; background:#fcfcfc url("../images/buttonHover.png") repeat-x top left;}.nihilo .dijitSelectActive,.nihilo .dijitSelectOpened,.nihilo .dijitSelectActive TD,.nihilo .dijitSelectOpened TD {border-color:#dedede !important; background: #f5f5f5 url("../images/buttonActive.png") top left repeat-x;}.nihilo .dijitSelectMenu td {padding: 0;}.nihilo .dijitSelectMenu .dijitMenuItemLabel,.nihilo .dijitSelectMenu .dijitMenuArrowCell {padding: 0.1em 0.2em;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/form/Slider.css b/js/3rdparty/resources/dijit/themes/nihilo/form/Slider.css
deleted file mode 100644
index 93cc9b26..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/form/Slider.css
+++ /dev/null
@@ -1 +0,0 @@
-.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:0; 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:0; 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 0 top; #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat 0 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: 0 -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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/form/Slider_rtl.css b/js/3rdparty/resources/dijit/themes/nihilo/form/Slider_rtl.css
deleted file mode 100644
index 7d8037fb..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/form/Slider_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.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: 0; border-right-width: 1px;}.dijitRtl .nihilo .dijitSliderRightBumper {border-left-width: 1px; border-right-width: 0;}.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/form/TimeTextBox.css b/js/3rdparty/resources/dijit/themes/nihilo/form/TimeTextBox.css
deleted file mode 100644
index bf67b66d..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/form/TimeTextBox.css
+++ /dev/null
@@ -1 +0,0 @@
-@CHARSET "UTF-8"; \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/accordionItemActive.png b/js/3rdparty/resources/dijit/themes/nihilo/images/accordionItemActive.png
deleted file mode 100644
index 58f3cf96..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/accordionItemActive.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/buttonActive.png b/js/3rdparty/resources/dijit/themes/nihilo/images/buttonActive.png
deleted file mode 100644
index e2f2fda3..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/buttonActive.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/buttonDisabled.png b/js/3rdparty/resources/dijit/themes/nihilo/images/buttonDisabled.png
deleted file mode 100644
index b76af42f..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/buttonDisabled.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/buttonEnabled.png b/js/3rdparty/resources/dijit/themes/nihilo/images/buttonEnabled.png
deleted file mode 100644
index d4fd306a..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/buttonEnabled.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/buttonHover.png b/js/3rdparty/resources/dijit/themes/nihilo/images/buttonHover.png
deleted file mode 100644
index 1af7e835..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/buttonHover.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/dndCopy.png b/js/3rdparty/resources/dijit/themes/nihilo/images/dndCopy.png
deleted file mode 100644
index baecd7cf..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/dndCopy.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/dndMove.png b/js/3rdparty/resources/dijit/themes/nihilo/images/dndMove.png
deleted file mode 100644
index 07f878cf..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/dndMove.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/dndNoCopy.png b/js/3rdparty/resources/dijit/themes/nihilo/images/dndNoCopy.png
deleted file mode 100644
index 998c2f26..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/dndNoCopy.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/dndNoMove.png b/js/3rdparty/resources/dijit/themes/nihilo/images/dndNoMove.png
deleted file mode 100644
index e909173e..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/dndNoMove.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/no.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/no.gif
deleted file mode 100644
index 9021a14e..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/no.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/preciseSliderThumb.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/preciseSliderThumb.gif
deleted file mode 100644
index 53b33e54..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/preciseSliderThumb.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/preciseSliderThumb.png b/js/3rdparty/resources/dijit/themes/nihilo/images/preciseSliderThumb.png
deleted file mode 100644
index 045bf35e..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/preciseSliderThumb.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/preciseSliderThumbFocus.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/preciseSliderThumbFocus.gif
deleted file mode 100644
index 8c6f92eb..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/preciseSliderThumbFocus.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/preciseSliderThumbFocus.png b/js/3rdparty/resources/dijit/themes/nihilo/images/preciseSliderThumbFocus.png
deleted file mode 100644
index c2358495..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/preciseSliderThumbFocus.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/progressBarAnim.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/progressBarAnim.gif
deleted file mode 100644
index 543d0485..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/progressBarAnim.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/progressBarEmpty.png b/js/3rdparty/resources/dijit/themes/nihilo/images/progressBarEmpty.png
deleted file mode 100644
index c2d36950..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/progressBarEmpty.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/progressBarFull.png b/js/3rdparty/resources/dijit/themes/nihilo/images/progressBarFull.png
deleted file mode 100644
index a8f38657..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/progressBarFull.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/sliderEmpty.png b/js/3rdparty/resources/dijit/themes/nihilo/images/sliderEmpty.png
deleted file mode 100644
index 99fbd727..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/sliderEmpty.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/sliderEmptyVertical.png b/js/3rdparty/resources/dijit/themes/nihilo/images/sliderEmptyVertical.png
deleted file mode 100644
index 2d497e3e..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/sliderEmptyVertical.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/sliderFull.png b/js/3rdparty/resources/dijit/themes/nihilo/images/sliderFull.png
deleted file mode 100644
index 9adb2544..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/sliderFull.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/sliderFullFocus.png b/js/3rdparty/resources/dijit/themes/nihilo/images/sliderFullFocus.png
deleted file mode 100644
index 3d75caeb..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/sliderFullFocus.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/sliderFullVertical.png b/js/3rdparty/resources/dijit/themes/nihilo/images/sliderFullVertical.png
deleted file mode 100644
index 27e9752e..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/sliderFullVertical.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/sliderFullVerticalFocus.png b/js/3rdparty/resources/dijit/themes/nihilo/images/sliderFullVerticalFocus.png
deleted file mode 100644
index cca61841..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/sliderFullVerticalFocus.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/sliderThumb.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/sliderThumb.gif
deleted file mode 100644
index 29899a4b..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/sliderThumb.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/sliderThumb.png b/js/3rdparty/resources/dijit/themes/nihilo/images/sliderThumb.png
deleted file mode 100644
index b6abbd2f..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/sliderThumb.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/sliderThumbFocus.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/sliderThumbFocus.gif
deleted file mode 100644
index f8d306fe..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/sliderThumbFocus.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/sliderThumbFocus.png b/js/3rdparty/resources/dijit/themes/nihilo/images/sliderThumbFocus.png
deleted file mode 100644
index 73ee7056..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/sliderThumbFocus.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/splitContainerSizerH-thumb.png b/js/3rdparty/resources/dijit/themes/nihilo/images/splitContainerSizerH-thumb.png
deleted file mode 100644
index e7bc204d..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/splitContainerSizerH-thumb.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/splitContainerSizerH.png b/js/3rdparty/resources/dijit/themes/nihilo/images/splitContainerSizerH.png
deleted file mode 100644
index 5f5b0e9f..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/splitContainerSizerH.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/splitContainerSizerV-thumb.png b/js/3rdparty/resources/dijit/themes/nihilo/images/splitContainerSizerV-thumb.png
deleted file mode 100644
index 410a0a7a..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/splitContainerSizerV-thumb.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/splitContainerSizerV.png b/js/3rdparty/resources/dijit/themes/nihilo/images/splitContainerSizerV.png
deleted file mode 100644
index 064bc189..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/splitContainerSizerV.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteArrows.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/spriteArrows.gif
deleted file mode 100644
index fc81207e..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteArrows.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteArrows.png b/js/3rdparty/resources/dijit/themes/nihilo/images/spriteArrows.png
deleted file mode 100644
index 73aa7009..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteArrows.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteCheckbox.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/spriteCheckbox.gif
deleted file mode 100644
index d2c4ebfa..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteCheckbox.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteCheckbox.png b/js/3rdparty/resources/dijit/themes/nihilo/images/spriteCheckbox.png
deleted file mode 100644
index e9923307..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteCheckbox.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteDivIcons.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/spriteDivIcons.gif
deleted file mode 100644
index 00ad23a3..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteDivIcons.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteDivIcons.png b/js/3rdparty/resources/dijit/themes/nihilo/images/spriteDivIcons.png
deleted file mode 100644
index 413098ac..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteDivIcons.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteRadio.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/spriteRadio.gif
deleted file mode 100644
index 8dd6e578..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteRadio.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteRadio.png b/js/3rdparty/resources/dijit/themes/nihilo/images/spriteRadio.png
deleted file mode 100644
index 14c1080e..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteRadio.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteRoundedIconsSmall.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/spriteRoundedIconsSmall.gif
deleted file mode 100644
index 251389a2..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteRoundedIconsSmall.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteRoundedIconsSmall.png b/js/3rdparty/resources/dijit/themes/nihilo/images/spriteRoundedIconsSmall.png
deleted file mode 100644
index e81ba07f..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteRoundedIconsSmall.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteTree.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/spriteTree.gif
deleted file mode 100644
index e546e281..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteTree.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteTree.png b/js/3rdparty/resources/dijit/themes/nihilo/images/spriteTree.png
deleted file mode 100644
index 33ae07be..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteTree.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteTree_rtl.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/spriteTree_rtl.gif
deleted file mode 100644
index bbcc64be..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteTree_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteTree_rtl.png b/js/3rdparty/resources/dijit/themes/nihilo/images/spriteTree_rtl.png
deleted file mode 100644
index b06afdb8..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/spriteTree_rtl.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/tabBottomActiveC.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/tabBottomActiveC.gif
deleted file mode 100644
index 84bffde0..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/tabBottomActiveC.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/tabBottomEnabledC.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/tabBottomEnabledC.gif
deleted file mode 100644
index 9ef9ab08..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/tabBottomEnabledC.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/tabBottomHoverC.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/tabBottomHoverC.gif
deleted file mode 100644
index 0f533b56..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/tabBottomHoverC.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/tabContainerSprite.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/tabContainerSprite.gif
deleted file mode 100644
index 92044a7f..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/tabContainerSprite.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/titleBar.png b/js/3rdparty/resources/dijit/themes/nihilo/images/titleBar.png
deleted file mode 100644
index 06ea21c2..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/titleBar.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/titleBarActive.png b/js/3rdparty/resources/dijit/themes/nihilo/images/titleBarActive.png
deleted file mode 100644
index fe6c7a4e..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/titleBarActive.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorDown.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorDown.gif
deleted file mode 100644
index 9c384955..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorDown.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorDown.png b/js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorDown.png
deleted file mode 100644
index d75af71f..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorDown.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorLeft.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorLeft.gif
deleted file mode 100644
index fc947e0a..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorLeft.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorLeft.png b/js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorLeft.png
deleted file mode 100644
index f3de66a7..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorLeft.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorRight.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorRight.gif
deleted file mode 100644
index b0e8097f..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorRight.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorRight.png b/js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorRight.png
deleted file mode 100644
index 3d62dcd4..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorRight.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorUp.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorUp.gif
deleted file mode 100644
index 54bcf652..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorUp.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorUp.png b/js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorUp.png
deleted file mode 100644
index 7f7a5d8f..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/tooltipConnectorUp.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/treeExpand_loading.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/treeExpand_loading.gif
deleted file mode 100644
index db9ddd02..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/treeExpand_loading.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/treeHover.png b/js/3rdparty/resources/dijit/themes/nihilo/images/treeHover.png
deleted file mode 100644
index ca80cd2c..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/treeHover.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/treeI.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/treeI.gif
deleted file mode 100644
index 6f669e24..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/treeI.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/treeI_half.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/treeI_half.gif
deleted file mode 100644
index e5fd0155..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/treeI_half.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/treeI_half_rtl.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/treeI_half_rtl.gif
deleted file mode 100644
index 44ad021a..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/treeI_half_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/treeI_rtl.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/treeI_rtl.gif
deleted file mode 100644
index 0d32a2f7..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/treeI_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/validationInputBg.gif b/js/3rdparty/resources/dijit/themes/nihilo/images/validationInputBg.gif
deleted file mode 100644
index c28475c8..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/validationInputBg.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/validationInputBg.png b/js/3rdparty/resources/dijit/themes/nihilo/images/validationInputBg.png
deleted file mode 100644
index f3039f95..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/validationInputBg.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/images/warning.png b/js/3rdparty/resources/dijit/themes/nihilo/images/warning.png
deleted file mode 100644
index c52f83dc..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/images/warning.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/layout/AccordionContainer.css b/js/3rdparty/resources/dijit/themes/nihilo/layout/AccordionContainer.css
deleted file mode 100644
index b62a7c36..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/layout/AccordionContainer.css
+++ /dev/null
@@ -1 +0,0 @@
-.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/layout/AccordionContainer_rtl.css b/js/3rdparty/resources/dijit/themes/nihilo/layout/AccordionContainer_rtl.css
deleted file mode 100644
index f47d59e3..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/layout/AccordionContainer_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.dijitRtl .nihilo .dijitAccordionArrow {background-position: 0 top;}.dijitRtl .nihilo .dijitAccordionTitleSelected .dijitAccordionArrow {background-position: -15px top;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/layout/BorderContainer.css b/js/3rdparty/resources/dijit/themes/nihilo/layout/BorderContainer.css
deleted file mode 100644
index 59bd065c..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/layout/BorderContainer.css
+++ /dev/null
@@ -1 +0,0 @@
-.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: 0;}.nihilo .dijitSplitterH,.nihilo .dijitGutterH {background:#FCFCFC; border:0; border-left:0 solid #d3d3d3; border-right:0 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:0 solid #d3d3d3; border-bottom:0 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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/layout/ContentPane.css b/js/3rdparty/resources/dijit/themes/nihilo/layout/ContentPane.css
deleted file mode 100644
index 9bef1a7e..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/layout/ContentPane.css
+++ /dev/null
@@ -1 +0,0 @@
-.nihilo .dijitContentPane {padding: 0;}.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/layout/SplitContainer.css b/js/3rdparty/resources/dijit/themes/nihilo/layout/SplitContainer.css
deleted file mode 100644
index 6a8acbdc..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/layout/SplitContainer.css
+++ /dev/null
@@ -1 +0,0 @@
-.nihilo .dijitSplitContainerSizerH {background:url("../images/splitContainerSizerV.png") repeat-y #fff; border:0; border-left:0 solid #d3d3d3; border-right:0 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:0 solid #d3d3d3; border-bottom:0 solid #d3d3d3; height:2px;}.nihilo .dijitSplitContainerSizerV .thumb {background:url("../images/splitContainerSizerH-thumb.png") no-repeat; top:1px; width:19px; height:5px;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/layout/TabContainer.css b/js/3rdparty/resources/dijit/themes/nihilo/layout/TabContainer.css
deleted file mode 100644
index 27a13a4a..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/layout/TabContainer.css
+++ /dev/null
@@ -1 +0,0 @@
-.nihilo .dijitMenu,.nihilo .dijitMenuBar {border: 1px solid #d3d3d3; margin: 0; padding: 0; background-color: #fff;}.nihilo .dijitBorderContainer .dijitMenuBar {border: 1px #ccc solid;}.nihilo .dijitMenuItem {font-family: sans-serif; margin: 0; color: #243C5F;}.nihilo .dijitMenuBar .dijitMenuItem {padding: 4px 5px;}.nihilo .dijitMenuPreviousButton, .nihilo .dijitMenuNextButton {font-style: italic;}.nihilo .dijitMenuItem TD {padding:1px;}.nihilo .dijitMenuPassive .dijitMenuItemHover,.nihilo .dijitComboBoxMenu .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: 0;}.nihilo .dijitTabPaneWrapper {background:#fff; border:1px solid #ccc; margin: 0; padding: 0;}.nihilo .dijitTab {padding:3px 6px 3px 4px; background: url("../images/tabContainerSprite.gif") repeat-x 0 -350px; position: relative; line-height:normal; margin: 0 1px; color: #6d6d6d; border: 1px #dedede solid; border-bottom: 1px #ccc solid;}.nihilo .dijitTabHover {color: #243C5F; background: url("../images/tabContainerSprite.gif") repeat-x 0 -200px;}.nihilo .dijitTabChecked {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: 0;}.nihilo .dijitTabContainerTabListNested .dijitTab {background: none; border: none; top: 0;}.nihilo .dijitTabContainerTabListNested .dijitTabHover .tabLabel {text-decoration: underline;}.nihilo .dijitTabContainerTabListNested .dijitTabChecked .tabLabel {text-decoration: underline; font-weight: bold;}.nihilo .dijitTabContainerSpacerNested {height: 0; border-bottom: 0;}.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 .dijitTabContainerTop-tabs {border-bottom: none; padding-bottom: 1px; background-position: bottom; padding-left: 3px;}.nihilo .dijitTabContainerTop-tabs .dijitTab {border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0;}.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: 0;}.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;}.nihilo .dijitTabContainerBottom-tabs .dijitTab {border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; border-bottom: none; border-top: 1px solid #ccc; padding-top: 3px; padding-bottom: 3px; background: url("../images/tabBottomEnabledC.gif") repeat-x bottom left;}.nihilo .dijitTabContainerBottom-tabs .dijitTabHover {color: #243C5F; background: url("../images/tabBottomHoverC.gif") repeat-x bottom left;}.nihilo .dijitTabContainerBottom-tabs .dijitTabChecked {border-top-color: #f8f8f8; background: url("../images/tabBottomActiveC.gif") repeat-x bottom left;}.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 .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;}.nihilo .dijitTabContainerTop-spacer {margin-top: -1px; background: #f3f3f3;}.nihilo .dijitTabContainerBottom-spacer {margin-bottom: -1px; background: #f8f8f8;}.nihilo .dijitTabContainerRight-tabs {border-color: #ccc; padding-top: 3px;}.nihilo .dijitTabContainerRight-tabs .dijitTab {border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-left: 1px solid #ccc; border-bottom: 1px solid #dedede !important;}.nihilo .dijitTabContainerRight .dijitTabListWrapper {padding-right: 3px;}.nihilo .dijitTabContainerRight-tabs .dijitTabChecked {border-left: 1px solid #f8f8f8;}.nihilo .dijitTabContainerRight-container {border-right: none;}.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTab {border-bottom: solid #fff 1px;}.nihilo .dijitTabContainerRight-tabs .dijitTabChecked {border-left-color: #f8f8f8;}.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabChecked,.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabCheckedHover {border-bottom: solid #efefef 1px;}.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-tabs .dijitTab {border-radius: 4px 0 0 4px; -moz-border-radius: 4px 0 0 4px; border-right: 1px solid #ccc; border-bottom: 1px solid #dedede;}.nihilo .dijitTabContainerLeft-tabs .dijitTabChecked {border-right: 1px solid #f8f8f8;}.nihilo .dijitTabContainerLeft-container {border-left: none;}.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabChecked,.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabCheckedHover {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: 1px 0;}.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: 0 solid #ccc; border-top: 0 solid #ccc; border-right: 0 solid #ccc; padding-top: 0; padding-left: 0;}.nihilo .dijitTabContainer .tabStripButton {margin-right: 0; padding: 5px 3px 6px 0px;}.dj_ie6 .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent,.dj_ie7 .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent,.dj_opera .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent {padding-bottom: 7px;}.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: 0;}.nihilo .dijitTabContainer .tabStripButton-top {margin-top: 1px;}.nihilo .dijitTabContainer .tabStripButton-bottom {border-bottom: medium none; border-top: 1px solid #CCCCCC;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/layout/TabContainer_rtl.css b/js/3rdparty/resources/dijit/themes/nihilo/layout/TabContainer_rtl.css
deleted file mode 100644
index 1735cb92..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/layout/TabContainer_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.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: 0 !important;}.dj_ie-rtl .nihilo .dijitTabContainerRight-tabs {margin-right: 0 !important;}.dijitRtl .nihilo .dijitTabContainerLeft-tabs .dijitTab,.dijitRtl .nihilo .dijitTabContainerRight-tabs .dijitTab {margin-left:0;}.dj_ie-rtl .nihilo .dijitTab .dijitTabInnerDiv{width : 1%;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/nihilo.css b/js/3rdparty/resources/dijit/themes/nihilo/nihilo.css
deleted file mode 100644
index fc224356..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/nihilo.css
+++ /dev/null
@@ -1 +0,0 @@
-.dijitReset {margin:0; border:0; padding:0; line-height:normal; font: inherit; color: inherit;}.dj_a11y .dijitReset {-moz-appearance: none;}.dijitInline {display:inline-block; #zoom: 1; #display:inline; border:0; padding:0; vertical-align:middle; #vertical-align: auto;}table.dijitInline {display:inline-table; box-sizing: content-box; -moz-box-sizing: content-box;}.dijitHidden {display: none !important;}.dijitVisible {display: block !important; position: relative;}.dj_ie6 .dijitComboBox .dijitInputContainer,.dijitInputContainer {#zoom: 1; overflow: hidden; float: none !important; position: relative;}.dj_ie7 .dijitInputContainer {float: left !important; clear: left; display: inline-block !important;}.dj_ie .dijitSelect input,.dj_ie input.dijitTextBox,.dj_ie .dijitTextBox input {font-size: 100%;}.dijitSelect .dijitButtonText {float: left; vertical-align: top;}TABLE.dijitSelect {padding: 0 !important;}.dijitTextBox .dijitSpinnerButtonContainer,.dijitTextBox .dijitArrowButtonContainer,.dijitValidationTextBox .dijitValidationContainer {float: right; text-align: center;}.dijitSelect input.dijitInputField,.dijitTextBox input.dijitInputField {padding-left: 0 !important; padding-right: 0 !important;}.dijitValidationTextBox .dijitValidationContainer {display: none;}.dijitTeeny {font-size:1px; line-height:1px;}.dijitOffScreen {position: absolute !important; left: 50% !important; top: -10000px !important;}.dijitPopup {position: absolute; background-color: transparent; margin: 0; border: 0; padding: 0;}.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;}.dj_a11y .dijitIcon,.dj_a11y div.dijitArrowButtonInner, .dj_a11y span.dijitArrowButtonInner,.dj_a11y img.dijitArrowButtonInner,.dj_a11y .dijitCalendarIncrementControl,.dj_a11y .dijitTreeExpando {display: none;}.dijitSpinner div.dijitArrowButtonInner {display: block;}.dj_a11y .dijitA11ySideArrow {display: inline !important; cursor: pointer;}.dj_a11y .dijitCalendarDateLabel {padding: 1px; border: 0px !important;}.dj_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {border-style: solid !important; border-width: 1px !important; padding: 0;}.dj_a11y .dijitCalendarDateTemplate {padding-bottom: 0.1em !important; border: 0px !important;}.dj_a11y .dijitButtonNode {border: black outset medium !important; padding: 0 !important;}.dj_a11y .dijitArrowButton {padding: 0 !important;}.dj_a11y .dijitButtonContents {margin: 0.15em;}.dj_a11y .dijitTextBoxReadOnly .dijitInputField,.dj_a11y .dijitTextBoxReadOnly .dijitButtonNode {border-style: outset!important; border-width: medium!important; border-color: #999 !important; color:#999 !important;}.dijitButtonNode * {vertical-align: middle;}.dijitSelect .dijitArrowButtonInner,.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;}.dj_gecko .dj_a11y .dijitButtonDisabled .dijitButtonNode {opacity: 0.5;}.dijitToggleButton,.dijitButton,.dijitDropDownButton,.dijitComboButton {margin: 0.2em; vertical-align: middle;}.dijitButtonContents {display: block;}td.dijitButtonContents {display: table-cell;}.dijitButtonNode img {vertical-align:middle;}.dijitToolbar .dijitComboButton {border-collapse: separate;}.dijitToolbar .dijitToggleButton,.dijitToolbar .dijitButton,.dijitToolbar .dijitDropDownButton,.dijitToolbar .dijitComboButton {margin: 0;}.dijitToolbar .dijitButtonContents {padding: 1px 2px;}.dj_webkit .dijitToolbar .dijitDropDownButton {padding-left: 0.3em;}.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {padding:0;}.dijitSelect {border:1px solid gray;}.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;}.dijitSelect,.dijitSelect *,.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;}.dijitTextBoxReadOnly,.dijitTextBoxDisabled {color: gray;}.dj_webkit .dijitTextBoxDisabled input {color: #eee;}.dj_webkit textarea.dijitTextAreaDisabled {color: #333;}.dj_gecko .dijitTextBoxReadOnly input.dijitInputField, .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: 5px -webkit-focus-ring-color;}.dijitSelect input,.dijitTextBox input {float: left;}.dj_ie6 input.dijitTextBox,.dj_ie6 .dijitTextBox input {float: none;}.dijitInputInner {border:0 !important; background-color:transparent !important; width:100% !important; padding-left: 0 !important; padding-right: 0 !important; margin-left: 0 !important; margin-right: 0 !important;}.dj_a11y .dijitTextBox input {margin: 0 !important;}.dijitValidationTextBoxError input.dijitValidationInner,.dijitSelect input,.dijitTextBox input.dijitArrowButtonInner {text-indent: -2em !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 .dijitSelect input,.dj_ie .dijitTextBox input,.dj_ie input.dijitTextBox {overflow-y: visible; line-height: normal;}.dijitSelect .dijitSelectLabel span {line-height: 100%;}.dj_ie .dijitSelect .dijitSelectLabel {line-height: normal;}.dj_ie6 .dijitSelect .dijitSelectLabel,.dj_ie7 .dijitSelect .dijitSelectLabel,.dj_ie8 .dijitSelect .dijitSelectLabel,.dj_iequirks .dijitSelect .dijitSelectLabel,.dijitSelect td,.dj_ie6 .dijitSelect input,.dj_iequirks .dijitSelect input,.dj_ie6 .dijitSelect .dijitValidationContainer,.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%;}.dj_a11y input.dijitValidationInner,.dj_a11y input.dijitArrowButtonInner {text-indent: 0 !important; width: 1em !important; #text-align: left !important; color: black !important;}.dijitValidationTextBoxError .dijitValidationContainer {display: inline; cursor: default;}.dijitSpinner .dijitSpinnerButtonContainer,.dijitComboBox .dijitArrowButtonContainer {border-width: 0 0 0 1px !important;}.dj_a11y .dijitSelect .dijitArrowButtonContainer,.dijitToolbar .dijitComboBox .dijitArrowButtonContainer {border-width: 0 !important;}.dijitComboBoxMenu {list-style-type: none;}.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0;}.dj_ie .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {clear: both;}.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;}.dj_a11y .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0px !important; border-style: solid !important;}.dj_a11y .dijitTextBox .dijitSpinnerButtonContainer,.dj_a11y .dijitSpinner .dijitArrowButtonInner,.dj_a11y .dijitSpinnerButtonContainer input {width: 1em !important;}.dj_a11y .dijitSpinner .dijitArrowButtonInner {margin: 0 auto !important;}.dj_ie .dj_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 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding-left: 0 !important; padding-right: 0 !important; width: 1em !important;}.dj_ie6 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {margin-left: 0.1em !important; margin-right: 0.1em !important; width: 1em !important;}.dj_iequirks .dj_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;}.dj_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%; visibility: hidden;}.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField {zoom: 50%;}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner {overflow: hidden;}.dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 100%;}.dj_iequirks .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 1em;}.dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {vertical-align:top; visibility: visible;}.dj_a11y .dijitSpinnerButtonContainer {width: 1em;}.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);}.dj_a11y .dijitCheckBox,.dj_a11y .dijitRadio {width: auto !important; height: auto !important;}.dj_a11y .dijitCheckBoxInput {opacity: 1; filter: none; width: auto; height: auto;}.dj_a11y .dijitFocusedLabel {border: 1px dotted; outline: 0px !important;}.dijitProgressBar {z-index: 0;}.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: 100%; height:auto; background-color:#aaa; background-attachment: fixed;}.dj_a11y .dijitProgressBarTile {border-width:2px; border-style:solid; background-color:transparent !important;}.dj_ie6 .dijitProgressBarTile {position:static; height:1.6em;}.dijitProgressBarIndeterminate .dijitProgressBarTile {}.dijitProgressBarIndeterminateHighContrastImage {display:none;}.dj_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: 0; 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;}.dj_a11y .dijitTooltipConnector {display: none;}.dijitTooltipData {display:none;}.dijitLayoutContainer {position: relative; display: block; overflow: hidden;}.dijitAlignTop,.dijitAlignBottom,.dijitAlignLeft,.dijitAlignRight {position: absolute; overflow: hidden;}body .dijitAlignClient {position: absolute;}.dijitBorderContainer, .dijitBorderContainerNoGutter {position:relative; overflow: hidden; z-index: 0;}.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: row-resize;}.dijitSplitterV {width: 7px; border-left:1px; border-right:1px; cursor: col-resize;}.dijitSplitContainer {position: relative; overflow: hidden; display: block;}.dj_ff3 .dj_a11y div.dijitSplitter:focus {outline-style:dotted; outline-width: 2px;}.dijitSplitPane {position: absolute;}.dijitSplitContainerSizerH,.dijitSplitContainerSizerV {position:absolute; font-size: 1px; 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;}.dijitSplitContainerSizerH, .dijitSplitContainerVirtualSizerH {cursor: col-resize;}.dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV {cursor: row-resize;}.dj_a11y .dijitSplitterH {border-top:1px solid #d3d3d3 !important; border-bottom:1px solid #d3d3d3 !important;}.dj_a11y .dijitSplitterV {border-left:1px solid #d3d3d3 !important; border-right:1px solid #d3d3d3 !important;}.dijitContentPane {display: block; overflow: auto;}.dijitContentPaneSingleChild {overflow: hidden;}.dijitContentPaneLoading .dijitIconLoading,.dijitContentPaneError .dijitIconError {margin-right: 9px;}.dijitTitlePane {display: block; overflow: hidden;}.dijitTitlePaneTitle {cursor: pointer;}.dijitFixedOpen, .dijitFixedClosed {cursor: default;}.dijitFixedOpen .dijitArrowNode, .dijitFixedOpen .dijitArrowNodeInner,.dijitFixedClosed .dijitArrowNode, .dijitFixedClosed .dijitArrowNodeInner{display: none;}.dijitTitlePaneTitle * {vertical-align: middle;}.dijitTitlePane .dijitArrowNodeInner {display: none;}.dj_a11y .dijitTitlePane .dijitArrowNodeInner {display:inline !important; font-family: monospace;}.dj_a11y .dijitTitlePane .dijitArrowNode {display:none;}.dj_ie6 .dijitTitlePaneContentOuter,.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle {zoom: 1;}.dijitColorPalette {border: 1px solid #999; background: #fff; position: relative;}.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 {font-size: 1px; vertical-align: middle; text-align: center; background: none;}.dijitColorPalette .dijitPaletteImg {padding: 1px; border: 1px solid #999; margin: 2px 1px; cursor: default; font-size: 1px;}.dj_gecko .dijitColorPalette .dijitPaletteImg {padding-bottom: 0;}.dijitColorPalette .dijitColorPaletteSwatch {width: 14px; height: 12px;}.dijitPaletteTable td {padding: 0;}.dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg {border: 1px solid #000;}.dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg,.dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg {border: 2px solid #000; margin: 1px 0;}.dj_a11y .dijitColorPalette .dijitPaletteTable,.dj_a11y .dijitColorPalette .dijitPaletteTable * {background-color: transparent !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;}.dj_a11y .dijitAccordionTitle .arrowTextUp,.dj_a11y .dijitAccordionTitleSelected .arrowTextDown {display: inline;}.dj_a11y .dijitAccordionTitleSelected .arrowTextUp {display: none;}.dijitAccordionChildWrapper {overflow: hidden;}.dijitCalendarContainer {width: auto;}.dijitCalendarContainer th, .dijitCalendarContainer td {padding: 0; vertical-align: middle;}.dijitCalendarYearLabel {white-space: nowrap;}.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;}.dijitCalendarMonthMenu .dijitCalendarMonthLabel {text-align:center;}.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;}.dijitMenuItem:focus {outline: none}.dijitMenuPassive .dijitMenuItemHover,.dijitMenuItemSelected {background-color:black; color:white;}.dijitMenuItemIcon, .dijitMenuExpand {background-repeat: no-repeat;}.dijitMenuItemDisabled * {opacity:0.5; cursor:default;}.dj_ie .dj_a11y .dijitMenuItemDisabled,.dj_ie .dj_a11y .dijitMenuItemDisabled *,.dj_ie .dijitMenuItemDisabled * {color: gray; filter: alpha(opacity=35);}.dijitMenuItemLabel {position: relative; vertical-align: middle;}.dj_a11y .dijitMenuItemSelected {border: 1px dotted black !important;}.dj_ff3 .dj_a11y .dijitMenuItem td {padding: 0 !important; background:none !important;}.dj_a11y .dijitMenuItemSelected .dijitMenuItemLabel {border-width: 1px; border-style: solid;}.dj_ie8 .dj_a11y .dijitMenuItemLabel {position:static;}.dijitMenuExpandA11y {display: none;}.dj_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;}.dj_a11y .dijitCheckedMenuItemIconChar {display:inline !important;}.dj_a11y .dijitCheckedMenuItemIcon {display: none;}.dj_ie .dj_a11y .dijitMenuBar .dijitMenuItem {margin: 0;}.dijitStackController .dijitToggleButtonChecked * {cursor: default;}.dijitTabContainer {z-index: 0; overflow-y: visible;}.dj_ie6 .dijitTabContainer {overflow: hidden;}.dijitTabContainerNoLayout {width: 100%;}.dijitTabContainerBottom-tabs,.dijitTabContainerTop-tabs,.dijitTabContainerLeft-tabs,.dijitTabContainerRight-tabs {z-index: 1; overflow: visible !important;}.dijitTabController {z-index: 1;}.dijitTabContainerBottom-container,.dijitTabContainerTop-container,.dijitTabContainerLeft-container,.dijitTabContainerRight-container {z-index:0; overflow: hidden; border: 1px solid black;}.nowrapTabStrip {width: 50000px; display: block; position: relative; text-align: left; z-index: 1;}.dijitTabListWrapper {overflow: hidden; z-index: 1;}.dj_a11y .tabStripButton img {display: none;}.dijitTabContainerTop-tabs {border-bottom: 1px solid black;}.dijitTabContainerTop-container {border-top: 0;}.dijitTabContainerLeft-tabs {border-right: 1px solid black; float: left;}.dijitTabContainerLeft-container {border-left: 0;}.dijitTabContainerBottom-tabs {border-top: 1px solid black;}.dijitTabContainerBottom-container {border-bottom: 0;}.dijitTabContainerRight-tabs {border-left: 1px solid black; float: left;}.dijitTabContainerRight-container {border-right: 0;}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;}.tabStripButton {z-index: 12;}.dijitTabButtonDisabled .tabStripButton {display: none;}.dijitTabCloseButton {margin-left: 1em;}.dijitTabCloseText {display:none;}.dijitTab .tabLabel {min-height: 15px; display: inline-block;}.dijitNoIcon {display: none;}.dj_ie6 .dijitTab .dijitNoIcon {display: inline; height: 15px; width: 1px;}.dj_a11y .dijitTabCloseButton {background-image: none !important; width: auto !important; height: auto !important;}.dj_a11y .dijitTabCloseText {display: inline;}.dijitTabPane,.dijitStackContainer-child,.dijitAccordionContainer-child {border: none !important;}.dijitInlineEditBoxDisplayMode {border: 1px solid transparent; cursor: text;}.dj_a11y .dijitInlineEditBoxDisplayMode,.dj_ie6 .dijitInlineEditBoxDisplayMode {border: none;}.dijitInlineEditBoxDisplayModeHover,.dj_a11y .dijitInlineEditBoxDisplayModeHover,.dj_ie6 .dijitInlineEditBoxDisplayModeHover {background-color: #e2ebf2; border: solid 1px black;}.dijitInlineEditBoxDisplayModeDisabled {cursor: default;}.dijitTree {overflow: auto;}.dijitTreeIndent {width: 19px;}.dijitTreeRow, .dijitTreeContent {white-space: nowrap;}.dijitTreeRow img {vertical-align: middle;}.dijitTreeContent {cursor: default;}.dijitExpandoText {display: none;}.dj_a11y .dijitExpandoText {display: inline; padding-left: 10px; padding-right: 10px; font-family: monospace; border-style: solid; border-width: thin; cursor: pointer;}.dijitTreeLabel {margin: 0 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);}.dj_a11y .dijitSpinnerButtonContainer,.dj_a11y .dijitDialog {opacity: 1 !important; background-color: white !important;}.dijitDialog .closeText {display:none; position:absolute;}.dj_a11y .dijitDialog .closeText {display:inline;}.dijitSliderMoveable {z-index:99; position:absolute !important; display:block; vertical-align:middle;}.dijitSliderMoveableH {right:0;}.dijitSliderMoveableV {right:50%;}.dj_a11y div.dijitSliderImageHandle,.dijitSliderImageHandle {margin:0; padding:0; position:relative !important; border:8px solid gray; width:0; height:0; cursor: pointer;}.dj_iequirks .dj_a11y .dijitSliderImageHandle {font-size: 0;}.dj_ie7 .dijitSliderImageHandle {overflow: hidden;}.dj_ie7 .dj_a11y .dijitSliderImageHandle {overflow: visible;}.dj_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;}.dijitSliderDecorationC,.dijitSliderDecorationV {position: relative;}.dijitSliderDecorationH {width: 100%;}.dijitSliderDecorationV {height: 100%;}.dijitSliderButton {font-family:monospace; margin:0; padding:0; display:block;}.dj_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;}.dj_a11y .dijitSliderReadOnly,.dj_a11y .dijitSliderDisabled {opacity:0.6;}.dj_ie .dj_a11y .dijitSliderReadOnly .dijitSliderBar,.dj_ie .dj_a11y .dijitSliderDisabled .dijitSliderBar {filter: alpha(opacity=40);}.dj_a11y .dijitSlider .dijitSliderButtonContainer div {font-family: monospace; font-size: 1em; line-height: 1em; height: auto; width: auto; margin: 0 4px;}.dj_a11y .dijitButtonContents .dijitButtonText,.dj_a11y .dijitTab .tabLabel {display: inline !important;}.dj_a11y .dijitSelect .dijitButtonText {display: inline-block !important;}.dijitSelectError .dijitButtonContents .dijitButtonText {display: none !important;}.dijitTextArea {width:100%; overflow-y: auto;}.dijitTextArea[cols] {width:auto;}.dj_ie .dijitTextAreaCols {width:auto;}.dijitExpandingTextArea {resize: none;}.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;}.dijitTimePickerItemDisabled {color:gray; text-decoration:line-through;}.dj_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner {border: solid 4px black;}.dj_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner {border: dashed 4px black;}.dijitToggleButtonIconChar {display:none !important;}.dj_a11y .dijitToggleButton .dijitToggleButtonIconChar {display:inline !important; visibility:hidden;}.dj_ie6 .dijitToggleButtonIconChar, .dj_ie6 .tabStripButton .dijitButtonText {font-family: "Arial Unicode MS";}.dj_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {display: inline !important; visibility:visible !important;}.dijitArrowButtonChar {display:none !important;}.dj_a11y .dijitArrowButtonChar {display:inline !important;}.dj_a11y .dijitDropDownButton .dijitArrowButtonInner,.dj_a11y .dijitComboButton .dijitArrowButtonInner {display:none !important;}.dj_a11y .dijitSelect {border-collapse: separate !important; border-width: 1px; border-style: solid;}.dj_ie .dijitSelect {vertical-align: middle;}.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie8 .dijitSelect .dijitButtonText {vertical-align: top;}.dj_ie6 .dijitTextBox .dijitInputContainer,.dj_iequirks .dijitTextBox .dijitInputContainer,.dj_ie6 .dijitTextBox .dijitArrowButtonInner,.dj_ie6 .dijitSpinner .dijitSpinnerButtonInner,.dijitSelect .dijitSelectLabel {vertical-align: baseline;}.dijitToolbar .dijitSelect {margin: 0;}.dj_webkit .dijitToolbar .dijitSelect {padding-left: 0.3em;}.dijitSelect .dijitButtonContents {padding: 0; white-space: nowrap; text-align: left; border-style: none solid none none; border-width: 1px;}.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: 0; background-color: transparent;}.dijitForceStatic {position: static !important;}.dijitReadOnly *,.dijitDisabled *,.dijitReadOnly,.dijitDisabled {cursor: default;}.dojoDndItem {padding: 2px; -webkit-touch-callout: none; -webkit-user-select: none;}.dojoDndHorizontal .dojoDndItem {#display: inline; display: inline-block;}.dojoDndItemBefore,.dojoDndItemAfter {border: 0px solid #369;}.dojoDndItemBefore {border-width: 2px 0 0 0; padding: 0 2px 2px 2px;}.dojoDndItemAfter {border-width: 0 0 2px 0; padding: 2px 2px 0 2px;}.dojoDndHorizontal .dojoDndItemBefore {border-width: 0 0 0 2px; padding: 2px 2px 2px 0;}.dojoDndHorizontal .dojoDndItemAfter {border-width: 0 2px 0 0; padding: 2px 0 2px 2px;}.dojoDndItemOver {cursor:pointer;}.dj_gecko .dijitArrowButtonInner INPUT,.dj_gecko INPUT.dijitArrowButtonInner {-moz-user-focus:ignore;}.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: 0;}.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: -160px;}.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;}.dijitIconLoading {background:url("../../icons/images/loadingAnimation_rtl.gif") no-repeat; height: 20px; width: 20px;}.nihilo .dojoDndItemOver {background-image: url("images/treeHover.png");}.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: 0;}.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: 0; padding: 0; background-color: #fff;}.nihilo .dijitBorderContainer .dijitMenuBar {border: 1px #ccc solid;}.nihilo .dijitMenuItem {font-family: sans-serif; margin: 0; color: #243C5F;}.nihilo .dijitMenuBar .dijitMenuItem {padding: 4px 5px;}.nihilo .dijitMenuPreviousButton, .nihilo .dijitMenuNextButton {font-style: italic;}.nihilo .dijitMenuItem TD {padding:1px;}.nihilo .dijitMenuPassive .dijitMenuItemHover,.nihilo .dijitComboBoxMenu .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: 0;}.nihilo .dijitTabPaneWrapper {background:#fff; border:1px solid #ccc; margin: 0; padding: 0;}.nihilo .dijitTab {padding:3px 6px 3px 4px; background: url("images/tabContainerSprite.gif") repeat-x 0 -350px; position: relative; line-height:normal; margin: 0 1px; color: #6d6d6d; border: 1px #dedede solid; border-bottom: 1px #ccc solid;}.nihilo .dijitTabHover {color: #243C5F; background: url("images/tabContainerSprite.gif") repeat-x 0 -200px;}.nihilo .dijitTabChecked {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: 0;}.nihilo .dijitTabContainerTabListNested .dijitTab {background: none; border: none; top: 0;}.nihilo .dijitTabContainerTabListNested .dijitTabHover .tabLabel {text-decoration: underline;}.nihilo .dijitTabContainerTabListNested .dijitTabChecked .tabLabel {text-decoration: underline; font-weight: bold;}.nihilo .dijitTabContainerSpacerNested {height: 0; border-bottom: 0;}.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 .dijitTabContainerTop-tabs {border-bottom: none; padding-bottom: 1px; background-position: bottom; padding-left: 3px;}.nihilo .dijitTabContainerTop-tabs .dijitTab {border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0;}.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: 0;}.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;}.nihilo .dijitTabContainerBottom-tabs .dijitTab {border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; border-bottom: none; border-top: 1px solid #ccc; padding-top: 3px; padding-bottom: 3px; background: url("images/tabBottomEnabledC.gif") repeat-x bottom left;}.nihilo .dijitTabContainerBottom-tabs .dijitTabHover {color: #243C5F; background: url("images/tabBottomHoverC.gif") repeat-x bottom left;}.nihilo .dijitTabContainerBottom-tabs .dijitTabChecked {border-top-color: #f8f8f8; background: url("images/tabBottomActiveC.gif") repeat-x bottom left;}.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 .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;}.nihilo .dijitTabContainerTop-spacer {margin-top: -1px; background: #f3f3f3;}.nihilo .dijitTabContainerBottom-spacer {margin-bottom: -1px; background: #f8f8f8;}.nihilo .dijitTabContainerRight-tabs {border-color: #ccc; padding-top: 3px;}.nihilo .dijitTabContainerRight-tabs .dijitTab {border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-left: 1px solid #ccc; border-bottom: 1px solid #dedede !important;}.nihilo .dijitTabContainerRight .dijitTabListWrapper {padding-right: 3px;}.nihilo .dijitTabContainerRight-tabs .dijitTabChecked {border-left: 1px solid #f8f8f8;}.nihilo .dijitTabContainerRight-container {border-right: none;}.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTab {border-bottom: solid #fff 1px;}.nihilo .dijitTabContainerRight-tabs .dijitTabChecked {border-left-color: #f8f8f8;}.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabChecked,.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabCheckedHover {border-bottom: solid #efefef 1px;}.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-tabs .dijitTab {border-radius: 4px 0 0 4px; -moz-border-radius: 4px 0 0 4px; border-right: 1px solid #ccc; border-bottom: 1px solid #dedede;}.nihilo .dijitTabContainerLeft-tabs .dijitTabChecked {border-right: 1px solid #f8f8f8;}.nihilo .dijitTabContainerLeft-container {border-left: none;}.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabChecked,.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabCheckedHover {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: 1px 0;}.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: 0 solid #ccc; border-top: 0 solid #ccc; border-right: 0 solid #ccc; padding-top: 0; padding-left: 0;}.nihilo .dijitTabContainer .tabStripButton {margin-right: 0; padding: 5px 3px 6px 0px;}.dj_ie6 .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent,.dj_ie7 .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent,.dj_opera .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent {padding-bottom: 7px;}.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: 0;}.nihilo .dijitTabContainer .tabStripButton-top {margin-top: 1px;}.nihilo .dijitTabContainer .tabStripButton-bottom {border-bottom: medium none; border-top: 1px solid #CCCCCC;}.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:0 solid #d3d3d3; border-right:0 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:0 solid #d3d3d3; border-bottom:0 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: 0;}.nihilo .dijitSplitterH,.nihilo .dijitGutterH {background:#FCFCFC; border:0; border-left:0 solid #d3d3d3; border-right:0 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:0 solid #d3d3d3; border-bottom:0 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 {margin: 0 0.1em;}.nihilo .dijitSelect .dijitButtonContents,.nihilo .dijitSelect,.nihilo .dijitTextBox,.nihilo .dijitTextArea {background:#fff url("images/validationInputBg.png") repeat-x top left; #background:#fff url("images/validationInputBg.gif") repeat-x top left;}.nihilo .dijitSelect,.nihilo .dijitTextBox,.nihilo .dijitTextArea {border:1px solid #d3d3d3;}.nihilo .dijitSelect .dijitArrowButton,.nihilo .dijitComboBox .dijitButtonNode {padding: 0 0.2em;}.nihilo .dijitSelect .dijitButtonContents,.nihilo .dijitTextBox .dijitButtonNode {border-color: #d3d3d3;}.nihilo .dijitSelectFocused,.nihilo .dijitTextBoxFocused,.nihilo .dijitTextAreaFocused {border-color:#b3b3b3;}.nihilo .dijitSelectFocused TD,.nihilo .dijitTextBoxFocused .dijitButtonNode,.nihilo .dijitSpinner .dijitUpArrowButtonActive,.nihilo .dijitSpinner .dijitDownArrowButtonActive {border-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 .dijitValidationTextBoxError .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 .dijitButtonText {text-align: center; padding: 0 0.3em;}.nihilo .dijitInputField {padding: 0;}.nihilo .dijitComboBox .dijitButtonNode {border-width: 0 0 0 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: 0 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: 0;}.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: 0;}.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:0; 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:0; 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 0 top; #background:url("images/spriteRoundedIconsSmall.gif") no-repeat 0 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: 0 -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 .dijitSelectError .dijitButtonContents,.nihilo .dijitSelectHover .dijitArrowButton,.nihilo .dijitSelectActive .dijitArrowButton,.nihilo .dijitSelectOpened .dijitArrowButton,.nihilo .dijitSelectDisabled .dijitArrowButton,.nihilo .dijitSelectReadOnly .dijitArrowButton {background: transparent none;}.nihilo .dijitSelect .dijitArrowButton {background: #bcd5f0 url("images/buttonEnabled.png") repeat-x top left; border-width: 0;}.nihilo .dijitSelectDisabled,.nihilo .dijitSelectDisabled TD {border-color: #dedede !important; background:#fafafa url("images/buttonDisabled.png") top repeat-x;}.dj_ie .nihilo .dijitSelectDisabled TD * {filter: gray() alpha(opacity=50);}.nihilo .dijitSelectHover,.nihilo .dijitSelectHover TD {color:#000; background:#fcfcfc url("images/buttonHover.png") repeat-x top left;}.nihilo .dijitSelectActive,.nihilo .dijitSelectOpened,.nihilo .dijitSelectActive TD,.nihilo .dijitSelectOpened TD {border-color:#dedede !important; background: #f5f5f5 url("images/buttonActive.png") top left repeat-x;}.nihilo .dijitSelectMenu td {padding: 0;}.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 0 2px 0;}.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: 0;}.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; padding: 0 4px;}.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; font-size: 1.17em;}.nihilo .dijitCalendarSelectedYear {font-weight:bolder; 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 .dijitCalendar .dijitDropDownButton {margin: 0;}.nihilo .dijitCalendar .dijitButtonText {padding: 0;}.nihilo .dijitCalendar .dijitDropDownButton .dijitButtonNode {background-color: transparent; background-image: none; padding: 0;}.nihilo .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover {background-color: #ffe284; color: #243C5F;}.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: 0; padding: 0; 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: 0;}.nihilo .dijitDialog {background: #eee; border: 1px solid #d3d3d3; -webkit-box-shadow: 0 5px 10px #adadad; padding: 0;}.nihilo .dijitDialog .dijitDialogTitle {font-size: 0.9em; color: #243C5F; font-weight: bold; padding: 0 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 0; 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:0; z-index: 2;}.nihilo .dijitTooltipABRight .dijitTooltipConnector {left: auto !important; right: 6px;}.nihilo .dijitTooltipBelow .dijitTooltipConnector {top: 0; 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: 0; 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;}.nihilo .dijitTooltipLeft .dijitTooltipConnector {right: 0; 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: 0; 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: 0; padding: 0; background-color: #fff;}.nihilo .dijitBorderContainer .dijitMenuBar {border: 1px #ccc solid;}.nihilo .dijitMenuItem {font-family: sans-serif; margin: 0; color: #243C5F;}.nihilo .dijitMenuBar .dijitMenuItem {padding: 4px 5px;}.nihilo .dijitMenuPreviousButton, .nihilo .dijitMenuNextButton {font-style: italic;}.nihilo .dijitMenuItem TD {padding:1px;}.nihilo .dijitMenuPassive .dijitMenuItemHover,.nihilo .dijitComboBoxMenu .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: 0;}.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: 0 !important;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/nihilo/nihilo_rtl.css b/js/3rdparty/resources/dijit/themes/nihilo/nihilo_rtl.css
deleted file mode 100644
index 59d36267..00000000
--- a/js/3rdparty/resources/dijit/themes/nihilo/nihilo_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.dijitRtl .dijitPlaceHolder {left: auto; right: 0;}.dijitMenuItemRtl {text-align: right;}.dj_iequirks .dijitComboButtonRtl button {float:left;}.dj_ie .dijitTextBoxRtl .dijitInputContainer {clear: right;}.dijitTextBoxRtl .dijitValidationContainer,.dijitTextBoxRtl .dijitSpinnerButtonContainer,.dijitComboBoxRtl .dijitArrowButtonContainer {border-right-width: 1px !important; border-left-width: 0 !important;}.dijitSpinnerRtl .dijitSpinnerButtonContainer .dijitArrowButton {right: 0; left: auto;}.dijitSelectRtl .dijitButtonText {float: right;}.dijitTextBoxRtl .dijitSpinnerButtonContainer,.dijitValidationTextBoxRtl .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 .dijitIconLoading,.dijitRtl .dijitContentPaneError .dijitIconError {margin-right: 0; margin-left: 9px;}.dijitTabControllerRtl .nowrapTabStrip {text-align: right;}.dijitTabRtl .dijitTabCloseButton {margin-left: 0; margin-right: 1em;}.dj_ie6 .dijitTabRtl .tabLabel,.dj_ie6 .dijitTabContainerRight-tabs .dijitTabRtl,.dj_ie6 .dijitTabContainerLeft-tabs .dijitTabRtl,.dj_ie7 .dijitTabContainerRight-tabs .dijitTabRtl,.dj_ie7 .dijitTabContainerLeft-tabs .dijitTabRtl {zoom: 1;}.dj_ie6 .dijitTabContainerRight-tabs .dijitTabRtl,.dj_ie7 .dijitTabContainerRight-tabs .dijitTabRtl {left: 0;}.dj_ie6 .dijitTabContainerRightRtl .dijitTabContainerRight-tabs,.dj_ie6 .dijitTabContainerLeftRtl .dijitTabContainerLeft-tabs {width: 1%;}.dj_ie .dijitTimePickerRtl .dijitTimePickerItem {width:100%;}.dijitColorPaletteRtl .dijitColorPaletteUnder {left: auto; right: 0;}.dijitSelectRtl .dijitButtonContents {border-style: none none none solid; text-align: right;}.dijitRtl .dojoDndHorizontal .dojoDndItemBefore {border-width: 0 2px 0 0; padding: 2px 0 2px 2px;}.dijitRtl .dojoDndHorizontal .dojoDndItemAfter {border-width: 0 0 0 2px; padding: 2px 2px 2px 0;}.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: 0 !important;}.dj_ie-rtl .nihilo .dijitTabContainerRight-tabs {margin-right: 0 !important;}.dijitRtl .nihilo .dijitTabContainerLeft-tabs .dijitTab,.dijitRtl .nihilo .dijitTabContainerRight-tabs .dijitTab {margin-left:0;}.dj_ie-rtl .nihilo .dijitTab .dijitTabInnerDiv{width : 1%;}.dijitRtl .nihilo .dijitAccordionArrow {background-position: 0 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: 0; border-right-width: 1px;}.dijitRtl .nihilo .dijitSliderRightBumper {border-left-width: 1px; border-right-width: 0;}.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;}.nihilo .dijitComboBoxRtl .dijitButtonNode {border-width: 0 0 0 1px;}.dijitRtl .nihilo .dijitTreeNode,.dijitRtl .nihilo .dijitTreeExpandoLeaf {background-image: none;}.dijitRtl .nihilo .dijitTreeContent {padding-left: 0; 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: 0 top;}.dj_ie6-rtl .nihilo .dijitTitlePane .dijitClosed .dijitArrowNode {background-position: 0 top;}.dijitRtl .nihilo .dijitCalendarDecrease {background-position: -30px top;}.dijitRtl .nihilo .dijitCalendarIncrease {background-position: 0 top;}.dj_ie6-rtl .nihilo .dijitTimePickerMarkerHover,.dj_ie7-rtl .nihilo .dijitTimePickerMarkerHover {border-top: 0;}.dijitRtl .nihilo .dijitDialogTitleBar .dijitDialogCloseIcon {right: auto; left: 5px;}.dijitRtl .nihilo .dijitMenuItem .dijitMenuItemIcon {padding-left: 3px; padding-right: 0;}.dijitRtl .nihilo .dijitMenuItem .dijitMenuExpand {background-position: 0 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");} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/Calendar.css b/js/3rdparty/resources/dijit/themes/soria/Calendar.css
deleted file mode 100644
index ae12497d..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/Calendar.css
+++ /dev/null
@@ -1 +0,0 @@
-.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; padding: 0 4px;}.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; font-size: 1.17em;}.soria .dijitCalendarSelectedYear {font-weight:bolder; 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 .dijitCalendar .dijitDropDownButton {margin: 0;}.soria .dijitCalendar .dijitButtonText {padding: 0;}.soria .dijitCalendar .dijitDropDownButton .dijitButtonNode {background-color: transparent; background-image: none; padding: 0;}.soria .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover {background-color: #d9e6f9; color: #243C5F;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/Calendar_rtl.css b/js/3rdparty/resources/dijit/themes/soria/Calendar_rtl.css
deleted file mode 100644
index 679d8373..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/Calendar_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.dijitRtl .soria .dijitCalendarDecrease {background-position: -30px top;}.dijitRtl .soria .dijitCalendarIncrease {background-position: 0 top;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/ColorPalette.css b/js/3rdparty/resources/dijit/themes/soria/ColorPalette.css
deleted file mode 100644
index 9368feba..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/ColorPalette.css
+++ /dev/null
@@ -1 +0,0 @@
-.dijitColorPalette {border:1px solid #cbcbcb; background:#fff; -moz-border-radius: 0 !important;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/Common.css b/js/3rdparty/resources/dijit/themes/soria/Common.css
deleted file mode 100644
index 61759b9f..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/Common.css
+++ /dev/null
@@ -1 +0,0 @@
-.soria .dojoDndItemOver {background-image: url(images/treeHover.png);}.soria .dojoDndItemAnchor,.soria .dojoDndItemSelected {background-color: #B8CBEC;}.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/Dialog.css b/js/3rdparty/resources/dijit/themes/soria/Dialog.css
deleted file mode 100644
index 903f69b2..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/Dialog.css
+++ /dev/null
@@ -1 +0,0 @@
-.soria .dijitDialog {background: #eee; border: 1px solid #cbcbcb; -webkit-box-shadow: 0 5px 10px #adadad; padding: 0;}.soria .dijitDialog .dijitDialogTitle {font-weight: bold; padding: 0 4px; font-size: 0.9em; color: #243C5F;}.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 0; 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:0; z-index: 2;}.soria .dijitTooltipABRight .dijitTooltipConnector {left: auto !important; right: 6px;}.soria .dijitTooltipBelow .dijitTooltipConnector {top: 0; 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: 0; 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;}.soria .dijitTooltipLeft .dijitTooltipConnector {right: 0; 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: 0; background:url("images/tooltipConnectorLeft.png") no-repeat top left; width:11px; height:17px;}.dj_ie .soria .dijitTooltipRight .dijitTooltipConnector {background-image: url("images/tooltipConnectorLeft.gif");} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/Dialog_rtl.css b/js/3rdparty/resources/dijit/themes/soria/Dialog_rtl.css
deleted file mode 100644
index 3a0553e7..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/Dialog_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.dijitRtl .soria .dijitDialogTitleBar .dijitDialogCloseIcon {right: auto; left: 5px;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/Editor.css b/js/3rdparty/resources/dijit/themes/soria/Editor.css
deleted file mode 100644
index ebb5b855..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/Editor.css
+++ /dev/null
@@ -1 +0,0 @@
-.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');} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/Editor_rtl.css b/js/3rdparty/resources/dijit/themes/soria/Editor_rtl.css
deleted file mode 100644
index 1a939efd..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/Editor_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.dijitRtl .soria .dijitEditorIcon {background-image: url('../../icons/images/editorIconsEnabled_rtl.png');}.dijitRtl .soria .dijitDisabled .dijitEditorIcon {background-image: url('../../icons/images/editorIconsDisabled_rtl.png');} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/Menu.css b/js/3rdparty/resources/dijit/themes/soria/Menu.css
deleted file mode 100644
index 4dd717ec..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/Menu.css
+++ /dev/null
@@ -1 +0,0 @@
-.soria .dijitMenu,.soria .dijitMenuBar {border: 1px solid #cbcbcb; margin: 0; padding: 0; background-color: #fff;}.soria .dijitBorderContainer .dijitMenuBar {border:1px solid #B1BADF;}.soria .dijitMenuItem {font-family: sans-serif; margin: 0; color: #243C5F;}.soria .dijitMenuBar .dijitMenuItem {padding: 4px 5px;}.soria .dijitMenuPreviousButton, .soria .dijitMenuNextButton {font-style: italic;}.soria .dijitMenuItem TD {padding:1px;}.soria .dijitMenuPassive .dijitMenuItemHover,.soria .dijitComboBoxMenu .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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/Menu_rtl.css b/js/3rdparty/resources/dijit/themes/soria/Menu_rtl.css
deleted file mode 100644
index 845bd379..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/Menu_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.dijitRtl .soria .dijitMenuItem .dijitMenuItemIcon {padding-left: 3px; padding-right: 0;}.dijitRtl .soria .dijitMenuItem .dijitMenuExpand {background-position: left top;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/ProgressBar.css b/js/3rdparty/resources/dijit/themes/soria/ProgressBar.css
deleted file mode 100644
index 3fe49277..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/ProgressBar.css
+++ /dev/null
@@ -1 +0,0 @@
-.soria .dijitProgressBar {margin:2px 0 2px 0;}.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/TimePicker.css b/js/3rdparty/resources/dijit/themes/soria/TimePicker.css
deleted file mode 100644
index a82093fd..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/TimePicker.css
+++ /dev/null
@@ -1 +0,0 @@
-.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/TimePicker_rtl.css b/js/3rdparty/resources/dijit/themes/soria/TimePicker_rtl.css
deleted file mode 100644
index e641c0e8..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/TimePicker_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.dj_ie6-rtl .soria .dijitTimePickerMarkerHover,.dj_ie7-rtl .soria .dijitTimePickerMarkerHover {border-top: 0;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/TitlePane.css b/js/3rdparty/resources/dijit/themes/soria/TitlePane.css
deleted file mode 100644
index b0cda77e..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/TitlePane.css
+++ /dev/null
@@ -1 +0,0 @@
-.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: 0;}.soria .dijitTitlePaneContentInner {padding:10px;}.soria .dijitTitlePaneTextNode {margin-left: 4px; margin-right: 4px;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/TitlePane_rtl.css b/js/3rdparty/resources/dijit/themes/soria/TitlePane_rtl.css
deleted file mode 100644
index 0180dee5..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/TitlePane_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.dijitRtl .soria .dijitTitlePane .dijitClosed .dijitArrowNode {background-position: 0 top;}.dj_ie6-rtl .soria .dijitTitlePane .dijitClosed .dijitArrowNode {background-position: 0 top;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/Toolbar.css b/js/3rdparty/resources/dijit/themes/soria/Toolbar.css
deleted file mode 100644
index 71a93a3d..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/Toolbar.css
+++ /dev/null
@@ -1 +0,0 @@
-.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: 0; padding: 0; 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: 0;}.soria .dijitToolbar .dijitButtonCheckedHover,.soria .dijitToolbar .dijitToggleButtonCheckedHover {background-color:#9abbea; border:1px solid #316ac5; padding: 0;}.soria .dijitToolbar .dijitButtonHover,.soria .dijitToolbar .dijitToggleButtonHover,.soria .dijitToolbar .dijitDropDownButtonHover,.soria .dijitToolbar .dijitComboButton .dijitButtonContentsHover,.soria .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover {border: 1px solid #316ac5; padding: 0; 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: 0;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/Tree.css b/js/3rdparty/resources/dijit/themes/soria/Tree.css
deleted file mode 100644
index 97ecfee3..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/Tree.css
+++ /dev/null
@@ -1 +0,0 @@
-.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/Tree_rtl.css b/js/3rdparty/resources/dijit/themes/soria/Tree_rtl.css
deleted file mode 100644
index c7007acb..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/Tree_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.dijitRtl .soria .dijitTreeNode,.dijitRtl .soria .dijitTreeExpandoLeaf {background-image: none;}.dijitRtl .soria .dijitTreeContent {padding-left: 0; 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');} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/form/Button.css b/js/3rdparty/resources/dijit/themes/soria/form/Button.css
deleted file mode 100644
index 0b5e0b53..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/form/Button.css
+++ /dev/null
@@ -1 +0,0 @@
-.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 .dijitButtonText {text-align: center; padding: 0 0.3em;}.soria .dijitInputField {padding: 0;}.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: 0 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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/form/Button_rtl.css b/js/3rdparty/resources/dijit/themes/soria/form/Button_rtl.css
deleted file mode 100644
index 80d72f28..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/form/Button_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.soria .dijitComboBoxRtl .dijitButtonNode {border-width: 0 0 0 1px;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/form/Checkbox.css b/js/3rdparty/resources/dijit/themes/soria/form/Checkbox.css
deleted file mode 100644
index a82bf29e..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/form/Checkbox.css
+++ /dev/null
@@ -1 +0,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: 0;}.soria .dijitCheckBoxDisabled {background-position: -48px;}.soria .dijitCheckBoxCheckedDisabled {background-position: -32px;}.soria .dijitCheckBoxHover {background-position: -80px;}.soria .dijitCheckBoxCheckedHover {background-position: -64px;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/form/Common.css b/js/3rdparty/resources/dijit/themes/soria/form/Common.css
deleted file mode 100644
index f3345092..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/form/Common.css
+++ /dev/null
@@ -1 +0,0 @@
-.soria .dijitInputContainer input {margin: 0 0.1em;}.soria .dijitSelect .dijitButtonContents,.soria .dijitSelect,.soria .dijitTextBox,.soria .dijitTextArea {background:#fff url("../images/validationInputBg.png") repeat-x top left; #background:#fff url('../images/validationInputBg.gif') repeat-x top left;}.soria .dijitSelect,.soria .dijitTextBox,.soria .dijitTextArea {border:1px solid #8ba0bd;}.soria .dijitSelect .dijitArrowButton,.soria .dijitComboBox .dijitButtonNode {padding: 0 0.2em;}.soria .dijitSelect .dijitButtonContents,.soria .dijitTextBox .dijitButtonNode {border-color: #8ba0bd;}.soria .dijitSelectFocused,.soria .dijitTextBoxFocused,.soria .dijitTextAreaFocused {border-color:#406b9b;}.soria .dijitSelectFocused TD,.soria .dijitTextBoxFocused .dijitButtonNode,.soria .dijitSpinner .dijitUpArrowButtonActive,.soria .dijitSpinner .dijitDownArrowButtonActive {border-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 .dijitValidationTextBoxError .dijitValidationIcon {width: 16px; background: transparent url('../images/warning.png') no-repeat center center;}.soria .dijitComboBoxHighlightMatch {background-color:#f9f7ba;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/form/RadioButton.css b/js/3rdparty/resources/dijit/themes/soria/form/RadioButton.css
deleted file mode 100644
index 4270d996..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/form/RadioButton.css
+++ /dev/null
@@ -1 +0,0 @@
-.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: 0;}.soria .dijitRadioDisabled {background-position: -48px;}.soria .dijitRadioCheckedDisabled {background-position: -32px;}.soria .dijitRadioHover {background-position: -80px;}.soria .dijitRadioCheckedHover {background-position: -64px;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/form/Select.css b/js/3rdparty/resources/dijit/themes/soria/form/Select.css
deleted file mode 100644
index 40e688fa..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/form/Select.css
+++ /dev/null
@@ -1 +0,0 @@
-.soria .dijitSelectError .dijitButtonContents,.soria .dijitSelectHover .dijitArrowButton,.soria .dijitSelectActive .dijitArrowButton,.soria .dijitSelectOpened .dijitArrowButton,.soria .dijitSelectDisabled .dijitArrowButton,.soria .dijitSelectReadOnly .dijitArrowButton {background: transparent none;}.soria .dijitSelect .dijitArrowButton {background: #bcd5f0 url("../images/buttonEnabled.png") repeat-x top left; border-width: 0;}.soria .dijitSelectDisabled,.soria .dijitSelectDisabled TD {border-color: #b9bbdd !important; background:#c3d3e5 url("../images/buttonDisabled.png") top repeat-x;}.dj_ie .soria .dijitSelectDisabled TD * {filter: gray() alpha(opacity=50);}.soria .dijitSelectHover,.soria .dijitSelectHover TD {border-color:#a5beda #5c7590 #5c7590 #a5beda !important; color:#000; background:#acc5e2 url("../images/buttonHover.png") repeat-x top left;}.soria .dijitSelectActive,.soria .dijitSelectOpened,.soria .dijitSelectActive TD,.soria .dijitSelectOpened TD {border-color:#657c9c !important; background: #91b4e5 url("../images/buttonActive.png") top left repeat-x;}.soria .dijitSelectMenu td {padding: 0;}.soria .dijitSelectMenu .dijitMenuItemLabel,.soria .dijitSelectMenu .dijitMenuArrowCell {padding: 0.1em 0.2em;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/form/Slider.css b/js/3rdparty/resources/dijit/themes/soria/form/Slider.css
deleted file mode 100644
index d437fbc2..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/form/Slider.css
+++ /dev/null
@@ -1 +0,0 @@
-.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:0; 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:0; 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 0 top; #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat 0 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: 0 -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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/form/Slider_rtl.css b/js/3rdparty/resources/dijit/themes/soria/form/Slider_rtl.css
deleted file mode 100644
index 1c113c3f..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/form/Slider_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.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: 0; border-right-width: 1px;}.dijitRtl .soria .dijitSliderRightBumper {border-left-width: 1px; border-right-width: 0;}.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/form/TimeTextBox.css b/js/3rdparty/resources/dijit/themes/soria/form/TimeTextBox.css
deleted file mode 100644
index bf67b66d..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/form/TimeTextBox.css
+++ /dev/null
@@ -1 +0,0 @@
-@CHARSET "UTF-8"; \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/accordionItemActive.gif b/js/3rdparty/resources/dijit/themes/soria/images/accordionItemActive.gif
deleted file mode 100644
index 249a1533..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/accordionItemActive.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/accordionItemActive.png b/js/3rdparty/resources/dijit/themes/soria/images/accordionItemActive.png
deleted file mode 100644
index 92c74315..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/accordionItemActive.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/buttonActive.png b/js/3rdparty/resources/dijit/themes/soria/images/buttonActive.png
deleted file mode 100644
index f8159838..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/buttonActive.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/buttonDisabled.png b/js/3rdparty/resources/dijit/themes/soria/images/buttonDisabled.png
deleted file mode 100644
index f76e4ab5..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/buttonDisabled.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/buttonEnabled.png b/js/3rdparty/resources/dijit/themes/soria/images/buttonEnabled.png
deleted file mode 100644
index 3c55c834..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/buttonEnabled.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/buttonHover.png b/js/3rdparty/resources/dijit/themes/soria/images/buttonHover.png
deleted file mode 100644
index a22ebdac..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/buttonHover.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/dndCopy.png b/js/3rdparty/resources/dijit/themes/soria/images/dndCopy.png
deleted file mode 100644
index baecd7cf..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/dndCopy.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/dndMove.png b/js/3rdparty/resources/dijit/themes/soria/images/dndMove.png
deleted file mode 100644
index 07f878cf..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/dndMove.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/dndNoCopy.png b/js/3rdparty/resources/dijit/themes/soria/images/dndNoCopy.png
deleted file mode 100644
index 998c2f26..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/dndNoCopy.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/dndNoMove.png b/js/3rdparty/resources/dijit/themes/soria/images/dndNoMove.png
deleted file mode 100644
index e909173e..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/dndNoMove.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/preciseSliderThumb.gif b/js/3rdparty/resources/dijit/themes/soria/images/preciseSliderThumb.gif
deleted file mode 100644
index 53b33e54..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/preciseSliderThumb.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/preciseSliderThumb.png b/js/3rdparty/resources/dijit/themes/soria/images/preciseSliderThumb.png
deleted file mode 100644
index 045bf35e..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/preciseSliderThumb.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/preciseSliderThumbFocus.gif b/js/3rdparty/resources/dijit/themes/soria/images/preciseSliderThumbFocus.gif
deleted file mode 100644
index 8c6f92eb..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/preciseSliderThumbFocus.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/preciseSliderThumbFocus.png b/js/3rdparty/resources/dijit/themes/soria/images/preciseSliderThumbFocus.png
deleted file mode 100644
index c2358495..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/preciseSliderThumbFocus.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/progressBarAnim.gif b/js/3rdparty/resources/dijit/themes/soria/images/progressBarAnim.gif
deleted file mode 100644
index 73e25e17..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/progressBarAnim.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/progressBarEmpty.png b/js/3rdparty/resources/dijit/themes/soria/images/progressBarEmpty.png
deleted file mode 100644
index 04d81df0..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/progressBarEmpty.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/progressBarFull.png b/js/3rdparty/resources/dijit/themes/soria/images/progressBarFull.png
deleted file mode 100644
index bed17b39..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/progressBarFull.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/sliderEmpty.png b/js/3rdparty/resources/dijit/themes/soria/images/sliderEmpty.png
deleted file mode 100644
index 99fbd727..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/sliderEmpty.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/sliderEmptyVertical.png b/js/3rdparty/resources/dijit/themes/soria/images/sliderEmptyVertical.png
deleted file mode 100644
index 2d497e3e..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/sliderEmptyVertical.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/sliderFull.png b/js/3rdparty/resources/dijit/themes/soria/images/sliderFull.png
deleted file mode 100644
index 171eb54d..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/sliderFull.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/sliderFullFocus.png b/js/3rdparty/resources/dijit/themes/soria/images/sliderFullFocus.png
deleted file mode 100644
index 0956a726..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/sliderFullFocus.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/sliderFullVertical.png b/js/3rdparty/resources/dijit/themes/soria/images/sliderFullVertical.png
deleted file mode 100644
index 35845daf..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/sliderFullVertical.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/sliderFullVerticalFocus.png b/js/3rdparty/resources/dijit/themes/soria/images/sliderFullVerticalFocus.png
deleted file mode 100644
index 9b158bb0..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/sliderFullVerticalFocus.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/sliderThumb.gif b/js/3rdparty/resources/dijit/themes/soria/images/sliderThumb.gif
deleted file mode 100644
index 29899a4b..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/sliderThumb.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/sliderThumb.png b/js/3rdparty/resources/dijit/themes/soria/images/sliderThumb.png
deleted file mode 100644
index b6abbd2f..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/sliderThumb.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/sliderThumbFocus.gif b/js/3rdparty/resources/dijit/themes/soria/images/sliderThumbFocus.gif
deleted file mode 100644
index f8d306fe..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/sliderThumbFocus.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/sliderThumbFocus.png b/js/3rdparty/resources/dijit/themes/soria/images/sliderThumbFocus.png
deleted file mode 100644
index 73ee7056..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/sliderThumbFocus.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/splitContainerSizerH-thumb.png b/js/3rdparty/resources/dijit/themes/soria/images/splitContainerSizerH-thumb.png
deleted file mode 100644
index 0e8f3972..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/splitContainerSizerH-thumb.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/splitContainerSizerH.png b/js/3rdparty/resources/dijit/themes/soria/images/splitContainerSizerH.png
deleted file mode 100644
index 7cdf79a9..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/splitContainerSizerH.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/splitContainerSizerV-thumb.png b/js/3rdparty/resources/dijit/themes/soria/images/splitContainerSizerV-thumb.png
deleted file mode 100644
index 7f12fed5..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/splitContainerSizerV-thumb.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/splitContainerSizerV.png b/js/3rdparty/resources/dijit/themes/soria/images/splitContainerSizerV.png
deleted file mode 100644
index 9ff14d64..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/splitContainerSizerV.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/spriteArrows.gif b/js/3rdparty/resources/dijit/themes/soria/images/spriteArrows.gif
deleted file mode 100644
index fc81207e..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/spriteArrows.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/spriteArrows.png b/js/3rdparty/resources/dijit/themes/soria/images/spriteArrows.png
deleted file mode 100644
index 73aa7009..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/spriteArrows.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/spriteCheckbox.gif b/js/3rdparty/resources/dijit/themes/soria/images/spriteCheckbox.gif
deleted file mode 100644
index d2c4ebfa..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/spriteCheckbox.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/spriteCheckbox.png b/js/3rdparty/resources/dijit/themes/soria/images/spriteCheckbox.png
deleted file mode 100644
index e9923307..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/spriteCheckbox.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/spriteDivIcons.gif b/js/3rdparty/resources/dijit/themes/soria/images/spriteDivIcons.gif
deleted file mode 100644
index f5c58e47..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/spriteDivIcons.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/spriteDivIcons.png b/js/3rdparty/resources/dijit/themes/soria/images/spriteDivIcons.png
deleted file mode 100644
index d76325f3..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/spriteDivIcons.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/spriteRadio.gif b/js/3rdparty/resources/dijit/themes/soria/images/spriteRadio.gif
deleted file mode 100644
index 8dd6e578..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/spriteRadio.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/spriteRadio.png b/js/3rdparty/resources/dijit/themes/soria/images/spriteRadio.png
deleted file mode 100644
index 14c1080e..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/spriteRadio.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/spriteRoundedIconsSmall.gif b/js/3rdparty/resources/dijit/themes/soria/images/spriteRoundedIconsSmall.gif
deleted file mode 100644
index 795ea848..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/spriteRoundedIconsSmall.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/spriteRoundedIconsSmall.png b/js/3rdparty/resources/dijit/themes/soria/images/spriteRoundedIconsSmall.png
deleted file mode 100644
index 10c0d139..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/spriteRoundedIconsSmall.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/spriteRoundedIconsSmallBl.gif b/js/3rdparty/resources/dijit/themes/soria/images/spriteRoundedIconsSmallBl.gif
deleted file mode 100644
index 67581811..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/spriteRoundedIconsSmallBl.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/spriteRoundedIconsSmallBl.png b/js/3rdparty/resources/dijit/themes/soria/images/spriteRoundedIconsSmallBl.png
deleted file mode 100644
index 2c9f51a7..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/spriteRoundedIconsSmallBl.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/spriteTree.gif b/js/3rdparty/resources/dijit/themes/soria/images/spriteTree.gif
deleted file mode 100644
index e546e281..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/spriteTree.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/spriteTree.png b/js/3rdparty/resources/dijit/themes/soria/images/spriteTree.png
deleted file mode 100644
index 33ae07be..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/spriteTree.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/spriteTree_rtl.gif b/js/3rdparty/resources/dijit/themes/soria/images/spriteTree_rtl.gif
deleted file mode 100644
index bbcc64be..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/spriteTree_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/spriteTree_rtl.png b/js/3rdparty/resources/dijit/themes/soria/images/spriteTree_rtl.png
deleted file mode 100644
index b06afdb8..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/spriteTree_rtl.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/tabBottomActiveC.gif b/js/3rdparty/resources/dijit/themes/soria/images/tabBottomActiveC.gif
deleted file mode 100644
index fb61df9a..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/tabBottomActiveC.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/tabBottomEnabledC.gif b/js/3rdparty/resources/dijit/themes/soria/images/tabBottomEnabledC.gif
deleted file mode 100644
index 0a5f0f8e..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/tabBottomEnabledC.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/tabBottomEnabledSpriteLR.gif b/js/3rdparty/resources/dijit/themes/soria/images/tabBottomEnabledSpriteLR.gif
deleted file mode 100644
index a77da39b..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/tabBottomEnabledSpriteLR.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/tabBottomHoverC.gif b/js/3rdparty/resources/dijit/themes/soria/images/tabBottomHoverC.gif
deleted file mode 100644
index 47b9da29..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/tabBottomHoverC.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/tabContainerSprite.gif b/js/3rdparty/resources/dijit/themes/soria/images/tabContainerSprite.gif
deleted file mode 100644
index f0b38421..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/tabContainerSprite.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/tabLeftChecked.gif b/js/3rdparty/resources/dijit/themes/soria/images/tabLeftChecked.gif
deleted file mode 100644
index 439aa6b4..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/tabLeftChecked.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/tabRightChecked.gif b/js/3rdparty/resources/dijit/themes/soria/images/tabRightChecked.gif
deleted file mode 100644
index cfffd1e7..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/tabRightChecked.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/titleBar.png b/js/3rdparty/resources/dijit/themes/soria/images/titleBar.png
deleted file mode 100644
index 93c4146e..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/titleBar.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/titleBarActive.png b/js/3rdparty/resources/dijit/themes/soria/images/titleBarActive.png
deleted file mode 100644
index fb8a2e68..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/titleBarActive.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorDown.gif b/js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorDown.gif
deleted file mode 100644
index 9c384955..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorDown.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorDown.png b/js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorDown.png
deleted file mode 100644
index d75af71f..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorDown.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorLeft.gif b/js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorLeft.gif
deleted file mode 100644
index fc947e0a..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorLeft.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorLeft.png b/js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorLeft.png
deleted file mode 100644
index f3de66a7..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorLeft.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorRight.gif b/js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorRight.gif
deleted file mode 100644
index b0e8097f..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorRight.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorRight.png b/js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorRight.png
deleted file mode 100644
index 3d62dcd4..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorRight.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorUp.gif b/js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorUp.gif
deleted file mode 100644
index 54bcf652..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorUp.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorUp.png b/js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorUp.png
deleted file mode 100644
index 7f7a5d8f..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/tooltipConnectorUp.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/treeExpand_loading.gif b/js/3rdparty/resources/dijit/themes/soria/images/treeExpand_loading.gif
deleted file mode 100644
index db9ddd02..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/treeExpand_loading.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/treeHover.png b/js/3rdparty/resources/dijit/themes/soria/images/treeHover.png
deleted file mode 100644
index cd6d28be..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/treeHover.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/treeI.gif b/js/3rdparty/resources/dijit/themes/soria/images/treeI.gif
deleted file mode 100644
index 6f669e24..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/treeI.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/treeI_half.gif b/js/3rdparty/resources/dijit/themes/soria/images/treeI_half.gif
deleted file mode 100644
index e5fd0155..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/treeI_half.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/treeI_half_rtl.gif b/js/3rdparty/resources/dijit/themes/soria/images/treeI_half_rtl.gif
deleted file mode 100644
index 44ad021a..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/treeI_half_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/treeI_rtl.gif b/js/3rdparty/resources/dijit/themes/soria/images/treeI_rtl.gif
deleted file mode 100644
index 0d32a2f7..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/treeI_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/validationInputBg.gif b/js/3rdparty/resources/dijit/themes/soria/images/validationInputBg.gif
deleted file mode 100644
index c28475c8..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/validationInputBg.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/validationInputBg.png b/js/3rdparty/resources/dijit/themes/soria/images/validationInputBg.png
deleted file mode 100644
index f3039f95..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/validationInputBg.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/images/warning.png b/js/3rdparty/resources/dijit/themes/soria/images/warning.png
deleted file mode 100644
index c52f83dc..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/images/warning.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/soria/layout/AccordionContainer.css b/js/3rdparty/resources/dijit/themes/soria/layout/AccordionContainer.css
deleted file mode 100644
index 219bd401..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/layout/AccordionContainer.css
+++ /dev/null
@@ -1 +0,0 @@
-.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/layout/AccordionContainer_rtl.css b/js/3rdparty/resources/dijit/themes/soria/layout/AccordionContainer_rtl.css
deleted file mode 100644
index 5ef84ff2..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/layout/AccordionContainer_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.dijitRtl .soria .dijitAccordionArrow {background-position: 0 top;}.dijitRtl .soria .dijitAccordionTitleSelected .dijitAccordionArrow {background-position: -15px top;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/layout/BorderContainer.css b/js/3rdparty/resources/dijit/themes/soria/layout/BorderContainer.css
deleted file mode 100644
index e9dac705..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/layout/BorderContainer.css
+++ /dev/null
@@ -1 +0,0 @@
-.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: 0;}.soria .dijitSplitterH,.soria .dijitGutterH {background: #E1EBFB; border:0; border-left:0 solid #d3d3d3; border-right:0 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:0 solid #d3d3d3; border-bottom:0 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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/layout/ContentPane.css b/js/3rdparty/resources/dijit/themes/soria/layout/ContentPane.css
deleted file mode 100644
index 4af9d977..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/layout/ContentPane.css
+++ /dev/null
@@ -1 +0,0 @@
-.soria .dijitContentPane {padding: 0;}.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/layout/SplitContainer.css b/js/3rdparty/resources/dijit/themes/soria/layout/SplitContainer.css
deleted file mode 100644
index 56211f51..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/layout/SplitContainer.css
+++ /dev/null
@@ -1 +0,0 @@
-.soria .dijitSplitContainerSizerH {background:url("../images/splitContainerSizerV.png") repeat-y #cddef4; border:0; border-left:0 solid #436496; border-right:0 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:0 solid #436496; border-bottom:0 solid #436496; height:2px;}.soria .dijitSplitContainerSizerV .thumb {background:url("../images/splitContainerSizerH-thumb.png") no-repeat #ccc; top:1px; width:19px; height:5px;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/layout/TabContainer.css b/js/3rdparty/resources/dijit/themes/soria/layout/TabContainer.css
deleted file mode 100644
index 940651f5..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/layout/TabContainer.css
+++ /dev/null
@@ -1 +0,0 @@
- .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: 0;}.soria .dijitTab {padding:4px 6px 2px 4px; background: url("../images/tabContainerSprite.gif") repeat-x 0 -351px; position: relative; line-height:normal; margin:0 2px 0 0; color: #243C5F; border: 1px #8BA0BD solid; border-bottom: 1px #B1BADF solid;}.soria .dijitTabHover {color: #243C5F; background: url("../images/tabContainerSprite.gif") repeat-x 0 -201px;}.soria .dijitTabChecked{background: url("../images/tabContainerSprite.gif") repeat-x 0 -51px; color: #243C5F !important;}.soria .dijitTabListWrapper {z-index: 10;}.soria .dijitTabContainerTabListNested {background: #D9E9F9; border: none;}.soria .dijitTabContainerTabListNested .dijitTab {background: none; border: none; top: 0;}.soria .dijitTabContainerTabListNested .dijitTabHover .tabLabel {text-decoration: underline;}.soria .dijitTabContainerTabListNested .dijitTabChecked .tabLabel {text-decoration: underline; font-weight: bold;}.soria .dijitTabContainerSpacerNested .dijitTabSpacer {height: 0;}.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 .dijitTabContainerTop-tabs {border-color: #B1BADF; padding-left: 3px;}.soria .dijitTabContainerTop-tabs .dijitTab {border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0;}.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-tabs .dijitTab {border-bottom: none; border-top: 1px solid #B1BADF; border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; padding-top: 3px; padding-bottom: 3px; background: url("../images/tabBottomEnabledC.gif") repeat-x bottom left;}.soria .dijitTabContainerBottom-tabs .dijitTabHover {background: url("../images/tabBottomHoverC.gif") repeat-x bottom left;}.soria .dijitTabContainerBottom-tabs .dijitTabChecked {border-top-color:#94b4e6; background: url("../images/tabBottomActiveC.gif") repeat-x bottom left;}.soria .dijitTabContainerBottom-container {border-bottom: none;}.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-tabs .dijitTab {border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-bottom: none; border-left: 1px solid #B1BADF; border-bottom: 1px solid #B1BADF !important; padding: 4px 6px 2px 8px;}.soria .dijitTabContainerRight-tabs .dijitTabChecked {border-left-color: #94b4e6; background: url("../images/tabRightChecked.gif") no-repeat left top !important;}.soria .dijitTabContainerRight-container {border-right: none;}.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTab,.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTab {border-bottom: solid #B1BADF 1px; margin-bottom: -1px;}.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTabChecked,.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTabChecked,.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTabCheckedHover,.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTabCheckedHover {border-bottom: solid #94b4e6 1px; margin-bottom: -1px;}.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-tabs .dijitTab {border-radius: 4px 0 0 4px; -moz-border-radius: 4px 0 0 4px; border-right: 1px solid #B1BADF; border-bottom: 1px solid #B1BADF;}.soria .dijitTabContainerLeft-tabs .dijitTabChecked {border-right: 1px solid #94b4e6; background: url("../images/tabLeftChecked.gif") no-repeat right top;}.soria .dijitTabContainerLeft-container {border-left: none;}.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTab,.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTab {border-bottom: solid #B1BADF 1px; margin-bottom: -1px;}.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTab,.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTab,.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTab,.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTab {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: 1px 0;}.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: 0 solid #ccc; border-top: 0 solid #ccc; border-right: 0 solid #ccc; padding-top: 0; padding-left: 0;}.soria .dijitTabContainer .tabStripButton {margin-right: 0;}.soria .dijitTabContainer .tabStripButton-top {margin-top: 1px;}.dj_ie6 .soria .tabStripButton .dijitTabContent,.dj_ie7 .soria .tabStripButton .dijitTabContent {padding-top: 7px;}.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 .dijitTab {background: transparent url(../images/tabBottomEnabledSpriteLR.gif) no-repeat scroll right bottom;}.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/layout/TabContainer_rtl.css b/js/3rdparty/resources/dijit/themes/soria/layout/TabContainer_rtl.css
deleted file mode 100644
index 9366ac48..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/layout/TabContainer_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.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: 0 !important;}.dj_ie-rtl .soria .dijitTabContainerRight-tabs {margin-right: 0 !important;}.dijitRtl .soria .dijitTabContainerLeft-tabs .dijitTab,.dijitRtl .soria .dijitTabContainerRight-tabs .dijitTab {margin-left:0;}.dj_ie-rtl .soria .dijitTab .dijitTabInnerDiv{width : 1%;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/soria.css b/js/3rdparty/resources/dijit/themes/soria/soria.css
deleted file mode 100644
index d710011e..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/soria.css
+++ /dev/null
@@ -1 +0,0 @@
-.dijitReset {margin:0; border:0; padding:0; line-height:normal; font: inherit; color: inherit;}.dj_a11y .dijitReset {-moz-appearance: none;}.dijitInline {display:inline-block; #zoom: 1; #display:inline; border:0; padding:0; vertical-align:middle; #vertical-align: auto;}table.dijitInline {display:inline-table; box-sizing: content-box; -moz-box-sizing: content-box;}.dijitHidden {display: none !important;}.dijitVisible {display: block !important; position: relative;}.dj_ie6 .dijitComboBox .dijitInputContainer,.dijitInputContainer {#zoom: 1; overflow: hidden; float: none !important; position: relative;}.dj_ie7 .dijitInputContainer {float: left !important; clear: left; display: inline-block !important;}.dj_ie .dijitSelect input,.dj_ie input.dijitTextBox,.dj_ie .dijitTextBox input {font-size: 100%;}.dijitSelect .dijitButtonText {float: left; vertical-align: top;}TABLE.dijitSelect {padding: 0 !important;}.dijitTextBox .dijitSpinnerButtonContainer,.dijitTextBox .dijitArrowButtonContainer,.dijitValidationTextBox .dijitValidationContainer {float: right; text-align: center;}.dijitSelect input.dijitInputField,.dijitTextBox input.dijitInputField {padding-left: 0 !important; padding-right: 0 !important;}.dijitValidationTextBox .dijitValidationContainer {display: none;}.dijitTeeny {font-size:1px; line-height:1px;}.dijitOffScreen {position: absolute !important; left: 50% !important; top: -10000px !important;}.dijitPopup {position: absolute; background-color: transparent; margin: 0; border: 0; padding: 0;}.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;}.dj_a11y .dijitIcon,.dj_a11y div.dijitArrowButtonInner, .dj_a11y span.dijitArrowButtonInner,.dj_a11y img.dijitArrowButtonInner,.dj_a11y .dijitCalendarIncrementControl,.dj_a11y .dijitTreeExpando {display: none;}.dijitSpinner div.dijitArrowButtonInner {display: block;}.dj_a11y .dijitA11ySideArrow {display: inline !important; cursor: pointer;}.dj_a11y .dijitCalendarDateLabel {padding: 1px; border: 0px !important;}.dj_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {border-style: solid !important; border-width: 1px !important; padding: 0;}.dj_a11y .dijitCalendarDateTemplate {padding-bottom: 0.1em !important; border: 0px !important;}.dj_a11y .dijitButtonNode {border: black outset medium !important; padding: 0 !important;}.dj_a11y .dijitArrowButton {padding: 0 !important;}.dj_a11y .dijitButtonContents {margin: 0.15em;}.dj_a11y .dijitTextBoxReadOnly .dijitInputField,.dj_a11y .dijitTextBoxReadOnly .dijitButtonNode {border-style: outset!important; border-width: medium!important; border-color: #999 !important; color:#999 !important;}.dijitButtonNode * {vertical-align: middle;}.dijitSelect .dijitArrowButtonInner,.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;}.dj_gecko .dj_a11y .dijitButtonDisabled .dijitButtonNode {opacity: 0.5;}.dijitToggleButton,.dijitButton,.dijitDropDownButton,.dijitComboButton {margin: 0.2em; vertical-align: middle;}.dijitButtonContents {display: block;}td.dijitButtonContents {display: table-cell;}.dijitButtonNode img {vertical-align:middle;}.dijitToolbar .dijitComboButton {border-collapse: separate;}.dijitToolbar .dijitToggleButton,.dijitToolbar .dijitButton,.dijitToolbar .dijitDropDownButton,.dijitToolbar .dijitComboButton {margin: 0;}.dijitToolbar .dijitButtonContents {padding: 1px 2px;}.dj_webkit .dijitToolbar .dijitDropDownButton {padding-left: 0.3em;}.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {padding:0;}.dijitSelect {border:1px solid gray;}.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;}.dijitSelect,.dijitSelect *,.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;}.dijitTextBoxReadOnly,.dijitTextBoxDisabled {color: gray;}.dj_webkit .dijitTextBoxDisabled input {color: #eee;}.dj_webkit textarea.dijitTextAreaDisabled {color: #333;}.dj_gecko .dijitTextBoxReadOnly input.dijitInputField, .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: 5px -webkit-focus-ring-color;}.dijitSelect input,.dijitTextBox input {float: left;}.dj_ie6 input.dijitTextBox,.dj_ie6 .dijitTextBox input {float: none;}.dijitInputInner {border:0 !important; background-color:transparent !important; width:100% !important; padding-left: 0 !important; padding-right: 0 !important; margin-left: 0 !important; margin-right: 0 !important;}.dj_a11y .dijitTextBox input {margin: 0 !important;}.dijitValidationTextBoxError input.dijitValidationInner,.dijitSelect input,.dijitTextBox input.dijitArrowButtonInner {text-indent: -2em !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 .dijitSelect input,.dj_ie .dijitTextBox input,.dj_ie input.dijitTextBox {overflow-y: visible; line-height: normal;}.dijitSelect .dijitSelectLabel span {line-height: 100%;}.dj_ie .dijitSelect .dijitSelectLabel {line-height: normal;}.dj_ie6 .dijitSelect .dijitSelectLabel,.dj_ie7 .dijitSelect .dijitSelectLabel,.dj_ie8 .dijitSelect .dijitSelectLabel,.dj_iequirks .dijitSelect .dijitSelectLabel,.dijitSelect td,.dj_ie6 .dijitSelect input,.dj_iequirks .dijitSelect input,.dj_ie6 .dijitSelect .dijitValidationContainer,.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%;}.dj_a11y input.dijitValidationInner,.dj_a11y input.dijitArrowButtonInner {text-indent: 0 !important; width: 1em !important; #text-align: left !important; color: black !important;}.dijitValidationTextBoxError .dijitValidationContainer {display: inline; cursor: default;}.dijitSpinner .dijitSpinnerButtonContainer,.dijitComboBox .dijitArrowButtonContainer {border-width: 0 0 0 1px !important;}.dj_a11y .dijitSelect .dijitArrowButtonContainer,.dijitToolbar .dijitComboBox .dijitArrowButtonContainer {border-width: 0 !important;}.dijitComboBoxMenu {list-style-type: none;}.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0;}.dj_ie .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {clear: both;}.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;}.dj_a11y .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0px !important; border-style: solid !important;}.dj_a11y .dijitTextBox .dijitSpinnerButtonContainer,.dj_a11y .dijitSpinner .dijitArrowButtonInner,.dj_a11y .dijitSpinnerButtonContainer input {width: 1em !important;}.dj_a11y .dijitSpinner .dijitArrowButtonInner {margin: 0 auto !important;}.dj_ie .dj_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 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding-left: 0 !important; padding-right: 0 !important; width: 1em !important;}.dj_ie6 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {margin-left: 0.1em !important; margin-right: 0.1em !important; width: 1em !important;}.dj_iequirks .dj_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;}.dj_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%; visibility: hidden;}.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField {zoom: 50%;}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner {overflow: hidden;}.dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 100%;}.dj_iequirks .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 1em;}.dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {vertical-align:top; visibility: visible;}.dj_a11y .dijitSpinnerButtonContainer {width: 1em;}.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);}.dj_a11y .dijitCheckBox,.dj_a11y .dijitRadio {width: auto !important; height: auto !important;}.dj_a11y .dijitCheckBoxInput {opacity: 1; filter: none; width: auto; height: auto;}.dj_a11y .dijitFocusedLabel {border: 1px dotted; outline: 0px !important;}.dijitProgressBar {z-index: 0;}.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: 100%; height:auto; background-color:#aaa; background-attachment: fixed;}.dj_a11y .dijitProgressBarTile {border-width:2px; border-style:solid; background-color:transparent !important;}.dj_ie6 .dijitProgressBarTile {position:static; height:1.6em;}.dijitProgressBarIndeterminate .dijitProgressBarTile {}.dijitProgressBarIndeterminateHighContrastImage {display:none;}.dj_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: 0; 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;}.dj_a11y .dijitTooltipConnector {display: none;}.dijitTooltipData {display:none;}.dijitLayoutContainer {position: relative; display: block; overflow: hidden;}.dijitAlignTop,.dijitAlignBottom,.dijitAlignLeft,.dijitAlignRight {position: absolute; overflow: hidden;}body .dijitAlignClient {position: absolute;}.dijitBorderContainer, .dijitBorderContainerNoGutter {position:relative; overflow: hidden; z-index: 0;}.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: row-resize;}.dijitSplitterV {width: 7px; border-left:1px; border-right:1px; cursor: col-resize;}.dijitSplitContainer {position: relative; overflow: hidden; display: block;}.dj_ff3 .dj_a11y div.dijitSplitter:focus {outline-style:dotted; outline-width: 2px;}.dijitSplitPane {position: absolute;}.dijitSplitContainerSizerH,.dijitSplitContainerSizerV {position:absolute; font-size: 1px; 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;}.dijitSplitContainerSizerH, .dijitSplitContainerVirtualSizerH {cursor: col-resize;}.dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV {cursor: row-resize;}.dj_a11y .dijitSplitterH {border-top:1px solid #d3d3d3 !important; border-bottom:1px solid #d3d3d3 !important;}.dj_a11y .dijitSplitterV {border-left:1px solid #d3d3d3 !important; border-right:1px solid #d3d3d3 !important;}.dijitContentPane {display: block; overflow: auto;}.dijitContentPaneSingleChild {overflow: hidden;}.dijitContentPaneLoading .dijitIconLoading,.dijitContentPaneError .dijitIconError {margin-right: 9px;}.dijitTitlePane {display: block; overflow: hidden;}.dijitTitlePaneTitle {cursor: pointer;}.dijitFixedOpen, .dijitFixedClosed {cursor: default;}.dijitFixedOpen .dijitArrowNode, .dijitFixedOpen .dijitArrowNodeInner,.dijitFixedClosed .dijitArrowNode, .dijitFixedClosed .dijitArrowNodeInner{display: none;}.dijitTitlePaneTitle * {vertical-align: middle;}.dijitTitlePane .dijitArrowNodeInner {display: none;}.dj_a11y .dijitTitlePane .dijitArrowNodeInner {display:inline !important; font-family: monospace;}.dj_a11y .dijitTitlePane .dijitArrowNode {display:none;}.dj_ie6 .dijitTitlePaneContentOuter,.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle {zoom: 1;}.dijitColorPalette {border: 1px solid #999; background: #fff; position: relative;}.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 {font-size: 1px; vertical-align: middle; text-align: center; background: none;}.dijitColorPalette .dijitPaletteImg {padding: 1px; border: 1px solid #999; margin: 2px 1px; cursor: default; font-size: 1px;}.dj_gecko .dijitColorPalette .dijitPaletteImg {padding-bottom: 0;}.dijitColorPalette .dijitColorPaletteSwatch {width: 14px; height: 12px;}.dijitPaletteTable td {padding: 0;}.dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg {border: 1px solid #000;}.dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg,.dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg {border: 2px solid #000; margin: 1px 0;}.dj_a11y .dijitColorPalette .dijitPaletteTable,.dj_a11y .dijitColorPalette .dijitPaletteTable * {background-color: transparent !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;}.dj_a11y .dijitAccordionTitle .arrowTextUp,.dj_a11y .dijitAccordionTitleSelected .arrowTextDown {display: inline;}.dj_a11y .dijitAccordionTitleSelected .arrowTextUp {display: none;}.dijitAccordionChildWrapper {overflow: hidden;}.dijitCalendarContainer {width: auto;}.dijitCalendarContainer th, .dijitCalendarContainer td {padding: 0; vertical-align: middle;}.dijitCalendarYearLabel {white-space: nowrap;}.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;}.dijitCalendarMonthMenu .dijitCalendarMonthLabel {text-align:center;}.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;}.dijitMenuItem:focus {outline: none}.dijitMenuPassive .dijitMenuItemHover,.dijitMenuItemSelected {background-color:black; color:white;}.dijitMenuItemIcon, .dijitMenuExpand {background-repeat: no-repeat;}.dijitMenuItemDisabled * {opacity:0.5; cursor:default;}.dj_ie .dj_a11y .dijitMenuItemDisabled,.dj_ie .dj_a11y .dijitMenuItemDisabled *,.dj_ie .dijitMenuItemDisabled * {color: gray; filter: alpha(opacity=35);}.dijitMenuItemLabel {position: relative; vertical-align: middle;}.dj_a11y .dijitMenuItemSelected {border: 1px dotted black !important;}.dj_ff3 .dj_a11y .dijitMenuItem td {padding: 0 !important; background:none !important;}.dj_a11y .dijitMenuItemSelected .dijitMenuItemLabel {border-width: 1px; border-style: solid;}.dj_ie8 .dj_a11y .dijitMenuItemLabel {position:static;}.dijitMenuExpandA11y {display: none;}.dj_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;}.dj_a11y .dijitCheckedMenuItemIconChar {display:inline !important;}.dj_a11y .dijitCheckedMenuItemIcon {display: none;}.dj_ie .dj_a11y .dijitMenuBar .dijitMenuItem {margin: 0;}.dijitStackController .dijitToggleButtonChecked * {cursor: default;}.dijitTabContainer {z-index: 0; overflow-y: visible;}.dj_ie6 .dijitTabContainer {overflow: hidden;}.dijitTabContainerNoLayout {width: 100%;}.dijitTabContainerBottom-tabs,.dijitTabContainerTop-tabs,.dijitTabContainerLeft-tabs,.dijitTabContainerRight-tabs {z-index: 1; overflow: visible !important;}.dijitTabController {z-index: 1;}.dijitTabContainerBottom-container,.dijitTabContainerTop-container,.dijitTabContainerLeft-container,.dijitTabContainerRight-container {z-index:0; overflow: hidden; border: 1px solid black;}.nowrapTabStrip {width: 50000px; display: block; position: relative; text-align: left; z-index: 1;}.dijitTabListWrapper {overflow: hidden; z-index: 1;}.dj_a11y .tabStripButton img {display: none;}.dijitTabContainerTop-tabs {border-bottom: 1px solid black;}.dijitTabContainerTop-container {border-top: 0;}.dijitTabContainerLeft-tabs {border-right: 1px solid black; float: left;}.dijitTabContainerLeft-container {border-left: 0;}.dijitTabContainerBottom-tabs {border-top: 1px solid black;}.dijitTabContainerBottom-container {border-bottom: 0;}.dijitTabContainerRight-tabs {border-left: 1px solid black; float: left;}.dijitTabContainerRight-container {border-right: 0;}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;}.tabStripButton {z-index: 12;}.dijitTabButtonDisabled .tabStripButton {display: none;}.dijitTabCloseButton {margin-left: 1em;}.dijitTabCloseText {display:none;}.dijitTab .tabLabel {min-height: 15px; display: inline-block;}.dijitNoIcon {display: none;}.dj_ie6 .dijitTab .dijitNoIcon {display: inline; height: 15px; width: 1px;}.dj_a11y .dijitTabCloseButton {background-image: none !important; width: auto !important; height: auto !important;}.dj_a11y .dijitTabCloseText {display: inline;}.dijitTabPane,.dijitStackContainer-child,.dijitAccordionContainer-child {border: none !important;}.dijitInlineEditBoxDisplayMode {border: 1px solid transparent; cursor: text;}.dj_a11y .dijitInlineEditBoxDisplayMode,.dj_ie6 .dijitInlineEditBoxDisplayMode {border: none;}.dijitInlineEditBoxDisplayModeHover,.dj_a11y .dijitInlineEditBoxDisplayModeHover,.dj_ie6 .dijitInlineEditBoxDisplayModeHover {background-color: #e2ebf2; border: solid 1px black;}.dijitInlineEditBoxDisplayModeDisabled {cursor: default;}.dijitTree {overflow: auto;}.dijitTreeIndent {width: 19px;}.dijitTreeRow, .dijitTreeContent {white-space: nowrap;}.dijitTreeRow img {vertical-align: middle;}.dijitTreeContent {cursor: default;}.dijitExpandoText {display: none;}.dj_a11y .dijitExpandoText {display: inline; padding-left: 10px; padding-right: 10px; font-family: monospace; border-style: solid; border-width: thin; cursor: pointer;}.dijitTreeLabel {margin: 0 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);}.dj_a11y .dijitSpinnerButtonContainer,.dj_a11y .dijitDialog {opacity: 1 !important; background-color: white !important;}.dijitDialog .closeText {display:none; position:absolute;}.dj_a11y .dijitDialog .closeText {display:inline;}.dijitSliderMoveable {z-index:99; position:absolute !important; display:block; vertical-align:middle;}.dijitSliderMoveableH {right:0;}.dijitSliderMoveableV {right:50%;}.dj_a11y div.dijitSliderImageHandle,.dijitSliderImageHandle {margin:0; padding:0; position:relative !important; border:8px solid gray; width:0; height:0; cursor: pointer;}.dj_iequirks .dj_a11y .dijitSliderImageHandle {font-size: 0;}.dj_ie7 .dijitSliderImageHandle {overflow: hidden;}.dj_ie7 .dj_a11y .dijitSliderImageHandle {overflow: visible;}.dj_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;}.dijitSliderDecorationC,.dijitSliderDecorationV {position: relative;}.dijitSliderDecorationH {width: 100%;}.dijitSliderDecorationV {height: 100%;}.dijitSliderButton {font-family:monospace; margin:0; padding:0; display:block;}.dj_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;}.dj_a11y .dijitSliderReadOnly,.dj_a11y .dijitSliderDisabled {opacity:0.6;}.dj_ie .dj_a11y .dijitSliderReadOnly .dijitSliderBar,.dj_ie .dj_a11y .dijitSliderDisabled .dijitSliderBar {filter: alpha(opacity=40);}.dj_a11y .dijitSlider .dijitSliderButtonContainer div {font-family: monospace; font-size: 1em; line-height: 1em; height: auto; width: auto; margin: 0 4px;}.dj_a11y .dijitButtonContents .dijitButtonText,.dj_a11y .dijitTab .tabLabel {display: inline !important;}.dj_a11y .dijitSelect .dijitButtonText {display: inline-block !important;}.dijitSelectError .dijitButtonContents .dijitButtonText {display: none !important;}.dijitTextArea {width:100%; overflow-y: auto;}.dijitTextArea[cols] {width:auto;}.dj_ie .dijitTextAreaCols {width:auto;}.dijitExpandingTextArea {resize: none;}.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;}.dijitTimePickerItemDisabled {color:gray; text-decoration:line-through;}.dj_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner {border: solid 4px black;}.dj_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner {border: dashed 4px black;}.dijitToggleButtonIconChar {display:none !important;}.dj_a11y .dijitToggleButton .dijitToggleButtonIconChar {display:inline !important; visibility:hidden;}.dj_ie6 .dijitToggleButtonIconChar, .dj_ie6 .tabStripButton .dijitButtonText {font-family: "Arial Unicode MS";}.dj_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {display: inline !important; visibility:visible !important;}.dijitArrowButtonChar {display:none !important;}.dj_a11y .dijitArrowButtonChar {display:inline !important;}.dj_a11y .dijitDropDownButton .dijitArrowButtonInner,.dj_a11y .dijitComboButton .dijitArrowButtonInner {display:none !important;}.dj_a11y .dijitSelect {border-collapse: separate !important; border-width: 1px; border-style: solid;}.dj_ie .dijitSelect {vertical-align: middle;}.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie8 .dijitSelect .dijitButtonText {vertical-align: top;}.dj_ie6 .dijitTextBox .dijitInputContainer,.dj_iequirks .dijitTextBox .dijitInputContainer,.dj_ie6 .dijitTextBox .dijitArrowButtonInner,.dj_ie6 .dijitSpinner .dijitSpinnerButtonInner,.dijitSelect .dijitSelectLabel {vertical-align: baseline;}.dijitToolbar .dijitSelect {margin: 0;}.dj_webkit .dijitToolbar .dijitSelect {padding-left: 0.3em;}.dijitSelect .dijitButtonContents {padding: 0; white-space: nowrap; text-align: left; border-style: none solid none none; border-width: 1px;}.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: 0; background-color: transparent;}.dijitForceStatic {position: static !important;}.dijitReadOnly *,.dijitDisabled *,.dijitReadOnly,.dijitDisabled {cursor: default;}.dojoDndItem {padding: 2px; -webkit-touch-callout: none; -webkit-user-select: none;}.dojoDndHorizontal .dojoDndItem {#display: inline; display: inline-block;}.dojoDndItemBefore,.dojoDndItemAfter {border: 0px solid #369;}.dojoDndItemBefore {border-width: 2px 0 0 0; padding: 0 2px 2px 2px;}.dojoDndItemAfter {border-width: 0 0 2px 0; padding: 2px 2px 0 2px;}.dojoDndHorizontal .dojoDndItemBefore {border-width: 0 0 0 2px; padding: 2px 2px 2px 0;}.dojoDndHorizontal .dojoDndItemAfter {border-width: 0 2px 0 0; padding: 2px 0 2px 2px;}.dojoDndItemOver {cursor:pointer;}.dj_gecko .dijitArrowButtonInner INPUT,.dj_gecko INPUT.dijitArrowButtonInner {-moz-user-focus:ignore;}.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: 0;}.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: -160px;}.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;}.dijitIconLoading {background:url("../../icons/images/loadingAnimation_rtl.gif") no-repeat; height: 20px; width: 20px;}.soria .dojoDndItemOver {background-image: url("images/treeHover.png");}.soria .dojoDndItemAnchor,.soria .dojoDndItemSelected {background-color: #B8CBEC;}.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: 0;}.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: 0;}.soria .dijitTab {padding:4px 6px 2px 4px; background: url("images/tabContainerSprite.gif") repeat-x 0 -351px; position: relative; line-height:normal; margin:0 2px 0 0; color: #243C5F; border: 1px #8BA0BD solid; border-bottom: 1px #B1BADF solid;}.soria .dijitTabHover {color: #243C5F; background: url("images/tabContainerSprite.gif") repeat-x 0 -201px;}.soria .dijitTabChecked{background: url("images/tabContainerSprite.gif") repeat-x 0 -51px; color: #243C5F !important;}.soria .dijitTabListWrapper {z-index: 10;}.soria .dijitTabContainerTabListNested {background: #D9E9F9; border: none;}.soria .dijitTabContainerTabListNested .dijitTab {background: none; border: none; top: 0;}.soria .dijitTabContainerTabListNested .dijitTabHover .tabLabel {text-decoration: underline;}.soria .dijitTabContainerTabListNested .dijitTabChecked .tabLabel {text-decoration: underline; font-weight: bold;}.soria .dijitTabContainerSpacerNested .dijitTabSpacer {height: 0;}.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 .dijitTabContainerTop-tabs {border-color: #B1BADF; padding-left: 3px;}.soria .dijitTabContainerTop-tabs .dijitTab {border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0;}.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-tabs .dijitTab {border-bottom: none; border-top: 1px solid #B1BADF; border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; padding-top: 3px; padding-bottom: 3px; background: url("images/tabBottomEnabledC.gif") repeat-x bottom left;}.soria .dijitTabContainerBottom-tabs .dijitTabHover {background: url("images/tabBottomHoverC.gif") repeat-x bottom left;}.soria .dijitTabContainerBottom-tabs .dijitTabChecked {border-top-color:#94b4e6; background: url("images/tabBottomActiveC.gif") repeat-x bottom left;}.soria .dijitTabContainerBottom-container {border-bottom: none;}.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-tabs .dijitTab {border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-bottom: none; border-left: 1px solid #B1BADF; border-bottom: 1px solid #B1BADF !important; padding: 4px 6px 2px 8px;}.soria .dijitTabContainerRight-tabs .dijitTabChecked {border-left-color: #94b4e6; background: url("images/tabRightChecked.gif") no-repeat left top !important;}.soria .dijitTabContainerRight-container {border-right: none;}.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTab,.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTab {border-bottom: solid #B1BADF 1px; margin-bottom: -1px;}.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTabChecked,.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTabChecked,.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTabCheckedHover,.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTabCheckedHover {border-bottom: solid #94b4e6 1px; margin-bottom: -1px;}.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-tabs .dijitTab {border-radius: 4px 0 0 4px; -moz-border-radius: 4px 0 0 4px; border-right: 1px solid #B1BADF; border-bottom: 1px solid #B1BADF;}.soria .dijitTabContainerLeft-tabs .dijitTabChecked {border-right: 1px solid #94b4e6; background: url("images/tabLeftChecked.gif") no-repeat right top;}.soria .dijitTabContainerLeft-container {border-left: none;}.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTab,.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTab {border-bottom: solid #B1BADF 1px; margin-bottom: -1px;}.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTab,.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTab,.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTab,.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTab {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: 1px 0;}.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: 0 solid #ccc; border-top: 0 solid #ccc; border-right: 0 solid #ccc; padding-top: 0; padding-left: 0;}.soria .dijitTabContainer .tabStripButton {margin-right: 0;}.soria .dijitTabContainer .tabStripButton-top {margin-top: 1px;}.dj_ie6 .soria .tabStripButton .dijitTabContent,.dj_ie7 .soria .tabStripButton .dijitTabContent {padding-top: 7px;}.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 .dijitTab {background: transparent url("images/tabBottomEnabledSpriteLR.gif") no-repeat scroll right bottom;}.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:0 solid #436496; border-right:0 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:0 solid #436496; border-bottom:0 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: 0;}.soria .dijitSplitterH,.soria .dijitGutterH {background: #E1EBFB; border:0; border-left:0 solid #d3d3d3; border-right:0 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:0 solid #d3d3d3; border-bottom:0 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 {margin: 0 0.1em;}.soria .dijitSelect .dijitButtonContents,.soria .dijitSelect,.soria .dijitTextBox,.soria .dijitTextArea {background:#fff url("images/validationInputBg.png") repeat-x top left; #background:#fff url("images/validationInputBg.gif") repeat-x top left;}.soria .dijitSelect,.soria .dijitTextBox,.soria .dijitTextArea {border:1px solid #8ba0bd;}.soria .dijitSelect .dijitArrowButton,.soria .dijitComboBox .dijitButtonNode {padding: 0 0.2em;}.soria .dijitSelect .dijitButtonContents,.soria .dijitTextBox .dijitButtonNode {border-color: #8ba0bd;}.soria .dijitSelectFocused,.soria .dijitTextBoxFocused,.soria .dijitTextAreaFocused {border-color:#406b9b;}.soria .dijitSelectFocused TD,.soria .dijitTextBoxFocused .dijitButtonNode,.soria .dijitSpinner .dijitUpArrowButtonActive,.soria .dijitSpinner .dijitDownArrowButtonActive {border-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 .dijitValidationTextBoxError .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 .dijitButtonText {text-align: center; padding: 0 0.3em;}.soria .dijitInputField {padding: 0;}.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: 0 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: 0;}.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: 0;}.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:0; 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:0; 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 0 top; #background:url("images/spriteRoundedIconsSmall.gif") no-repeat 0 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: 0 -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 .dijitSelectError .dijitButtonContents,.soria .dijitSelectHover .dijitArrowButton,.soria .dijitSelectActive .dijitArrowButton,.soria .dijitSelectOpened .dijitArrowButton,.soria .dijitSelectDisabled .dijitArrowButton,.soria .dijitSelectReadOnly .dijitArrowButton {background: transparent none;}.soria .dijitSelect .dijitArrowButton {background: #bcd5f0 url("images/buttonEnabled.png") repeat-x top left; border-width: 0;}.soria .dijitSelectDisabled,.soria .dijitSelectDisabled TD {border-color: #b9bbdd !important; background:#c3d3e5 url("images/buttonDisabled.png") top repeat-x;}.dj_ie .soria .dijitSelectDisabled TD * {filter: gray() alpha(opacity=50);}.soria .dijitSelectHover,.soria .dijitSelectHover TD {border-color:#a5beda #5c7590 #5c7590 #a5beda !important; color:#000; background:#acc5e2 url("images/buttonHover.png") repeat-x top left;}.soria .dijitSelectActive,.soria .dijitSelectOpened,.soria .dijitSelectActive TD,.soria .dijitSelectOpened TD {border-color:#657c9c !important; background: #91b4e5 url("images/buttonActive.png") top left repeat-x;}.soria .dijitSelectMenu td {padding: 0;}.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 0 2px 0;}.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: 0;}.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; padding: 0 4px;}.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; font-size: 1.17em;}.soria .dijitCalendarSelectedYear {font-weight:bolder; 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 .dijitCalendar .dijitDropDownButton {margin: 0;}.soria .dijitCalendar .dijitButtonText {padding: 0;}.soria .dijitCalendar .dijitDropDownButton .dijitButtonNode {background-color: transparent; background-image: none; padding: 0;}.soria .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover {background-color: #d9e6f9; color: #243C5F;}.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: 0; padding: 0; 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: 0;}.soria .dijitToolbar .dijitButtonCheckedHover,.soria .dijitToolbar .dijitToggleButtonCheckedHover {background-color:#9abbea; border:1px solid #316ac5; padding: 0;}.soria .dijitToolbar .dijitButtonHover,.soria .dijitToolbar .dijitToggleButtonHover,.soria .dijitToolbar .dijitDropDownButtonHover,.soria .dijitToolbar .dijitComboButton .dijitButtonContentsHover,.soria .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover {border: 1px solid #316ac5; padding: 0; 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: 0;}.soria .dijitDialog {background: #eee; border: 1px solid #cbcbcb; -webkit-box-shadow: 0 5px 10px #adadad; padding: 0;}.soria .dijitDialog .dijitDialogTitle {font-weight: bold; padding: 0 4px; font-size: 0.9em; color: #243C5F;}.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 0; 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:0; z-index: 2;}.soria .dijitTooltipABRight .dijitTooltipConnector {left: auto !important; right: 6px;}.soria .dijitTooltipBelow .dijitTooltipConnector {top: 0; 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: 0; 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;}.soria .dijitTooltipLeft .dijitTooltipConnector {right: 0; 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: 0; 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: 0; padding: 0; background-color: #fff;}.soria .dijitBorderContainer .dijitMenuBar {border:1px solid #B1BADF;}.soria .dijitMenuItem {font-family: sans-serif; margin: 0; color: #243C5F;}.soria .dijitMenuBar .dijitMenuItem {padding: 4px 5px;}.soria .dijitMenuPreviousButton, .soria .dijitMenuNextButton {font-style: italic;}.soria .dijitMenuItem TD {padding:1px;}.soria .dijitMenuPassive .dijitMenuItemHover,.soria .dijitComboBoxMenu .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: 0;}.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: 0 !important;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/soria/soria_rtl.css b/js/3rdparty/resources/dijit/themes/soria/soria_rtl.css
deleted file mode 100644
index ababe4bf..00000000
--- a/js/3rdparty/resources/dijit/themes/soria/soria_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.dijitRtl .dijitPlaceHolder {left: auto; right: 0;}.dijitMenuItemRtl {text-align: right;}.dj_iequirks .dijitComboButtonRtl button {float:left;}.dj_ie .dijitTextBoxRtl .dijitInputContainer {clear: right;}.dijitTextBoxRtl .dijitValidationContainer,.dijitTextBoxRtl .dijitSpinnerButtonContainer,.dijitComboBoxRtl .dijitArrowButtonContainer {border-right-width: 1px !important; border-left-width: 0 !important;}.dijitSpinnerRtl .dijitSpinnerButtonContainer .dijitArrowButton {right: 0; left: auto;}.dijitSelectRtl .dijitButtonText {float: right;}.dijitTextBoxRtl .dijitSpinnerButtonContainer,.dijitValidationTextBoxRtl .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 .dijitIconLoading,.dijitRtl .dijitContentPaneError .dijitIconError {margin-right: 0; margin-left: 9px;}.dijitTabControllerRtl .nowrapTabStrip {text-align: right;}.dijitTabRtl .dijitTabCloseButton {margin-left: 0; margin-right: 1em;}.dj_ie6 .dijitTabRtl .tabLabel,.dj_ie6 .dijitTabContainerRight-tabs .dijitTabRtl,.dj_ie6 .dijitTabContainerLeft-tabs .dijitTabRtl,.dj_ie7 .dijitTabContainerRight-tabs .dijitTabRtl,.dj_ie7 .dijitTabContainerLeft-tabs .dijitTabRtl {zoom: 1;}.dj_ie6 .dijitTabContainerRight-tabs .dijitTabRtl,.dj_ie7 .dijitTabContainerRight-tabs .dijitTabRtl {left: 0;}.dj_ie6 .dijitTabContainerRightRtl .dijitTabContainerRight-tabs,.dj_ie6 .dijitTabContainerLeftRtl .dijitTabContainerLeft-tabs {width: 1%;}.dj_ie .dijitTimePickerRtl .dijitTimePickerItem {width:100%;}.dijitColorPaletteRtl .dijitColorPaletteUnder {left: auto; right: 0;}.dijitSelectRtl .dijitButtonContents {border-style: none none none solid; text-align: right;}.dijitRtl .dojoDndHorizontal .dojoDndItemBefore {border-width: 0 2px 0 0; padding: 2px 0 2px 2px;}.dijitRtl .dojoDndHorizontal .dojoDndItemAfter {border-width: 0 0 0 2px; padding: 2px 2px 2px 0;}.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: 0 !important;}.dj_ie-rtl .soria .dijitTabContainerRight-tabs {margin-right: 0 !important;}.dijitRtl .soria .dijitTabContainerLeft-tabs .dijitTab,.dijitRtl .soria .dijitTabContainerRight-tabs .dijitTab {margin-left:0;}.dj_ie-rtl .soria .dijitTab .dijitTabInnerDiv{width : 1%;}.dijitRtl .soria .dijitAccordionArrow {background-position: 0 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: 0; border-right-width: 1px;}.dijitRtl .soria .dijitSliderRightBumper {border-left-width: 1px; border-right-width: 0;}.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;}.soria .dijitComboBoxRtl .dijitButtonNode {border-width: 0 0 0 1px;}.dijitRtl .soria .dijitTreeNode,.dijitRtl .soria .dijitTreeExpandoLeaf {background-image: none;}.dijitRtl .soria .dijitTreeContent {padding-left: 0; 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: 0 top;}.dj_ie6-rtl .soria .dijitTitlePane .dijitClosed .dijitArrowNode {background-position: 0 top;}.dijitRtl .soria .dijitCalendarDecrease {background-position: -30px top;}.dijitRtl .soria .dijitCalendarIncrease {background-position: 0 top;}.dj_ie6-rtl .soria .dijitTimePickerMarkerHover,.dj_ie7-rtl .soria .dijitTimePickerMarkerHover {border-top: 0;}.dijitRtl .soria .dijitDialogTitleBar .dijitDialogCloseIcon {right: auto; left: 5px;}.dijitRtl .soria .dijitMenuItem .dijitMenuItemIcon {padding-left: 3px; padding-right: 0;}.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");} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/Calendar.css b/js/3rdparty/resources/dijit/themes/tundra/Calendar.css
deleted file mode 100644
index e3efad23..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/Calendar.css
+++ /dev/null
@@ -1 +0,0 @@
-.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:0; border-top: 1px solid #eeeeee; color:#293a4b; text-align:center;}.tundra .dijitCalendarBodyContainer {border-bottom: 1px solid #eeeeee;}.tundra .dijitCalendarMonthLabel {color:#293a4b; font-weight: bold; padding: 0 4px;}.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; font-size: 1.17em;}.tundra .dijitCalendarSelectedYear {font-weight:bolder; color:black; padding:0.2em; padding-bottom:0.1em; background-color:#bbc4d0 !important;}.tundra .dijitCalendarNextYear,.tundra .dijitCalendarPreviousYear {color:black !important; font-weight:normal;}.tundra .dijitCalendar .dijitDropDownButton {margin: 0;}.tundra .dijitCalendar .dijitButtonText {padding: 0;}.tundra .dijitCalendar .dijitDropDownButton .dijitButtonNode {background-color: transparent; background-image: none; padding: 0;}.tundra .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover {background-color: #3559ac; color:#fff;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/Calendar_rtl.css b/js/3rdparty/resources/dijit/themes/tundra/Calendar_rtl.css
deleted file mode 100644
index 94367e9d..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/Calendar_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.tundra .dijitCalendarRtl .dijitCalendarDecrease {background-position: -30px top;}.tundra .dijitCalendarRtl .dijitCalendarIncrease {background-position: 0 top;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/ColorPalette.css b/js/3rdparty/resources/dijit/themes/tundra/ColorPalette.css
deleted file mode 100644
index ba1e4939..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/ColorPalette.css
+++ /dev/null
@@ -1 +0,0 @@
-.dijitColorPalette {border:1px solid #7eabcd; background:#fff; -moz-border-radius: 0 !important;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/Common.css b/js/3rdparty/resources/dijit/themes/tundra/Common.css
deleted file mode 100644
index a6b01ee5..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/Common.css
+++ /dev/null
@@ -1 +0,0 @@
-.tundra .dojoDndItemOver {background-image: url(images/treeHover.png);}.tundra .dojoDndItemAnchor,.tundra .dojoDndItemSelected {background-color: #E2EBFE;}.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 .dijitIconLoading {background:url('images/loading.gif') no-repeat left center; width: 24px; height: 24px;}.tundra .dijitIconError {background:url('images/warning.png') no-repeat left center; width: 16px; height: 16px;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/Dialog.css b/js/3rdparty/resources/dijit/themes/tundra/Dialog.css
deleted file mode 100644
index 97f5c030..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/Dialog.css
+++ /dev/null
@@ -1 +0,0 @@
-.tundra .dijitDialog {background: #fff; border: 1px solid #7eabcd; padding: 0; -webkit-box-shadow: 0 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: 0 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:0; z-index: 2;}.tundra .dijitTooltipABRight .dijitTooltipConnector {left: auto !important; right: 3px;}.tundra .dijitTooltipBelow .dijitTooltipConnector {top: 0; 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: 0; 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;}.tundra .dijitTooltipLeft .dijitTooltipConnector {right: 0; 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: 0; 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: 0 5px 10px #adadad;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/Dialog_rtl.css b/js/3rdparty/resources/dijit/themes/tundra/Dialog_rtl.css
deleted file mode 100644
index 9d9c6ac8..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/Dialog_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.tundra .dijitDialogRtl .dijitDialogCloseIcon {right: auto; left: 5px;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/Editor.css b/js/3rdparty/resources/dijit/themes/tundra/Editor.css
deleted file mode 100644
index f7f80e86..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/Editor.css
+++ /dev/null
@@ -1 +0,0 @@
-.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');} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/Editor_rtl.css b/js/3rdparty/resources/dijit/themes/tundra/Editor_rtl.css
deleted file mode 100644
index efe1dbd4..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/Editor_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.tundra .dijitEditorRtl .dijitEditorIcon {background-image: url('../../icons/images/editorIconsEnabled_rtl.png');}.tundra .dijitEditorRtlDisabled .dijitEditorIcon {background-image: url('../../icons/images/editorIconsDisabled_rtl.png');} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/Menu.css b/js/3rdparty/resources/dijit/themes/tundra/Menu.css
deleted file mode 100644
index 0be3f4fd..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/Menu.css
+++ /dev/null
@@ -1 +0,0 @@
-.tundra .dijitMenu,.tundra .dijitMenuBar {border: 1px solid #7eabcd; margin: 0; padding: 0; 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 .dijitComboBoxMenu .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 0;}.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/Menu_rtl.css b/js/3rdparty/resources/dijit/themes/tundra/Menu_rtl.css
deleted file mode 100644
index 538fbca4..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/Menu_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.tundra .dijitMenuItemRtl .dijitMenuExpand {background-position: -7px 0;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/ProgressBar.css b/js/3rdparty/resources/dijit/themes/tundra/ProgressBar.css
deleted file mode 100644
index 826abe45..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/ProgressBar.css
+++ /dev/null
@@ -1 +0,0 @@
-.tundra .dijitProgressBar {margin:2px 0 2px 0;}.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/TimePicker.css b/js/3rdparty/resources/dijit/themes/tundra/TimePicker.css
deleted file mode 100644
index 3753e006..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/TimePicker.css
+++ /dev/null
@@ -1 +0,0 @@
-.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/TimePicker_rtl.css b/js/3rdparty/resources/dijit/themes/tundra/TimePicker_rtl.css
deleted file mode 100644
index c4b8e05e..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/TimePicker_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
- .dj_ie6 .tundra .dijitTimePickerRtl .dijitTimePickerMarkerHover,.dj_ie7 .tundra .dijitTimePickerRtl .dijitTimePickerMarkerHover {border-top: 0;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/TitlePane.css b/js/3rdparty/resources/dijit/themes/tundra/TitlePane.css
deleted file mode 100644
index 56098114..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/TitlePane.css
+++ /dev/null
@@ -1 +0,0 @@
-.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: 0 0; height: 7px; width: 7px;}.dj_ie6 .tundra .dijitTitlePane .dijitArrowNode {background-image: url('images/spriteArrows.gif');}.tundra .dijitTitlePane .dijitClosed .dijitArrowNode {background-position: -14px 0;}.tundra .dijitTitlePaneContentOuter {background: #ffffff; border:1px solid #bfbfbf; border-top: 0;}.tundra .dijitTitlePaneContentInner {padding:10px;}.tundra .dijitTitlePaneTextNode {margin-left: 4px; margin-right: 4px;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/TitlePane_rtl.css b/js/3rdparty/resources/dijit/themes/tundra/TitlePane_rtl.css
deleted file mode 100644
index 6f0f8a84..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/TitlePane_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.tundra .dijitTitlePaneRtl .dijitClosed .dijitArrowNode {background-position: -7px 0;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/Toolbar.css b/js/3rdparty/resources/dijit/themes/tundra/Toolbar.css
deleted file mode 100644
index ce0a8693..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/Toolbar.css
+++ /dev/null
@@ -1 +0,0 @@
-.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: 0; padding: 0; 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: 0;}.tundra .dijitToolbar .dijitButtonCheckedHover,.tundra .dijitToolbar .dijitToggleButtonCheckedHover {background-color:#abc1e5; border:1px solid #316ac5; padding: 0;}.tundra .dijitToolbar .dijitButtonHover,.tundra .dijitToolbar .dijitToggleButtonHover,.tundra .dijitToolbar .dijitDropDownButtonHover,.tundra .dijitToolbar .dijitComboButton .dijitButtonContentsHover,.tundra .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover {border: 1px solid #869cbf; padding: 0; 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: 0;}.tundra .dijitToolbarSeparator {background: url('../../icons/images/editorIconsEnabled.png');}.tundra .dijitToolbarRtl .dijitToolbarSeparator {background-image: url('../../icons/images/editorIconsDisabled.png');} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/Tree.css b/js/3rdparty/resources/dijit/themes/tundra/Tree.css
deleted file mode 100644
index 6224c070..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/Tree.css
+++ /dev/null
@@ -1 +0,0 @@
-.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/Tree_rtl.css b/js/3rdparty/resources/dijit/themes/tundra/Tree_rtl.css
deleted file mode 100644
index 9c190882..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/Tree_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.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');} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/form/Button.css b/js/3rdparty/resources/dijit/themes/tundra/form/Button.css
deleted file mode 100644
index f535dc03..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/form/Button.css
+++ /dev/null
@@ -1 +0,0 @@
-.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 .dijitInputField {padding: 0;}.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 0 center; width: 7px; height: 7px; margin: 0 4px 0 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_ie .tundra .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner {margin-top: -2px;}.dj_webkit .tundra .dijitSpinner .dijitUpArrowButton .dijitArrowButtonInner,.dj_iequirks .tundra .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner,.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/form/Checkbox.css b/js/3rdparty/resources/dijit/themes/tundra/form/Checkbox.css
deleted file mode 100644
index 3ad8c261..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/form/Checkbox.css
+++ /dev/null
@@ -1 +0,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: 0;}.tundra .dijitCheckBoxDisabled {background-position: -48px;}.tundra .dijitCheckBoxCheckedDisabled {background-position: -32px;}.tundra .dijitCheckBoxHover {background-position: -80px;}.tundra .dijitCheckBoxCheckedHover {background-position: -64px;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/form/Common.css b/js/3rdparty/resources/dijit/themes/tundra/form/Common.css
deleted file mode 100644
index cac6046a..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/form/Common.css
+++ /dev/null
@@ -1 +0,0 @@
-.tundra .dijitInputContainer input {margin: 0 0.1em;}.tundra .dijitTextArea {padding: 3px;}.tundra .dijitSelect .dijitButtonContents,.tundra .dijitSelect,.tundra .dijitTextBox {background:#fff url("../images/validationInputBg.png") repeat-x top left; #background:#fff url('../images/validationInputBg.gif') repeat-x top left;}.tundra .dijitSelect,.tundra .dijitTextBox {border:1px solid #b3b3b3;}.tundra .dijitSelect .dijitArrowButton,.tundra .dijitComboBox .dijitButtonNode {padding: 0 0.2em;}.tundra .dijitSelect .dijitButtonContents,.tundra .dijitTextBox .dijitButtonNode {border-color: #9b9b9b;}.tundra .dijitSelectFocused,.tundra .dijitTextBoxFocused {border-color:#406b9b;}.tundra .dijitSelectFocused TD,.tundra .dijitTextBoxFocused .dijitButtonNode {border-color:#366dba;}.tundra .dijitError {background-color:#f9f7ba; background-image:none;}.tundra .dijitErrorFocused {background-color:#f9f999; background-image:none;}.tundra .dijitValidationTextBoxError .dijitValidationIcon {width: 16px; background: transparent url('../images/warning.png') no-repeat center center;}.tundra .dijitComboBoxHighlightMatch {background-color:#a5beda;}.tundra .dijitFocusedLabel {outline: 1px dotted #666666;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/form/RadioButton.css b/js/3rdparty/resources/dijit/themes/tundra/form/RadioButton.css
deleted file mode 100644
index f0f92a70..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/form/RadioButton.css
+++ /dev/null
@@ -1 +0,0 @@
-.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/form/Select.css b/js/3rdparty/resources/dijit/themes/tundra/form/Select.css
deleted file mode 100644
index 6df823c4..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/form/Select.css
+++ /dev/null
@@ -1 +0,0 @@
-.tundra .dijitSelectError .dijitButtonContents,.tundra .dijitSelectHover .dijitArrowButton,.tundra .dijitSelectActive .dijitArrowButton,.tundra .dijitSelectOpened .dijitArrowButton,.tundra .dijitSelectDisabled .dijitArrowButton,.tundra .dijitSelectReadOnly .dijitArrowButton {background: transparent none;}.tundra .dijitSelect .dijitArrowButton {background: #fff url("../images/buttonEnabled.png") repeat-x bottom left; border-width: 0;}.tundra .dijitSelectDisabled,.tundra .dijitSelectDisabled TD {border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5 !important; background:#e4e4e4 url("../images/buttonDisabled.png") top repeat-x;}.dj_ie .tundra .dijitSelectDisabled TD * {filter: gray() alpha(opacity=50);}.tundra .dijitSelectHover,.tundra .dijitSelectHover TD {border-color:#a5beda #5c7590 #5c7590 #a5beda !important; color:#243C5F; background:#fcfdff url("../images/buttonHover.png") repeat-x bottom;}.tundra .dijitSelectActive,.tundra .dijitSelectOpened,.tundra .dijitSelectActive TD,.tundra .dijitSelectOpened TD {border-color:#366dba !important; background: #ededed url("../images/buttonActive.png") bottom repeat-x;}.tundra .dijitSelectMenu td {padding: 0;}.tundra .dijitSelectMenu .dijitMenuItemLabel,.tundra .dijitSelectMenu .dijitMenuArrowCell {padding: 0.1em 0.2em;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/form/Slider.css b/js/3rdparty/resources/dijit/themes/tundra/form/Slider.css
deleted file mode 100644
index 168d93c2..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/form/Slider.css
+++ /dev/null
@@ -1 +0,0 @@
-.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:0; 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:0; 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 0;}.tundra .dijitSliderIncrementIconH {background-position: -14px 0;}.tundra .dijitSliderDecrementIconV {background-position: 0 0;}.tundra .dijitSliderIncrementIconV {background-position: -21px 0;}.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 0;}.tundra .dijitSliderReadOnly .dijitSliderIncrementIconH,.tundra .dijitSliderDisabled .dijitSliderIncrementIconH {background-position: -42px 0;}.tundra .dijitSliderReadOnly .dijitSliderDecrementIconV,.tundra .dijitSliderDisabled .dijitSliderDecrementIconV {background-position: -28px 0;}.tundra .dijitSliderReadOnly .dijitSliderIncrementIconV,.tundra .dijitSliderDisabled .dijitSliderIncrementIconV {background-position: -49px 0;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/form/Slider_rtl.css b/js/3rdparty/resources/dijit/themes/tundra/form/Slider_rtl.css
deleted file mode 100644
index 2767a6d0..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/form/Slider_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.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: 0; border-right-width: 1px;}.tundra .dijitSliderRtl .dijitSliderRightBumper {border-left-width: 1px; border-right-width: 0;}.tundra .dijitSliderRtl .dijitSliderIncrementIconH {background-position: -7px 0;}.tundra .dijitSliderRtl .dijitSliderDecrementIconH {background-position: -14px 0;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/accordionItemActive.gif b/js/3rdparty/resources/dijit/themes/tundra/images/accordionItemActive.gif
deleted file mode 100644
index ccff3835..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/accordionItemActive.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/accordionItemHover.gif b/js/3rdparty/resources/dijit/themes/tundra/images/accordionItemHover.gif
deleted file mode 100644
index 96bd3a43..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/accordionItemHover.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/buttonActive.png b/js/3rdparty/resources/dijit/themes/tundra/images/buttonActive.png
deleted file mode 100644
index 09417b1a..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/buttonActive.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/buttonDisabled.png b/js/3rdparty/resources/dijit/themes/tundra/images/buttonDisabled.png
deleted file mode 100644
index 70766f4f..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/buttonDisabled.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/buttonEnabled.png b/js/3rdparty/resources/dijit/themes/tundra/images/buttonEnabled.png
deleted file mode 100644
index cf0eb205..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/buttonEnabled.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/buttonHover.png b/js/3rdparty/resources/dijit/themes/tundra/images/buttonHover.png
deleted file mode 100644
index b074e4ed..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/buttonHover.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/calendarDayLabel.png b/js/3rdparty/resources/dijit/themes/tundra/images/calendarDayLabel.png
deleted file mode 100644
index c1a1553e..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/calendarDayLabel.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/calendarMonthLabel.png b/js/3rdparty/resources/dijit/themes/tundra/images/calendarMonthLabel.png
deleted file mode 100644
index fd2cf0ab..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/calendarMonthLabel.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/calendarYearLabel.png b/js/3rdparty/resources/dijit/themes/tundra/images/calendarYearLabel.png
deleted file mode 100644
index dd344f54..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/calendarYearLabel.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/checkmark.gif b/js/3rdparty/resources/dijit/themes/tundra/images/checkmark.gif
deleted file mode 100644
index ae6faa95..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/checkmark.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/checkmark.png b/js/3rdparty/resources/dijit/themes/tundra/images/checkmark.png
deleted file mode 100644
index 0307109b..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/checkmark.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/checkmarkNoBorder.gif b/js/3rdparty/resources/dijit/themes/tundra/images/checkmarkNoBorder.gif
deleted file mode 100644
index 324bfb3c..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/checkmarkNoBorder.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/checkmarkNoBorder.png b/js/3rdparty/resources/dijit/themes/tundra/images/checkmarkNoBorder.png
deleted file mode 100644
index 9cec0c0a..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/checkmarkNoBorder.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/circleIcon.gif b/js/3rdparty/resources/dijit/themes/tundra/images/circleIcon.gif
deleted file mode 100644
index d582290a..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/circleIcon.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/circleIcon.png b/js/3rdparty/resources/dijit/themes/tundra/images/circleIcon.png
deleted file mode 100644
index 6f059e61..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/circleIcon.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/comboArrowDown.gif b/js/3rdparty/resources/dijit/themes/tundra/images/comboArrowDown.gif
deleted file mode 100644
index e00a87b3..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/comboArrowDown.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/dijitProgressBarAnim.gif b/js/3rdparty/resources/dijit/themes/tundra/images/dijitProgressBarAnim.gif
deleted file mode 100644
index 167a3e0d..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/dijitProgressBarAnim.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/dijitProgressBarAnim.psd b/js/3rdparty/resources/dijit/themes/tundra/images/dijitProgressBarAnim.psd
deleted file mode 100644
index 0a7bf23a..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/dijitProgressBarAnim.psd
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/dndCopy.png b/js/3rdparty/resources/dijit/themes/tundra/images/dndCopy.png
deleted file mode 100644
index baecd7cf..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/dndCopy.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/dndMove.png b/js/3rdparty/resources/dijit/themes/tundra/images/dndMove.png
deleted file mode 100644
index 07f878cf..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/dndMove.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/dndNoCopy.png b/js/3rdparty/resources/dijit/themes/tundra/images/dndNoCopy.png
deleted file mode 100644
index 998c2f26..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/dndNoCopy.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/dndNoMove.png b/js/3rdparty/resources/dijit/themes/tundra/images/dndNoMove.png
deleted file mode 100644
index e909173e..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/dndNoMove.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/dojoTundraGradientBg.gif b/js/3rdparty/resources/dijit/themes/tundra/images/dojoTundraGradientBg.gif
deleted file mode 100644
index 0da12393..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/dojoTundraGradientBg.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/dojoTundraGradientBg.png b/js/3rdparty/resources/dijit/themes/tundra/images/dojoTundraGradientBg.png
deleted file mode 100644
index ac118dd7..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/dojoTundraGradientBg.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/doubleArrowDown.png b/js/3rdparty/resources/dijit/themes/tundra/images/doubleArrowDown.png
deleted file mode 100644
index 92678d2f..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/doubleArrowDown.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/doubleArrowUp.png b/js/3rdparty/resources/dijit/themes/tundra/images/doubleArrowUp.png
deleted file mode 100644
index bba30fe9..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/doubleArrowUp.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/folderClosed.gif b/js/3rdparty/resources/dijit/themes/tundra/images/folderClosed.gif
deleted file mode 100644
index 9d5fcbc6..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/folderClosed.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/folderOpened.gif b/js/3rdparty/resources/dijit/themes/tundra/images/folderOpened.gif
deleted file mode 100644
index a514c7bf..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/folderOpened.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/i.gif b/js/3rdparty/resources/dijit/themes/tundra/images/i.gif
deleted file mode 100644
index ebd95a7a..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/i.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/i_half.gif b/js/3rdparty/resources/dijit/themes/tundra/images/i_half.gif
deleted file mode 100644
index 2947c4fa..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/i_half.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/i_half_rtl.gif b/js/3rdparty/resources/dijit/themes/tundra/images/i_half_rtl.gif
deleted file mode 100644
index 4f60ec44..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/i_half_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/i_rtl.gif b/js/3rdparty/resources/dijit/themes/tundra/images/i_rtl.gif
deleted file mode 100644
index 7dafaade..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/i_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/leaf.gif b/js/3rdparty/resources/dijit/themes/tundra/images/leaf.gif
deleted file mode 100644
index 85b01781..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/leaf.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/loading.gif b/js/3rdparty/resources/dijit/themes/tundra/images/loading.gif
deleted file mode 100644
index 6e7c8e5e..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/loading.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/menu.png b/js/3rdparty/resources/dijit/themes/tundra/images/menu.png
deleted file mode 100644
index f5b93d11..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/menu.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/minusButton.gif b/js/3rdparty/resources/dijit/themes/tundra/images/minusButton.gif
deleted file mode 100644
index 48d51724..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/minusButton.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/no.gif b/js/3rdparty/resources/dijit/themes/tundra/images/no.gif
deleted file mode 100644
index 9021a14e..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/no.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/noX.gif b/js/3rdparty/resources/dijit/themes/tundra/images/noX.gif
deleted file mode 100644
index 4a16dc79..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/noX.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/plusButton.gif b/js/3rdparty/resources/dijit/themes/tundra/images/plusButton.gif
deleted file mode 100644
index 103c021d..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/plusButton.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/popupMenuBg.gif b/js/3rdparty/resources/dijit/themes/tundra/images/popupMenuBg.gif
deleted file mode 100644
index 15f4f1b8..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/popupMenuBg.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/preciseSliderThumb.gif b/js/3rdparty/resources/dijit/themes/tundra/images/preciseSliderThumb.gif
deleted file mode 100644
index 15d4879c..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/preciseSliderThumb.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/preciseSliderThumb.png b/js/3rdparty/resources/dijit/themes/tundra/images/preciseSliderThumb.png
deleted file mode 100644
index f2fc3387..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/preciseSliderThumb.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/preciseSliderThumbFocus.gif b/js/3rdparty/resources/dijit/themes/tundra/images/preciseSliderThumbFocus.gif
deleted file mode 100644
index b44611c7..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/preciseSliderThumbFocus.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/preciseSliderThumbFocus.png b/js/3rdparty/resources/dijit/themes/tundra/images/preciseSliderThumbFocus.png
deleted file mode 100644
index fb063237..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/preciseSliderThumbFocus.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-1.png b/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-1.png
deleted file mode 100644
index cfc3fd2c..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-1.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-2.png b/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-2.png
deleted file mode 100644
index d27981d6..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-2.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-3.png b/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-3.png
deleted file mode 100644
index 3b92a7db..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-3.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-4.png b/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-4.png
deleted file mode 100644
index 61e4276c..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-4.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-5.png b/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-5.png
deleted file mode 100644
index 48b189ae..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-5.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-6.png b/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-6.png
deleted file mode 100644
index af50c4d5..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-6.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-7.png b/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-7.png
deleted file mode 100644
index a4fffa30..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-7.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-8.png b/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-8.png
deleted file mode 100644
index b4c92f31..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-8.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-9.png b/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-9.png
deleted file mode 100644
index d8bff13a..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim-9.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim.gif b/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim.gif
deleted file mode 100644
index d3df139d..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim.psd b/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim.psd
deleted file mode 100644
index 0a7bf23a..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarAnim.psd
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarEmpty.png b/js/3rdparty/resources/dijit/themes/tundra/images/progressBarEmpty.png
deleted file mode 100644
index 07f4c91e..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarEmpty.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarFull.png b/js/3rdparty/resources/dijit/themes/tundra/images/progressBarFull.png
deleted file mode 100644
index 0ce60f55..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/progressBarFull.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/radioButtonActive.png b/js/3rdparty/resources/dijit/themes/tundra/images/radioButtonActive.png
deleted file mode 100644
index 60840c78..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/radioButtonActive.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/radioButtonActiveDisabled.png b/js/3rdparty/resources/dijit/themes/tundra/images/radioButtonActiveDisabled.png
deleted file mode 100644
index b49724e5..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/radioButtonActiveDisabled.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/radioButtonActiveHover.png b/js/3rdparty/resources/dijit/themes/tundra/images/radioButtonActiveHover.png
deleted file mode 100644
index f21d4e5e..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/radioButtonActiveHover.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/radioButtonDisabled.png b/js/3rdparty/resources/dijit/themes/tundra/images/radioButtonDisabled.png
deleted file mode 100644
index 8da7e78f..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/radioButtonDisabled.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/radioButtonEnabled.png b/js/3rdparty/resources/dijit/themes/tundra/images/radioButtonEnabled.png
deleted file mode 100644
index 4342feaf..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/radioButtonEnabled.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/radioButtonHover.png b/js/3rdparty/resources/dijit/themes/tundra/images/radioButtonHover.png
deleted file mode 100644
index fcb697fb..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/radioButtonHover.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/sliderEmpty.png b/js/3rdparty/resources/dijit/themes/tundra/images/sliderEmpty.png
deleted file mode 100644
index 070c12f5..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/sliderEmpty.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/sliderEmptyVertical.png b/js/3rdparty/resources/dijit/themes/tundra/images/sliderEmptyVertical.png
deleted file mode 100644
index 45aceb7b..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/sliderEmptyVertical.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/sliderFull.png b/js/3rdparty/resources/dijit/themes/tundra/images/sliderFull.png
deleted file mode 100644
index 4b3fcbb0..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/sliderFull.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/sliderFullFocus.png b/js/3rdparty/resources/dijit/themes/tundra/images/sliderFullFocus.png
deleted file mode 100644
index ee193560..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/sliderFullFocus.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/sliderFullVertical.png b/js/3rdparty/resources/dijit/themes/tundra/images/sliderFullVertical.png
deleted file mode 100644
index e7618e83..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/sliderFullVertical.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/sliderFullVerticalFocus.png b/js/3rdparty/resources/dijit/themes/tundra/images/sliderFullVerticalFocus.png
deleted file mode 100644
index 3ab37e6c..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/sliderFullVerticalFocus.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/sliderThumb.png b/js/3rdparty/resources/dijit/themes/tundra/images/sliderThumb.png
deleted file mode 100644
index fe335835..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/sliderThumb.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/sliderThumbFocus.gif b/js/3rdparty/resources/dijit/themes/tundra/images/sliderThumbFocus.gif
deleted file mode 100644
index 15dd3d9d..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/sliderThumbFocus.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/sliderThumbFocus.png b/js/3rdparty/resources/dijit/themes/tundra/images/sliderThumbFocus.png
deleted file mode 100644
index fe9763a4..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/sliderThumbFocus.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/smallArrowDown.png b/js/3rdparty/resources/dijit/themes/tundra/images/smallArrowDown.png
deleted file mode 100644
index cabd01cd..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/smallArrowDown.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/smallArrowUp.png b/js/3rdparty/resources/dijit/themes/tundra/images/smallArrowUp.png
deleted file mode 100644
index a4dd6706..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/smallArrowUp.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/splitContainerSizerH-thumb.png b/js/3rdparty/resources/dijit/themes/tundra/images/splitContainerSizerH-thumb.png
deleted file mode 100644
index e7bc204d..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/splitContainerSizerH-thumb.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/splitContainerSizerH.png b/js/3rdparty/resources/dijit/themes/tundra/images/splitContainerSizerH.png
deleted file mode 100644
index 0e5e4715..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/splitContainerSizerH.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/splitContainerSizerV-thumb.png b/js/3rdparty/resources/dijit/themes/tundra/images/splitContainerSizerV-thumb.png
deleted file mode 100644
index 410a0a7a..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/splitContainerSizerV-thumb.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/splitContainerSizerV.png b/js/3rdparty/resources/dijit/themes/tundra/images/splitContainerSizerV.png
deleted file mode 100644
index 6781f0ea..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/splitContainerSizerV.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/spriteArrows.gif b/js/3rdparty/resources/dijit/themes/tundra/images/spriteArrows.gif
deleted file mode 100644
index 56a37f43..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/spriteArrows.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/spriteArrows.png b/js/3rdparty/resources/dijit/themes/tundra/images/spriteArrows.png
deleted file mode 100644
index e0229c9f..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/spriteArrows.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/spriteRoundedIconsSmall.gif b/js/3rdparty/resources/dijit/themes/tundra/images/spriteRoundedIconsSmall.gif
deleted file mode 100644
index 251389a2..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/spriteRoundedIconsSmall.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/spriteRoundedIconsSmall.png b/js/3rdparty/resources/dijit/themes/tundra/images/spriteRoundedIconsSmall.png
deleted file mode 100644
index e81ba07f..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/spriteRoundedIconsSmall.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/tabActive.png b/js/3rdparty/resources/dijit/themes/tundra/images/tabActive.png
deleted file mode 100644
index eaf1ed48..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/tabActive.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/tabClose.gif b/js/3rdparty/resources/dijit/themes/tundra/images/tabClose.gif
deleted file mode 100644
index 2cb0ee1f..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/tabClose.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/tabClose.png b/js/3rdparty/resources/dijit/themes/tundra/images/tabClose.png
deleted file mode 100644
index 136cd220..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/tabClose.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/tabCloseHover.gif b/js/3rdparty/resources/dijit/themes/tundra/images/tabCloseHover.gif
deleted file mode 100644
index f59471e6..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/tabCloseHover.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/tabCloseHover.png b/js/3rdparty/resources/dijit/themes/tundra/images/tabCloseHover.png
deleted file mode 100644
index 290e77f5..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/tabCloseHover.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/tabDisabled.png b/js/3rdparty/resources/dijit/themes/tundra/images/tabDisabled.png
deleted file mode 100644
index ea0f6172..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/tabDisabled.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/tabEnabled.png b/js/3rdparty/resources/dijit/themes/tundra/images/tabEnabled.png
deleted file mode 100644
index d40cf452..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/tabEnabled.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/tabHover.gif b/js/3rdparty/resources/dijit/themes/tundra/images/tabHover.gif
deleted file mode 100644
index 471e0eee..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/tabHover.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/tabHover.png b/js/3rdparty/resources/dijit/themes/tundra/images/tabHover.png
deleted file mode 100644
index 16487f1d..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/tabHover.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/titleBar.png b/js/3rdparty/resources/dijit/themes/tundra/images/titleBar.png
deleted file mode 100644
index b2609f37..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/titleBar.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/titleBarBg.gif b/js/3rdparty/resources/dijit/themes/tundra/images/titleBarBg.gif
deleted file mode 100644
index 1cd57cf5..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/titleBarBg.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorDown.gif b/js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorDown.gif
deleted file mode 100644
index 18b27951..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorDown.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorDown.png b/js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorDown.png
deleted file mode 100644
index 1aff5a3c..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorDown.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorLeft.gif b/js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorLeft.gif
deleted file mode 100644
index 3d9cbc54..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorLeft.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorLeft.png b/js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorLeft.png
deleted file mode 100644
index e68fec3d..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorLeft.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorRight.gif b/js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorRight.gif
deleted file mode 100644
index 2b887f79..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorRight.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorRight.png b/js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorRight.png
deleted file mode 100644
index dc2434a1..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorRight.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorUp.gif b/js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorUp.gif
deleted file mode 100644
index d0cad8a2..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorUp.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorUp.png b/js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorUp.png
deleted file mode 100644
index 55a378b8..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/tooltipConnectorUp.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_leaf.gif b/js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_leaf.gif
deleted file mode 100644
index 4b1c6c15..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_leaf.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_leaf_rtl.gif b/js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_leaf_rtl.gif
deleted file mode 100644
index b563d7c6..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_leaf_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_loading.gif b/js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_loading.gif
deleted file mode 100644
index 424d376a..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_loading.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_minus.gif b/js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_minus.gif
deleted file mode 100644
index 59777823..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_minus.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_minus_rtl.gif b/js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_minus_rtl.gif
deleted file mode 100644
index cf50054b..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_minus_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_mius.gif b/js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_mius.gif
deleted file mode 100644
index 59777823..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_mius.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_plus.gif b/js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_plus.gif
deleted file mode 100644
index 2b96a555..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_plus.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_plus_rtl.gif b/js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_plus_rtl.gif
deleted file mode 100644
index 11f99167..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/treeExpand_plus_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/treeHover.png b/js/3rdparty/resources/dijit/themes/tundra/images/treeHover.png
deleted file mode 100644
index cd6d28be..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/treeHover.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/validationInputBg.gif b/js/3rdparty/resources/dijit/themes/tundra/images/validationInputBg.gif
deleted file mode 100644
index 5a9916a6..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/validationInputBg.gif
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/validationInputBg.png b/js/3rdparty/resources/dijit/themes/tundra/images/validationInputBg.png
deleted file mode 100644
index d222fb4e..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/validationInputBg.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/images/warning.png b/js/3rdparty/resources/dijit/themes/tundra/images/warning.png
deleted file mode 100644
index c52f83dc..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/images/warning.png
+++ /dev/null
Binary files differ
diff --git a/js/3rdparty/resources/dijit/themes/tundra/layout/AccordionContainer.css b/js/3rdparty/resources/dijit/themes/tundra/layout/AccordionContainer.css
deleted file mode 100644
index 0f04a0e8..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/layout/AccordionContainer.css
+++ /dev/null
@@ -1 +0,0 @@
-.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/layout/BorderContainer.css b/js/3rdparty/resources/dijit/themes/tundra/layout/BorderContainer.css
deleted file mode 100644
index 1f0a30f9..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/layout/BorderContainer.css
+++ /dev/null
@@ -1 +0,0 @@
-.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: 0;}.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/layout/ContentPane.css b/js/3rdparty/resources/dijit/themes/tundra/layout/ContentPane.css
deleted file mode 100644
index 623396bb..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/layout/ContentPane.css
+++ /dev/null
@@ -1 +0,0 @@
-.tundra .dijitContentPane {padding: 0;}.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/layout/SplitContainer.css b/js/3rdparty/resources/dijit/themes/tundra/layout/SplitContainer.css
deleted file mode 100644
index 503aa21c..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/layout/SplitContainer.css
+++ /dev/null
@@ -1 +0,0 @@
-.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/layout/TabContainer.css b/js/3rdparty/resources/dijit/themes/tundra/layout/TabContainer.css
deleted file mode 100644
index 0ac8b953..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/layout/TabContainer.css
+++ /dev/null
@@ -1 +0,0 @@
-.tundra .dijitTabPaneWrapper {background:#fff; border:1px solid #ccc; margin: 0; padding: 0;}.tundra .dijitTab {line-height:normal; margin-right:4px; padding:2px 8px 2px 9px; border:1px solid #ccc; background:#e2e2e2 url("../images/tabEnabled.png") repeat-x;}.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: 0; 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: 0;}.tundra .dijitTabContainerTabListNested .dijitTabHover .tabLabel {text-decoration: underline;}.tundra .dijitTabContainerTabListNested .dijitTabChecked .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: 0; border-color: #cccccc; padding-left: 3px; background-position: bottom;}.tundra .dijitTabContainerTop-tabs .dijitTab {top: 0; 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: 0;}.tundra .dijitTabContainerBottom-tabs {margin-top: 0; border-color: #cccccc; background-position: top; padding-left: 3px;}.tundra .dijitTabContainerBottom-tabs .dijitTab {bottom: 0; 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:0; margin-bottom:4px;}.tundra .dijitTabContainerTop-dijitContentPane .dijitTabContainerTop-tabs {border-left: 0 solid #ccc; border-top: 0 solid #ccc; border-right: 0 solid #ccc; padding-top: 0; padding-left: 0;}.tundra .dijitTabContainer .tabStripButton {margin-right: 0; padding-top: 2px; z-index: 12;}.tundra .dijitTabContainerBottom .tabStripButton {padding-top: 3px;}.tundra .tabStrip-disabled .tabStripButton {padding-bottom: 3px; padding-top: 1px;}.tundra .tabStripButton {padding: 3px 2px 4px 2px;}.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;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/layout/TabContainer_rtl.css b/js/3rdparty/resources/dijit/themes/tundra/layout/TabContainer_rtl.css
deleted file mode 100644
index 94dbd77d..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/layout/TabContainer_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.tundra .dijitTabRtl {padding:2px 9px 2px 8px;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/tundra.css b/js/3rdparty/resources/dijit/themes/tundra/tundra.css
deleted file mode 100644
index cde1d289..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/tundra.css
+++ /dev/null
@@ -1 +0,0 @@
-.dijitReset {margin:0; border:0; padding:0; line-height:normal; font: inherit; color: inherit;}.dj_a11y .dijitReset {-moz-appearance: none;}.dijitInline {display:inline-block; #zoom: 1; #display:inline; border:0; padding:0; vertical-align:middle; #vertical-align: auto;}table.dijitInline {display:inline-table; box-sizing: content-box; -moz-box-sizing: content-box;}.dijitHidden {display: none !important;}.dijitVisible {display: block !important; position: relative;}.dj_ie6 .dijitComboBox .dijitInputContainer,.dijitInputContainer {#zoom: 1; overflow: hidden; float: none !important; position: relative;}.dj_ie7 .dijitInputContainer {float: left !important; clear: left; display: inline-block !important;}.dj_ie .dijitSelect input,.dj_ie input.dijitTextBox,.dj_ie .dijitTextBox input {font-size: 100%;}.dijitSelect .dijitButtonText {float: left; vertical-align: top;}TABLE.dijitSelect {padding: 0 !important;}.dijitTextBox .dijitSpinnerButtonContainer,.dijitTextBox .dijitArrowButtonContainer,.dijitValidationTextBox .dijitValidationContainer {float: right; text-align: center;}.dijitSelect input.dijitInputField,.dijitTextBox input.dijitInputField {padding-left: 0 !important; padding-right: 0 !important;}.dijitValidationTextBox .dijitValidationContainer {display: none;}.dijitTeeny {font-size:1px; line-height:1px;}.dijitOffScreen {position: absolute !important; left: 50% !important; top: -10000px !important;}.dijitPopup {position: absolute; background-color: transparent; margin: 0; border: 0; padding: 0;}.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;}.dj_a11y .dijitIcon,.dj_a11y div.dijitArrowButtonInner, .dj_a11y span.dijitArrowButtonInner,.dj_a11y img.dijitArrowButtonInner,.dj_a11y .dijitCalendarIncrementControl,.dj_a11y .dijitTreeExpando {display: none;}.dijitSpinner div.dijitArrowButtonInner {display: block;}.dj_a11y .dijitA11ySideArrow {display: inline !important; cursor: pointer;}.dj_a11y .dijitCalendarDateLabel {padding: 1px; border: 0px !important;}.dj_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {border-style: solid !important; border-width: 1px !important; padding: 0;}.dj_a11y .dijitCalendarDateTemplate {padding-bottom: 0.1em !important; border: 0px !important;}.dj_a11y .dijitButtonNode {border: black outset medium !important; padding: 0 !important;}.dj_a11y .dijitArrowButton {padding: 0 !important;}.dj_a11y .dijitButtonContents {margin: 0.15em;}.dj_a11y .dijitTextBoxReadOnly .dijitInputField,.dj_a11y .dijitTextBoxReadOnly .dijitButtonNode {border-style: outset!important; border-width: medium!important; border-color: #999 !important; color:#999 !important;}.dijitButtonNode * {vertical-align: middle;}.dijitSelect .dijitArrowButtonInner,.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;}.dj_gecko .dj_a11y .dijitButtonDisabled .dijitButtonNode {opacity: 0.5;}.dijitToggleButton,.dijitButton,.dijitDropDownButton,.dijitComboButton {margin: 0.2em; vertical-align: middle;}.dijitButtonContents {display: block;}td.dijitButtonContents {display: table-cell;}.dijitButtonNode img {vertical-align:middle;}.dijitToolbar .dijitComboButton {border-collapse: separate;}.dijitToolbar .dijitToggleButton,.dijitToolbar .dijitButton,.dijitToolbar .dijitDropDownButton,.dijitToolbar .dijitComboButton {margin: 0;}.dijitToolbar .dijitButtonContents {padding: 1px 2px;}.dj_webkit .dijitToolbar .dijitDropDownButton {padding-left: 0.3em;}.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {padding:0;}.dijitSelect {border:1px solid gray;}.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;}.dijitSelect,.dijitSelect *,.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;}.dijitTextBoxReadOnly,.dijitTextBoxDisabled {color: gray;}.dj_webkit .dijitTextBoxDisabled input {color: #eee;}.dj_webkit textarea.dijitTextAreaDisabled {color: #333;}.dj_gecko .dijitTextBoxReadOnly input.dijitInputField, .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: 5px -webkit-focus-ring-color;}.dijitSelect input,.dijitTextBox input {float: left;}.dj_ie6 input.dijitTextBox,.dj_ie6 .dijitTextBox input {float: none;}.dijitInputInner {border:0 !important; background-color:transparent !important; width:100% !important; padding-left: 0 !important; padding-right: 0 !important; margin-left: 0 !important; margin-right: 0 !important;}.dj_a11y .dijitTextBox input {margin: 0 !important;}.dijitValidationTextBoxError input.dijitValidationInner,.dijitSelect input,.dijitTextBox input.dijitArrowButtonInner {text-indent: -2em !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 .dijitSelect input,.dj_ie .dijitTextBox input,.dj_ie input.dijitTextBox {overflow-y: visible; line-height: normal;}.dijitSelect .dijitSelectLabel span {line-height: 100%;}.dj_ie .dijitSelect .dijitSelectLabel {line-height: normal;}.dj_ie6 .dijitSelect .dijitSelectLabel,.dj_ie7 .dijitSelect .dijitSelectLabel,.dj_ie8 .dijitSelect .dijitSelectLabel,.dj_iequirks .dijitSelect .dijitSelectLabel,.dijitSelect td,.dj_ie6 .dijitSelect input,.dj_iequirks .dijitSelect input,.dj_ie6 .dijitSelect .dijitValidationContainer,.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%;}.dj_a11y input.dijitValidationInner,.dj_a11y input.dijitArrowButtonInner {text-indent: 0 !important; width: 1em !important; #text-align: left !important; color: black !important;}.dijitValidationTextBoxError .dijitValidationContainer {display: inline; cursor: default;}.dijitSpinner .dijitSpinnerButtonContainer,.dijitComboBox .dijitArrowButtonContainer {border-width: 0 0 0 1px !important;}.dj_a11y .dijitSelect .dijitArrowButtonContainer,.dijitToolbar .dijitComboBox .dijitArrowButtonContainer {border-width: 0 !important;}.dijitComboBoxMenu {list-style-type: none;}.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0;}.dj_ie .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {clear: both;}.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;}.dj_a11y .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0px !important; border-style: solid !important;}.dj_a11y .dijitTextBox .dijitSpinnerButtonContainer,.dj_a11y .dijitSpinner .dijitArrowButtonInner,.dj_a11y .dijitSpinnerButtonContainer input {width: 1em !important;}.dj_a11y .dijitSpinner .dijitArrowButtonInner {margin: 0 auto !important;}.dj_ie .dj_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 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding-left: 0 !important; padding-right: 0 !important; width: 1em !important;}.dj_ie6 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {margin-left: 0.1em !important; margin-right: 0.1em !important; width: 1em !important;}.dj_iequirks .dj_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;}.dj_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%; visibility: hidden;}.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField {zoom: 50%;}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner {overflow: hidden;}.dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 100%;}.dj_iequirks .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 1em;}.dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {vertical-align:top; visibility: visible;}.dj_a11y .dijitSpinnerButtonContainer {width: 1em;}.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);}.dj_a11y .dijitCheckBox,.dj_a11y .dijitRadio {width: auto !important; height: auto !important;}.dj_a11y .dijitCheckBoxInput {opacity: 1; filter: none; width: auto; height: auto;}.dj_a11y .dijitFocusedLabel {border: 1px dotted; outline: 0px !important;}.dijitProgressBar {z-index: 0;}.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: 100%; height:auto; background-color:#aaa; background-attachment: fixed;}.dj_a11y .dijitProgressBarTile {border-width:2px; border-style:solid; background-color:transparent !important;}.dj_ie6 .dijitProgressBarTile {position:static; height:1.6em;}.dijitProgressBarIndeterminate .dijitProgressBarTile {}.dijitProgressBarIndeterminateHighContrastImage {display:none;}.dj_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: 0; 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;}.dj_a11y .dijitTooltipConnector {display: none;}.dijitTooltipData {display:none;}.dijitLayoutContainer {position: relative; display: block; overflow: hidden;}.dijitAlignTop,.dijitAlignBottom,.dijitAlignLeft,.dijitAlignRight {position: absolute; overflow: hidden;}body .dijitAlignClient {position: absolute;}.dijitBorderContainer, .dijitBorderContainerNoGutter {position:relative; overflow: hidden; z-index: 0;}.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: row-resize;}.dijitSplitterV {width: 7px; border-left:1px; border-right:1px; cursor: col-resize;}.dijitSplitContainer {position: relative; overflow: hidden; display: block;}.dj_ff3 .dj_a11y div.dijitSplitter:focus {outline-style:dotted; outline-width: 2px;}.dijitSplitPane {position: absolute;}.dijitSplitContainerSizerH,.dijitSplitContainerSizerV {position:absolute; font-size: 1px; 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;}.dijitSplitContainerSizerH, .dijitSplitContainerVirtualSizerH {cursor: col-resize;}.dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV {cursor: row-resize;}.dj_a11y .dijitSplitterH {border-top:1px solid #d3d3d3 !important; border-bottom:1px solid #d3d3d3 !important;}.dj_a11y .dijitSplitterV {border-left:1px solid #d3d3d3 !important; border-right:1px solid #d3d3d3 !important;}.dijitContentPane {display: block; overflow: auto;}.dijitContentPaneSingleChild {overflow: hidden;}.dijitContentPaneLoading .dijitIconLoading,.dijitContentPaneError .dijitIconError {margin-right: 9px;}.dijitTitlePane {display: block; overflow: hidden;}.dijitTitlePaneTitle {cursor: pointer;}.dijitFixedOpen, .dijitFixedClosed {cursor: default;}.dijitFixedOpen .dijitArrowNode, .dijitFixedOpen .dijitArrowNodeInner,.dijitFixedClosed .dijitArrowNode, .dijitFixedClosed .dijitArrowNodeInner{display: none;}.dijitTitlePaneTitle * {vertical-align: middle;}.dijitTitlePane .dijitArrowNodeInner {display: none;}.dj_a11y .dijitTitlePane .dijitArrowNodeInner {display:inline !important; font-family: monospace;}.dj_a11y .dijitTitlePane .dijitArrowNode {display:none;}.dj_ie6 .dijitTitlePaneContentOuter,.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle {zoom: 1;}.dijitColorPalette {border: 1px solid #999; background: #fff; position: relative;}.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 {font-size: 1px; vertical-align: middle; text-align: center; background: none;}.dijitColorPalette .dijitPaletteImg {padding: 1px; border: 1px solid #999; margin: 2px 1px; cursor: default; font-size: 1px;}.dj_gecko .dijitColorPalette .dijitPaletteImg {padding-bottom: 0;}.dijitColorPalette .dijitColorPaletteSwatch {width: 14px; height: 12px;}.dijitPaletteTable td {padding: 0;}.dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg {border: 1px solid #000;}.dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg,.dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg {border: 2px solid #000; margin: 1px 0;}.dj_a11y .dijitColorPalette .dijitPaletteTable,.dj_a11y .dijitColorPalette .dijitPaletteTable * {background-color: transparent !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;}.dj_a11y .dijitAccordionTitle .arrowTextUp,.dj_a11y .dijitAccordionTitleSelected .arrowTextDown {display: inline;}.dj_a11y .dijitAccordionTitleSelected .arrowTextUp {display: none;}.dijitAccordionChildWrapper {overflow: hidden;}.dijitCalendarContainer {width: auto;}.dijitCalendarContainer th, .dijitCalendarContainer td {padding: 0; vertical-align: middle;}.dijitCalendarYearLabel {white-space: nowrap;}.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;}.dijitCalendarMonthMenu .dijitCalendarMonthLabel {text-align:center;}.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;}.dijitMenuItem:focus {outline: none}.dijitMenuPassive .dijitMenuItemHover,.dijitMenuItemSelected {background-color:black; color:white;}.dijitMenuItemIcon, .dijitMenuExpand {background-repeat: no-repeat;}.dijitMenuItemDisabled * {opacity:0.5; cursor:default;}.dj_ie .dj_a11y .dijitMenuItemDisabled,.dj_ie .dj_a11y .dijitMenuItemDisabled *,.dj_ie .dijitMenuItemDisabled * {color: gray; filter: alpha(opacity=35);}.dijitMenuItemLabel {position: relative; vertical-align: middle;}.dj_a11y .dijitMenuItemSelected {border: 1px dotted black !important;}.dj_ff3 .dj_a11y .dijitMenuItem td {padding: 0 !important; background:none !important;}.dj_a11y .dijitMenuItemSelected .dijitMenuItemLabel {border-width: 1px; border-style: solid;}.dj_ie8 .dj_a11y .dijitMenuItemLabel {position:static;}.dijitMenuExpandA11y {display: none;}.dj_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;}.dj_a11y .dijitCheckedMenuItemIconChar {display:inline !important;}.dj_a11y .dijitCheckedMenuItemIcon {display: none;}.dj_ie .dj_a11y .dijitMenuBar .dijitMenuItem {margin: 0;}.dijitStackController .dijitToggleButtonChecked * {cursor: default;}.dijitTabContainer {z-index: 0; overflow-y: visible;}.dj_ie6 .dijitTabContainer {overflow: hidden;}.dijitTabContainerNoLayout {width: 100%;}.dijitTabContainerBottom-tabs,.dijitTabContainerTop-tabs,.dijitTabContainerLeft-tabs,.dijitTabContainerRight-tabs {z-index: 1; overflow: visible !important;}.dijitTabController {z-index: 1;}.dijitTabContainerBottom-container,.dijitTabContainerTop-container,.dijitTabContainerLeft-container,.dijitTabContainerRight-container {z-index:0; overflow: hidden; border: 1px solid black;}.nowrapTabStrip {width: 50000px; display: block; position: relative; text-align: left; z-index: 1;}.dijitTabListWrapper {overflow: hidden; z-index: 1;}.dj_a11y .tabStripButton img {display: none;}.dijitTabContainerTop-tabs {border-bottom: 1px solid black;}.dijitTabContainerTop-container {border-top: 0;}.dijitTabContainerLeft-tabs {border-right: 1px solid black; float: left;}.dijitTabContainerLeft-container {border-left: 0;}.dijitTabContainerBottom-tabs {border-top: 1px solid black;}.dijitTabContainerBottom-container {border-bottom: 0;}.dijitTabContainerRight-tabs {border-left: 1px solid black; float: left;}.dijitTabContainerRight-container {border-right: 0;}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;}.tabStripButton {z-index: 12;}.dijitTabButtonDisabled .tabStripButton {display: none;}.dijitTabCloseButton {margin-left: 1em;}.dijitTabCloseText {display:none;}.dijitTab .tabLabel {min-height: 15px; display: inline-block;}.dijitNoIcon {display: none;}.dj_ie6 .dijitTab .dijitNoIcon {display: inline; height: 15px; width: 1px;}.dj_a11y .dijitTabCloseButton {background-image: none !important; width: auto !important; height: auto !important;}.dj_a11y .dijitTabCloseText {display: inline;}.dijitTabPane,.dijitStackContainer-child,.dijitAccordionContainer-child {border: none !important;}.dijitInlineEditBoxDisplayMode {border: 1px solid transparent; cursor: text;}.dj_a11y .dijitInlineEditBoxDisplayMode,.dj_ie6 .dijitInlineEditBoxDisplayMode {border: none;}.dijitInlineEditBoxDisplayModeHover,.dj_a11y .dijitInlineEditBoxDisplayModeHover,.dj_ie6 .dijitInlineEditBoxDisplayModeHover {background-color: #e2ebf2; border: solid 1px black;}.dijitInlineEditBoxDisplayModeDisabled {cursor: default;}.dijitTree {overflow: auto;}.dijitTreeIndent {width: 19px;}.dijitTreeRow, .dijitTreeContent {white-space: nowrap;}.dijitTreeRow img {vertical-align: middle;}.dijitTreeContent {cursor: default;}.dijitExpandoText {display: none;}.dj_a11y .dijitExpandoText {display: inline; padding-left: 10px; padding-right: 10px; font-family: monospace; border-style: solid; border-width: thin; cursor: pointer;}.dijitTreeLabel {margin: 0 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);}.dj_a11y .dijitSpinnerButtonContainer,.dj_a11y .dijitDialog {opacity: 1 !important; background-color: white !important;}.dijitDialog .closeText {display:none; position:absolute;}.dj_a11y .dijitDialog .closeText {display:inline;}.dijitSliderMoveable {z-index:99; position:absolute !important; display:block; vertical-align:middle;}.dijitSliderMoveableH {right:0;}.dijitSliderMoveableV {right:50%;}.dj_a11y div.dijitSliderImageHandle,.dijitSliderImageHandle {margin:0; padding:0; position:relative !important; border:8px solid gray; width:0; height:0; cursor: pointer;}.dj_iequirks .dj_a11y .dijitSliderImageHandle {font-size: 0;}.dj_ie7 .dijitSliderImageHandle {overflow: hidden;}.dj_ie7 .dj_a11y .dijitSliderImageHandle {overflow: visible;}.dj_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;}.dijitSliderDecorationC,.dijitSliderDecorationV {position: relative;}.dijitSliderDecorationH {width: 100%;}.dijitSliderDecorationV {height: 100%;}.dijitSliderButton {font-family:monospace; margin:0; padding:0; display:block;}.dj_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;}.dj_a11y .dijitSliderReadOnly,.dj_a11y .dijitSliderDisabled {opacity:0.6;}.dj_ie .dj_a11y .dijitSliderReadOnly .dijitSliderBar,.dj_ie .dj_a11y .dijitSliderDisabled .dijitSliderBar {filter: alpha(opacity=40);}.dj_a11y .dijitSlider .dijitSliderButtonContainer div {font-family: monospace; font-size: 1em; line-height: 1em; height: auto; width: auto; margin: 0 4px;}.dj_a11y .dijitButtonContents .dijitButtonText,.dj_a11y .dijitTab .tabLabel {display: inline !important;}.dj_a11y .dijitSelect .dijitButtonText {display: inline-block !important;}.dijitSelectError .dijitButtonContents .dijitButtonText {display: none !important;}.dijitTextArea {width:100%; overflow-y: auto;}.dijitTextArea[cols] {width:auto;}.dj_ie .dijitTextAreaCols {width:auto;}.dijitExpandingTextArea {resize: none;}.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;}.dijitTimePickerItemDisabled {color:gray; text-decoration:line-through;}.dj_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner {border: solid 4px black;}.dj_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner {border: dashed 4px black;}.dijitToggleButtonIconChar {display:none !important;}.dj_a11y .dijitToggleButton .dijitToggleButtonIconChar {display:inline !important; visibility:hidden;}.dj_ie6 .dijitToggleButtonIconChar, .dj_ie6 .tabStripButton .dijitButtonText {font-family: "Arial Unicode MS";}.dj_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {display: inline !important; visibility:visible !important;}.dijitArrowButtonChar {display:none !important;}.dj_a11y .dijitArrowButtonChar {display:inline !important;}.dj_a11y .dijitDropDownButton .dijitArrowButtonInner,.dj_a11y .dijitComboButton .dijitArrowButtonInner {display:none !important;}.dj_a11y .dijitSelect {border-collapse: separate !important; border-width: 1px; border-style: solid;}.dj_ie .dijitSelect {vertical-align: middle;}.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie8 .dijitSelect .dijitButtonText {vertical-align: top;}.dj_ie6 .dijitTextBox .dijitInputContainer,.dj_iequirks .dijitTextBox .dijitInputContainer,.dj_ie6 .dijitTextBox .dijitArrowButtonInner,.dj_ie6 .dijitSpinner .dijitSpinnerButtonInner,.dijitSelect .dijitSelectLabel {vertical-align: baseline;}.dijitToolbar .dijitSelect {margin: 0;}.dj_webkit .dijitToolbar .dijitSelect {padding-left: 0.3em;}.dijitSelect .dijitButtonContents {padding: 0; white-space: nowrap; text-align: left; border-style: none solid none none; border-width: 1px;}.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: 0; background-color: transparent;}.dijitForceStatic {position: static !important;}.dijitReadOnly *,.dijitDisabled *,.dijitReadOnly,.dijitDisabled {cursor: default;}.dojoDndItem {padding: 2px; -webkit-touch-callout: none; -webkit-user-select: none;}.dojoDndHorizontal .dojoDndItem {#display: inline; display: inline-block;}.dojoDndItemBefore,.dojoDndItemAfter {border: 0px solid #369;}.dojoDndItemBefore {border-width: 2px 0 0 0; padding: 0 2px 2px 2px;}.dojoDndItemAfter {border-width: 0 0 2px 0; padding: 2px 2px 0 2px;}.dojoDndHorizontal .dojoDndItemBefore {border-width: 0 0 0 2px; padding: 2px 2px 2px 0;}.dojoDndHorizontal .dojoDndItemAfter {border-width: 0 2px 0 0; padding: 2px 0 2px 2px;}.dojoDndItemOver {cursor:pointer;}.dj_gecko .dijitArrowButtonInner INPUT,.dj_gecko INPUT.dijitArrowButtonInner {-moz-user-focus:ignore;}.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: 0;}.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: -160px;}.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;}.dijitIconLoading {background:url("../../icons/images/loadingAnimation_rtl.gif") no-repeat; height: 20px; width: 20px;}.tundra .dojoDndItemOver {background-image: url("images/treeHover.png");}.tundra .dojoDndItemAnchor,.tundra .dojoDndItemSelected {background-color: #E2EBFE;}.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 .dijitIconLoading {background:url("images/loading.gif") no-repeat left center; width: 24px; height: 24px;}.tundra .dijitIconError {background:url("images/warning.png") no-repeat left center; width: 16px; height: 16px;}.tundra .dijitContentPane {padding: 0;}.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:2px 8px 2px 9px; border:1px solid #ccc; background:#e2e2e2 url("images/tabEnabled.png") repeat-x;}.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: 0; 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: 0;}.tundra .dijitTabContainerTabListNested .dijitTabHover .tabLabel {text-decoration: underline;}.tundra .dijitTabContainerTabListNested .dijitTabChecked .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: 0; border-color: #cccccc; padding-left: 3px; background-position: bottom;}.tundra .dijitTabContainerTop-tabs .dijitTab {top: 0; 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: 0;}.tundra .dijitTabContainerBottom-tabs {margin-top: 0; border-color: #cccccc; background-position: top; padding-left: 3px;}.tundra .dijitTabContainerBottom-tabs .dijitTab {bottom: 0; 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:0; margin-bottom:4px;}.tundra .dijitTabContainerTop-dijitContentPane .dijitTabContainerTop-tabs {border-left: 0 solid #ccc; border-top: 0 solid #ccc; border-right: 0 solid #ccc; padding-top: 0; padding-left: 0;}.tundra .dijitTabContainer .tabStripButton {margin-right: 0; padding-top: 2px; z-index: 12;}.tundra .dijitTabContainerBottom .tabStripButton {padding-top: 3px;}.tundra .tabStrip-disabled .tabStripButton {padding-bottom: 3px; padding-top: 1px;}.tundra .tabStripButton {padding: 3px 2px 4px 2px;}.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: 0;}.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 {margin: 0 0.1em;}.tundra .dijitTextArea {padding: 3px;}.tundra .dijitSelect .dijitButtonContents,.tundra .dijitSelect,.tundra .dijitTextBox {background:#fff url("images/validationInputBg.png") repeat-x top left; #background:#fff url("images/validationInputBg.gif") repeat-x top left;}.tundra .dijitSelect,.tundra .dijitTextBox {border:1px solid #b3b3b3;}.tundra .dijitSelect .dijitArrowButton,.tundra .dijitComboBox .dijitButtonNode {padding: 0 0.2em;}.tundra .dijitSelect .dijitButtonContents,.tundra .dijitTextBox .dijitButtonNode {border-color: #9b9b9b;}.tundra .dijitSelectFocused,.tundra .dijitTextBoxFocused {border-color:#406b9b;}.tundra .dijitSelectFocused TD,.tundra .dijitTextBoxFocused .dijitButtonNode {border-color:#366dba;}.tundra .dijitError {background-color:#f9f7ba; background-image:none;}.tundra .dijitErrorFocused {background-color:#f9f999; background-image:none;}.tundra .dijitValidationTextBoxError .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 .dijitInputField {padding: 0;}.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 0 center; width: 7px; height: 7px; margin: 0 4px 0 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_ie .tundra .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner {margin-top: -2px;}.dj_webkit .tundra .dijitSpinner .dijitUpArrowButton .dijitArrowButtonInner,.dj_iequirks .tundra .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner,.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: 0;}.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:0; 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:0; 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 0;}.tundra .dijitSliderIncrementIconH {background-position: -14px 0;}.tundra .dijitSliderDecrementIconV {background-position: 0 0;}.tundra .dijitSliderIncrementIconV {background-position: -21px 0;}.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 0;}.tundra .dijitSliderReadOnly .dijitSliderIncrementIconH,.tundra .dijitSliderDisabled .dijitSliderIncrementIconH {background-position: -42px 0;}.tundra .dijitSliderReadOnly .dijitSliderDecrementIconV,.tundra .dijitSliderDisabled .dijitSliderDecrementIconV {background-position: -28px 0;}.tundra .dijitSliderReadOnly .dijitSliderIncrementIconV,.tundra .dijitSliderDisabled .dijitSliderIncrementIconV {background-position: -49px 0;}.tundra .dijitSelectError .dijitButtonContents,.tundra .dijitSelectHover .dijitArrowButton,.tundra .dijitSelectActive .dijitArrowButton,.tundra .dijitSelectOpened .dijitArrowButton,.tundra .dijitSelectDisabled .dijitArrowButton,.tundra .dijitSelectReadOnly .dijitArrowButton {background: transparent none;}.tundra .dijitSelect .dijitArrowButton {background: #fff url("images/buttonEnabled.png") repeat-x bottom left; border-width: 0;}.tundra .dijitSelectDisabled,.tundra .dijitSelectDisabled TD {border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5 !important; background:#e4e4e4 url("images/buttonDisabled.png") top repeat-x;}.dj_ie .tundra .dijitSelectDisabled TD * {filter: gray() alpha(opacity=50);}.tundra .dijitSelectHover,.tundra .dijitSelectHover TD {border-color:#a5beda #5c7590 #5c7590 #a5beda !important; color:#243C5F; background:#fcfdff url("images/buttonHover.png") repeat-x bottom;}.tundra .dijitSelectActive,.tundra .dijitSelectOpened,.tundra .dijitSelectActive TD,.tundra .dijitSelectOpened TD {border-color:#366dba !important; background: #ededed url("images/buttonActive.png") bottom repeat-x;}.tundra .dijitSelectMenu td {padding: 0;}.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 0 2px 0;}.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: 0 0; height: 7px; width: 7px;}.dj_ie6 .tundra .dijitTitlePane .dijitArrowNode {background-image: url("images/spriteArrows.gif");}.tundra .dijitTitlePane .dijitClosed .dijitArrowNode {background-position: -14px 0;}.tundra .dijitTitlePaneContentOuter {background: #ffffff; border:1px solid #bfbfbf; border-top: 0;}.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:0; border-top: 1px solid #eeeeee; color:#293a4b; text-align:center;}.tundra .dijitCalendarBodyContainer {border-bottom: 1px solid #eeeeee;}.tundra .dijitCalendarMonthLabel {color:#293a4b; font-weight: bold; padding: 0 4px;}.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; font-size: 1.17em;}.tundra .dijitCalendarSelectedYear {font-weight:bolder; color:black; padding:0.2em; padding-bottom:0.1em; background-color:#bbc4d0 !important;}.tundra .dijitCalendarNextYear,.tundra .dijitCalendarPreviousYear {color:black !important; font-weight:normal;}.tundra .dijitCalendar .dijitDropDownButton {margin: 0;}.tundra .dijitCalendar .dijitButtonText {padding: 0;}.tundra .dijitCalendar .dijitDropDownButton .dijitButtonNode {background-color: transparent; background-image: none; padding: 0;}.tundra .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover {background-color: #3559ac; color:#fff;}.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: 0; padding: 0; 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: 0;}.tundra .dijitToolbar .dijitButtonCheckedHover,.tundra .dijitToolbar .dijitToggleButtonCheckedHover {background-color:#abc1e5; border:1px solid #316ac5; padding: 0;}.tundra .dijitToolbar .dijitButtonHover,.tundra .dijitToolbar .dijitToggleButtonHover,.tundra .dijitToolbar .dijitDropDownButtonHover,.tundra .dijitToolbar .dijitComboButton .dijitButtonContentsHover,.tundra .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover {border: 1px solid #869cbf; padding: 0; 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: 0;}.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: 0; -webkit-box-shadow: 0 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: 0 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:0; z-index: 2;}.tundra .dijitTooltipABRight .dijitTooltipConnector {left: auto !important; right: 3px;}.tundra .dijitTooltipBelow .dijitTooltipConnector {top: 0; 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: 0; 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;}.tundra .dijitTooltipLeft .dijitTooltipConnector {right: 0; 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: 0; 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: 0 5px 10px #adadad;}.tundra .dijitMenu,.tundra .dijitMenuBar {border: 1px solid #7eabcd; margin: 0; padding: 0; 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 .dijitComboBoxMenu .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 0;}.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: 0;}.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: 0 !important;}.dijitRtl .dijitPlaceHolder {left: auto; right: 0;}.dijitMenuItemRtl {text-align: right;}.dj_iequirks .dijitComboButtonRtl button {float:left;}.dj_ie .dijitTextBoxRtl .dijitInputContainer {clear: right;}.dijitTextBoxRtl .dijitValidationContainer,.dijitTextBoxRtl .dijitSpinnerButtonContainer,.dijitComboBoxRtl .dijitArrowButtonContainer {border-right-width: 1px !important; border-left-width: 0 !important;}.dijitSpinnerRtl .dijitSpinnerButtonContainer .dijitArrowButton {right: 0; left: auto;}.dijitSelectRtl .dijitButtonText {float: right;}.dijitTextBoxRtl .dijitSpinnerButtonContainer,.dijitValidationTextBoxRtl .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 .dijitIconLoading,.dijitRtl .dijitContentPaneError .dijitIconError {margin-right: 0; margin-left: 9px;}.dijitTabControllerRtl .nowrapTabStrip {text-align: right;}.dijitTabRtl .dijitTabCloseButton {margin-left: 0; margin-right: 1em;}.dj_ie6 .dijitTabRtl .tabLabel,.dj_ie6 .dijitTabContainerRight-tabs .dijitTabRtl,.dj_ie6 .dijitTabContainerLeft-tabs .dijitTabRtl,.dj_ie7 .dijitTabContainerRight-tabs .dijitTabRtl,.dj_ie7 .dijitTabContainerLeft-tabs .dijitTabRtl {zoom: 1;}.dj_ie6 .dijitTabContainerRight-tabs .dijitTabRtl,.dj_ie7 .dijitTabContainerRight-tabs .dijitTabRtl {left: 0;}.dj_ie6 .dijitTabContainerRightRtl .dijitTabContainerRight-tabs,.dj_ie6 .dijitTabContainerLeftRtl .dijitTabContainerLeft-tabs {width: 1%;}.dj_ie .dijitTimePickerRtl .dijitTimePickerItem {width:100%;}.dijitColorPaletteRtl .dijitColorPaletteUnder {left: auto; right: 0;}.dijitSelectRtl .dijitButtonContents {border-style: none none none solid; text-align: right;}.dijitRtl .dojoDndHorizontal .dojoDndItemBefore {border-width: 0 2px 0 0; padding: 2px 0 2px 2px;}.dijitRtl .dojoDndHorizontal .dojoDndItemAfter {border-width: 0 0 0 2px; padding: 2px 2px 2px 0;}.tundra .dijitCalendarRtl .dijitCalendarDecrease {background-position: -30px top;}.tundra .dijitCalendarRtl .dijitCalendarIncrease {background-position: 0 top;} .dj_ie6 .tundra .dijitTimePickerRtl .dijitTimePickerMarkerHover,.dj_ie7 .tundra .dijitTimePickerRtl .dijitTimePickerMarkerHover {border-top: 0;}.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 0;}.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 0;}.tundra .dijitTabRtl {padding:2px 9px 2px 8px;}.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: 0; border-right-width: 1px;}.tundra .dijitSliderRtl .dijitSliderRightBumper {border-left-width: 1px; border-right-width: 0;}.tundra .dijitSliderRtl .dijitSliderIncrementIconH {background-position: -7px 0;}.tundra .dijitSliderRtl .dijitSliderDecrementIconH {background-position: -14px 0;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dijit/themes/tundra/tundra_rtl.css b/js/3rdparty/resources/dijit/themes/tundra/tundra_rtl.css
deleted file mode 100644
index f1dea954..00000000
--- a/js/3rdparty/resources/dijit/themes/tundra/tundra_rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-.dijitRtl .dijitPlaceHolder {left: auto; right: 0;}.dijitMenuItemRtl {text-align: right;}.dj_iequirks .dijitComboButtonRtl button {float:left;}.dj_ie .dijitTextBoxRtl .dijitInputContainer {clear: right;}.dijitTextBoxRtl .dijitValidationContainer,.dijitTextBoxRtl .dijitSpinnerButtonContainer,.dijitComboBoxRtl .dijitArrowButtonContainer {border-right-width: 1px !important; border-left-width: 0 !important;}.dijitSpinnerRtl .dijitSpinnerButtonContainer .dijitArrowButton {right: 0; left: auto;}.dijitSelectRtl .dijitButtonText {float: right;}.dijitTextBoxRtl .dijitSpinnerButtonContainer,.dijitValidationTextBoxRtl .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 .dijitIconLoading,.dijitRtl .dijitContentPaneError .dijitIconError {margin-right: 0; margin-left: 9px;}.dijitTabControllerRtl .nowrapTabStrip {text-align: right;}.dijitTabRtl .dijitTabCloseButton {margin-left: 0; margin-right: 1em;}.dj_ie6 .dijitTabRtl .tabLabel,.dj_ie6 .dijitTabContainerRight-tabs .dijitTabRtl,.dj_ie6 .dijitTabContainerLeft-tabs .dijitTabRtl,.dj_ie7 .dijitTabContainerRight-tabs .dijitTabRtl,.dj_ie7 .dijitTabContainerLeft-tabs .dijitTabRtl {zoom: 1;}.dj_ie6 .dijitTabContainerRight-tabs .dijitTabRtl,.dj_ie7 .dijitTabContainerRight-tabs .dijitTabRtl {left: 0;}.dj_ie6 .dijitTabContainerRightRtl .dijitTabContainerRight-tabs,.dj_ie6 .dijitTabContainerLeftRtl .dijitTabContainerLeft-tabs {width: 1%;}.dj_ie .dijitTimePickerRtl .dijitTimePickerItem {width:100%;}.dijitColorPaletteRtl .dijitColorPaletteUnder {left: auto; right: 0;}.dijitSelectRtl .dijitButtonContents {border-style: none none none solid; text-align: right;}.dijitRtl .dojoDndHorizontal .dojoDndItemBefore {border-width: 0 2px 0 0; padding: 2px 0 2px 2px;}.dijitRtl .dojoDndHorizontal .dojoDndItemAfter {border-width: 0 0 0 2px; padding: 2px 2px 2px 0;}.tundra .dijitCalendarRtl .dijitCalendarDecrease {background-position: -30px top;}.tundra .dijitCalendarRtl .dijitCalendarIncrease {background-position: 0 top;} .dj_ie6 .tundra .dijitTimePickerRtl .dijitTimePickerMarkerHover,.dj_ie7 .tundra .dijitTimePickerRtl .dijitTimePickerMarkerHover {border-top: 0;}.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 0;}.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 0;}.tundra .dijitTabRtl {padding:2px 9px 2px 8px;}.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: 0; border-right-width: 1px;}.tundra .dijitSliderRtl .dijitSliderRightBumper {border-left-width: 1px; border-right-width: 0;}.tundra .dijitSliderRtl .dijitSliderIncrementIconH {background-position: -7px 0;}.tundra .dijitSliderRtl .dijitSliderDecrementIconH {background-position: -14px 0;} \ No newline at end of file
diff --git a/js/3rdparty/resources/dojo/dojo.js b/js/3rdparty/resources/dojo/dojo.js
index 009aff71..47df1928 100644
--- a/js/3rdparty/resources/dojo/dojo.js
+++ b/js/3rdparty/resources/dojo/dojo.js
@@ -1,664 +1,677 @@
//>>built
-(function(e,j){var i,l,c=function(){},g=function(a){for(var d in a)return 0;return 1},h={}.toString,b=function(a){return"[object Function]"==h.call(a)},f=function(a){return"[object String]"==h.call(a)},a=function(a){return"[object Array]"==h.call(a)},k=function(a,d){if(a)for(var b=0;b<a.length;)d(a[b++])},d=function(a,d){for(var b in d)a[b]=d[b];return a},p=function(a,b){return d(Error(a),{src:"dojoLoader",info:b})},m=1,n=function(){return"_"+m++},o=function(a,d,b){return wa(a,d,b,0,o)},r=this,q=
-r.document,v=q&&q.createElement("DiV"),s=o.has=function(a){return b(u[a])?u[a]=u[a](r,q,v):u[a]},u=s.cache=j.hasCache;s.add=function(a,d,b,k){(void 0===u[a]||k)&&(u[a]=d);return b&&s(a)};for(var t in e.has)s.add(t,e.has[t],0,1);o.async=1;var y=new Function("return eval(arguments[0]);");o.eval=function(a,d){return y(a+"\r\n////@ sourceURL="+d)};var z={},I=o.signal=function(d,b){var f=z[d];k(f&&f.slice(0),function(d){d.apply(null,a(b)?b:[b])})},J=o.on=function(a,d){var b=z[a]||(z[a]=[]);b.push(d);return{remove:function(){for(var a=
-0;a<b.length;a++)if(b[a]===d){b.splice(a,1);break}}}},N=[],E={},S=[],Q={},B=o.map={},A=[],w={},x="",K={},H={},C={},F=function(a){var d,b,k,f;for(d in H)b=H[d],(k=d.match(/^url\:(.+)/))?K["url:"+xa(k[1],a)]=b:"*now"==d?f=b:"*noref"!=d&&(k=aa(d,a),K[k.mid]=K["url:"+k.url]=b);f&&f(ja(a));H={}},O=function(a){return a.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,function(a){return"\\"+a})},D=function(a,d){d.splice(0,d.length);for(var b in a)d.push([b,a[b],RegExp("^"+O(b)+"(/|$)"),b.length]);d.sort(function(a,
-d){return d[3]-a[3]});return d},L=function(a){var b=a.name;b||(b=a,a={name:b});a=d({main:"main"},a);a.location=a.location?a.location:b;if(a.packageMap)B[b]=a.packageMap;if(!a.main.indexOf("./"))a.main=a.main.substring(2);Q[b]=a},T=[],G=function(a,b,c){for(var m in a){if("waitSeconds"==m)o.waitms=1E3*(a[m]||0);"cacheBust"==m&&(x=a[m]?f(a[m])?a[m]:(new Date).getTime()+"":"");if("baseUrl"==m||"combo"==m)o[m]=a[m];a[m]!==u&&(o.rawConfig[m]=a[m],"has"!=m&&s.add("config-"+m,a[m],0,b))}if(!o.baseUrl)o.baseUrl=
-"./";/\/$/.test(o.baseUrl)||(o.baseUrl+="/");for(m in a.has)s.add(m,a.has[m],0,b);k(a.packages,L);for(l in a.packagePaths)k(a.packagePaths[l],function(a){var b=l+"/"+a;f(a)&&(a={name:a});a.location=b;L(a)});D(d(B,a.map),A);k(A,function(a){a[1]=D(a[1],[]);if("*"==a[0])A.star=a[1]});D(d(E,a.paths),S);k(a.aliases,function(a){f(a[0])&&(a[0]=RegExp("^"+O(a[0])+"$"));N.push(a)});if(b)T.push({config:a.config});else for(m in a.config)b=W(m,c),b.config=d(b.config||{},a.config[m]);if(a.cache)F(),H=a.cache,
-a.cache["*noref"]&&F();I("config",[a,o.rawConfig])};s("dojo-cdn");var M=q.getElementsByTagName("script");i=0;for(var X,P,Y,U;i<M.length;)if(X=M[i++],(Y=X.getAttribute("src"))&&(U=Y.match(/(((.*)\/)|^)dojo\.js(\W|$)/i))){P=U[3]||"";j.baseUrl=j.baseUrl||P;(Y=X.getAttribute("data-dojo-config")||X.getAttribute("djConfig"))&&(C=o.eval("({ "+Y+" })","data-dojo-config"));break}o.rawConfig={};G(j,1);if(s("dojo-cdn"))(Q.dojo.location=P)&&(P+="/"),Q.dijit.location=P+"../dijit/",Q.dojox.location=P+"../dojox/";
-G(e,1);G(C,1);var ba=function(a){ka(function(){k(a.deps,ya)})},wa=function(b,k,m,g,e){var h;if(f(b)){if((h=W(b,g,!0))&&h.executed)return h.result;throw p("undefinedModule",b);}a(b)||(G(b,0,g),b=k,k=m);if(a(b))if(b.length){for(var m="require*"+n(),l,i=[],r=0;r<b.length;)l=b[r++],i.push(W(l,g));h=d(ca("",m,0,""),{injected:2,deps:i,def:k||c,require:g?g.require:o,gc:1});w[h.mid]=h;ba(h);var u=$&&0!="sync";ka(function(){la(h,u)});h.executed||V.push(h);da()}else k&&k();return e},ja=function(a){if(!a)return o;
-var b=a.require;if(!b)b=function(d,k,f){return wa(d,k,f,a,b)},a.require=d(b,o),b.module=a,b.toUrl=function(b){return xa(b,a)},b.toAbsMid=function(b){return ma(b,a)};return b},V=[],ea=[],R={},La=function(a){a.injected=1;R[a.mid]=1;a.url&&(R[a.url]=a.pack||1);za()},ga=function(a){a.injected=2;delete R[a.mid];a.url&&delete R[a.url];g(R)&&fa()},Ma=o.idle=function(){return!ea.length&&g(R)&&!V.length&&!$},na=function(a,b){if(b)for(var d=0;d<b.length;d++)if(b[d][2].test(a))return b[d];return 0},Aa=function(a){for(var b=
-[],d,k,a=a.replace(/\\/g,"/").split("/");a.length;)d=a.shift(),".."==d&&b.length&&".."!=k?(b.pop(),k=b[b.length-1]):"."!=d&&b.push(k=d);return b.join("/")},ca=function(a,b,d,k){return{pid:a,mid:b,pack:d,url:k,executed:0,def:0}},Ba=function(a,d,f,m,c,g,h,e){var o,n,l,i;i=/^\./.test(a);if(/(^\/)|(\:)|(\.js$)/.test(a)||i&&!d)return ca(0,a,0,a);a=Aa(i?d.mid+"/../"+a:a);if(/^\./.test(a))throw p("irrationalPath",a);d&&(l=na(d.mid,g));(l=(l=l||g.star)&&na(a,l[1]))&&(a=l[1]+a.substring(l[3]));d=(U=a.match(/^([^\/]+)(\/(.+))?$/))?
-U[1]:"";(o=f[d])?a=d+"/"+(n=U[3]||o.main):d="";var r=0;k(N,function(d){var k=a.match(d[0]);k&&0<k.length&&(r=b(d[1])?a.replace(d[0],d[1]):d[1])});if(r)return Ba(r,0,f,m,c,g,h,e);if(f=m[a])return e?ca(f.pid,f.mid,f.pack,f.url):m[a];m=(l=na(a,h))?l[1]+a.substring(l[3]):d?o.location+"/"+n:s("config-tlmSiblingOfDojo")?"../"+a:a;/(^\/)|(\:)/.test(m)||(m=c+m);return ca(d,a,o,Aa(m+".js"))},aa=function(a,b){return Ba(a,b,Q,w,o.baseUrl,A,S)},Ca=function(a,b,d){return a.normalize?a.normalize(b,function(a){return ma(a,
-d)}):ma(b,d)},Da=0,W=function(a,b,d){var k,f;(k=a.match(/^(.+?)\!(.*)$/))?(f=W(k[1],b,d),5===f.executed&&!f.load&&oa(f),f.load?(k=Ca(f,k[2],b),a=f.mid+"!"+(f.dynamic?++Da+"!":"")+k):(k=k[2],a=f.mid+"!"+ ++Da+"!waitingForPlugin"),a={plugin:f,mid:a,req:ja(b),prid:k}):a=aa(a,b);return w[a.mid]||!d&&(w[a.mid]=a)},ma=o.toAbsMid=function(a,b){return aa(a,b).mid},xa=o.toUrl=function(a,b){var d=aa(a+"/x",b),k=d.url;return Ea(0===d.pid?a:k.substring(0,k.length-5))},Fa={injected:2,executed:5,def:3,result:3},
-pa=function(a){return w[a]=d({mid:a},Fa)},Na=pa("require"),Oa=pa("exports"),Pa=pa("module"),ha={},qa=0,oa=function(a){var b=a.result;a.dynamic=b.dynamic;a.normalize=b.normalize;a.load=b.load;return a},Qa=function(a){var b={};k(a.loadQ,function(k){var f=Ca(a,k.prid,k.req.module),m=a.dynamic?k.mid.replace(/waitingForPlugin$/,f):a.mid+"!"+f,f=d(d({},k),{mid:m,prid:f,injected:0});w[m]||Ga(w[m]=f);b[k.mid]=w[m];ga(k);delete w[k.mid]});a.loadQ=0;var f=function(a){for(var d=a.deps||[],k=0;k<d.length;k++)(a=
-b[d[k].mid])&&(d[k]=a)},m;for(m in w)f(w[m]);k(V,f)},ra=function(a){o.trace("loader-finish-exec",[a.mid]);a.executed=5;a.defOrder=qa++;a.loadQ&&(oa(a),Qa(a));for(i=0;i<V.length;)V[i]===a?V.splice(i,1):i++;/^require\*/.test(a.mid)&&delete w[a.mid]},Ra=[],la=function(a,d){if(4===a.executed)return o.trace("loader-circular-dependency",[Ra.concat(a.mid).join("->")]),!a.def||d?ha:a.cjs&&a.cjs.exports;if(!a.executed){if(!a.def)return ha;var k=a.mid,f=a.deps||[],m,c=[],g=0;for(a.executed=4;g<f.length;){m=
-f[g++];m=m===Na?ja(a):m===Oa?a.cjs.exports:m===Pa?a.cjs:la(m,d);if(m===ha)return a.executed=0,o.trace("loader-exec-module",["abort",k]),ha;c.push(m)}o.trace("loader-run-factory",[a.mid]);var k=a.def,h;if(s("config-dojo-loader-catches"))try{h=b(k)?k.apply(null,c):k}catch(e){I("error",a.result=p("factoryThrew",[a,e]))}else h=b(k)?k.apply(null,c):k;a.result=void 0===h&&a.cjs?a.cjs.exports:h;ra(a)}return a.result},$=0,ka=function(a){try{$++,a()}finally{$--}Ma()&&I("idle",[])},da=function(){$||ka(function(){for(var a,
+(function(f,k){var h,j,e=function(){},c=function(a){for(var b in a)return 0;return 1},i={}.toString,b=function(a){return"[object Function]"==i.call(a)},g=function(a){return"[object String]"==i.call(a)},a=function(a){return"[object Array]"==i.call(a)},l=function(a,b){if(a)for(var d=0;d<a.length;)b(a[d++])},d=function(a,b){for(var d in b)a[d]=b[d];return a},p=function(a,b){return d(Error(a),{src:"dojoLoader",info:b})},m=1,n=function(){return"_"+m++},o=function(a,b,d){return wa(a,b,d,0,o)},r=this,q=
+r.document,v=q&&q.createElement("DiV"),s=o.has=function(a){return b(t[a])?t[a]=t[a](r,q,v):t[a]},t=s.cache=k.hasCache;s.add=function(a,b,d,l){(void 0===t[a]||l)&&(t[a]=b);return d&&s(a)};for(var u in f.has)s.add(u,f.has[u],0,1);o.async=1;var y=new Function("return eval(arguments[0]);");o.eval=function(a,b){return y(a+"\r\n////@ sourceURL="+b)};var z={},I=o.signal=function(b,d){var g=z[b];l(g&&g.slice(0),function(b){b.apply(null,a(d)?d:[d])})},J=o.on=function(a,b){var d=z[a]||(z[a]=[]);d.push(b);return{remove:function(){for(var a=
+0;a<d.length;a++)if(d[a]===b){d.splice(a,1);break}}}},N=[],E={},S=[],Q={},B=o.map={},A=[],w={},x="",K={},H={},C={},F=function(a){var b,d,l,g;for(b in H)d=H[b],(l=b.match(/^url\:(.+)/))?K["url:"+xa(l[1],a)]=d:"*now"==b?g=d:"*noref"!=b&&(l=aa(b,a),K[l.mid]=K["url:"+l.url]=d);g&&g(ja(a));H={}},O=function(a){return a.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,function(a){return"\\"+a})},D=function(a,b){b.splice(0,b.length);for(var d in a)b.push([d,a[d],RegExp("^"+O(d)+"(/|$)"),d.length]);b.sort(function(a,
+b){return b[3]-a[3]});return b},L=function(a){var b=a.name;b||(b=a,a={name:b});a=d({main:"main"},a);a.location=a.location?a.location:b;if(a.packageMap)B[b]=a.packageMap;if(!a.main.indexOf("./"))a.main=a.main.substring(2);Q[b]=a},T=[],G=function(a,b,e){for(var c in a){if("waitSeconds"==c)o.waitms=1E3*(a[c]||0);"cacheBust"==c&&(x=a[c]?g(a[c])?a[c]:(new Date).getTime()+"":"");if("baseUrl"==c||"combo"==c)o[c]=a[c];a[c]!==t&&(o.rawConfig[c]=a[c],"has"!=c&&s.add("config-"+c,a[c],0,b))}if(!o.baseUrl)o.baseUrl=
+"./";/\/$/.test(o.baseUrl)||(o.baseUrl+="/");for(c in a.has)s.add(c,a.has[c],0,b);l(a.packages,L);for(j in a.packagePaths)l(a.packagePaths[j],function(a){var b=j+"/"+a;g(a)&&(a={name:a});a.location=b;L(a)});D(d(B,a.map),A);l(A,function(a){a[1]=D(a[1],[]);if("*"==a[0])A.star=a[1]});D(d(E,a.paths),S);l(a.aliases,function(a){g(a[0])&&(a[0]=RegExp("^"+O(a[0])+"$"));N.push(a)});if(b)T.push({config:a.config});else for(c in a.config)b=W(c,e),b.config=d(b.config||{},a.config[c]);if(a.cache)F(),H=a.cache,
+a.cache["*noref"]&&F();I("config",[a,o.rawConfig])};s("dojo-cdn");var M=q.getElementsByTagName("script");h=0;for(var X,P,Y,U;h<M.length;)if(X=M[h++],(Y=X.getAttribute("src"))&&(U=Y.match(/(((.*)\/)|^)dojo\.js(\W|$)/i))){P=U[3]||"";k.baseUrl=k.baseUrl||P;(Y=X.getAttribute("data-dojo-config")||X.getAttribute("djConfig"))&&(C=o.eval("({ "+Y+" })","data-dojo-config"));break}o.rawConfig={};G(k,1);if(s("dojo-cdn"))(Q.dojo.location=P)&&(P+="/"),Q.dijit.location=P+"../dijit/",Q.dojox.location=P+"../dojox/";
+G(f,1);G(C,1);var ba=function(a){ka(function(){l(a.deps,ya)})},wa=function(b,l,c,m,i){var f;if(g(b)){if((f=W(b,m,!0))&&f.executed)return f.result;throw p("undefinedModule",b);}a(b)||(G(b,0,m),b=l,l=c);if(a(b))if(b.length){for(var c="require*"+n(),j,h=[],r=0;r<b.length;)j=b[r++],h.push(W(j,m));f=d(ca("",c,0,""),{injected:2,deps:h,def:l||e,require:m?m.require:o,gc:1});w[f.mid]=f;ba(f);var t=$&&0!="sync";ka(function(){la(f,t)});f.executed||V.push(f);da()}else l&&l();return i},ja=function(a){if(!a)return o;
+var b=a.require;if(!b)b=function(d,l,g){return wa(d,l,g,a,b)},a.require=d(b,o),b.module=a,b.toUrl=function(b){return xa(b,a)},b.toAbsMid=function(b){return ma(b,a)};return b},V=[],ea=[],R={},La=function(a){a.injected=1;R[a.mid]=1;a.url&&(R[a.url]=a.pack||1);za()},ga=function(a){a.injected=2;delete R[a.mid];a.url&&delete R[a.url];c(R)&&fa()},Ma=o.idle=function(){return!ea.length&&c(R)&&!V.length&&!$},na=function(a,b){if(b)for(var d=0;d<b.length;d++)if(b[d][2].test(a))return b[d];return 0},Aa=function(a){for(var b=
+[],d,l,a=a.replace(/\\/g,"/").split("/");a.length;)d=a.shift(),".."==d&&b.length&&".."!=l?(b.pop(),l=b[b.length-1]):"."!=d&&b.push(l=d);return b.join("/")},ca=function(a,b,d,l){return{pid:a,mid:b,pack:d,url:l,executed:0,def:0}},Ba=function(a,d,g,c,e,m,f,i){var o,n,j,h;h=/^\./.test(a);if(/(^\/)|(\:)|(\.js$)/.test(a)||h&&!d)return ca(0,a,0,a);a=Aa(h?d.mid+"/../"+a:a);if(/^\./.test(a))throw p("irrationalPath",a);d&&(j=na(d.mid,m));(j=(j=j||m.star)&&na(a,j[1]))&&(a=j[1]+a.substring(j[3]));d=(U=a.match(/^([^\/]+)(\/(.+))?$/))?
+U[1]:"";(o=g[d])?a=d+"/"+(n=U[3]||o.main):d="";var r=0;l(N,function(d){var l=a.match(d[0]);l&&0<l.length&&(r=b(d[1])?a.replace(d[0],d[1]):d[1])});if(r)return Ba(r,0,g,c,e,m,f,i);if(g=c[a])return i?ca(g.pid,g.mid,g.pack,g.url):c[a];c=(j=na(a,f))?j[1]+a.substring(j[3]):d?o.location+"/"+n:s("config-tlmSiblingOfDojo")?"../"+a:a;/(^\/)|(\:)/.test(c)||(c=e+c);return ca(d,a,o,Aa(c+".js"))},aa=function(a,b){return Ba(a,b,Q,w,o.baseUrl,A,S)},Ca=function(a,b,d){return a.normalize?a.normalize(b,function(a){return ma(a,
+d)}):ma(b,d)},Da=0,W=function(a,b,d){var l,g;(l=a.match(/^(.+?)\!(.*)$/))?(g=W(l[1],b,d),5===g.executed&&!g.load&&oa(g),g.load?(l=Ca(g,l[2],b),a=g.mid+"!"+(g.dynamic?++Da+"!":"")+l):(l=l[2],a=g.mid+"!"+ ++Da+"!waitingForPlugin"),a={plugin:g,mid:a,req:ja(b),prid:l}):a=aa(a,b);return w[a.mid]||!d&&(w[a.mid]=a)},ma=o.toAbsMid=function(a,b){return aa(a,b).mid},xa=o.toUrl=function(a,b){var d=aa(a+"/x",b),l=d.url;return Ea(0===d.pid?a:l.substring(0,l.length-5))},Fa={injected:2,executed:5,def:3,result:3},
+pa=function(a){return w[a]=d({mid:a},Fa)},Na=pa("require"),Oa=pa("exports"),Pa=pa("module"),ha={},qa=0,oa=function(a){var b=a.result;a.dynamic=b.dynamic;a.normalize=b.normalize;a.load=b.load;return a},Qa=function(a){var b={};l(a.loadQ,function(l){var g=Ca(a,l.prid,l.req.module),c=a.dynamic?l.mid.replace(/waitingForPlugin$/,g):a.mid+"!"+g,g=d(d({},l),{mid:c,prid:g,injected:0});w[c]||Ga(w[c]=g);b[l.mid]=w[c];ga(l);delete w[l.mid]});a.loadQ=0;var g=function(a){for(var d=a.deps||[],l=0;l<d.length;l++)(a=
+b[d[l].mid])&&(d[l]=a)},c;for(c in w)g(w[c]);l(V,g)},ra=function(a){o.trace("loader-finish-exec",[a.mid]);a.executed=5;a.defOrder=qa++;a.loadQ&&(oa(a),Qa(a));for(h=0;h<V.length;)V[h]===a?V.splice(h,1):h++;/^require\*/.test(a.mid)&&delete w[a.mid]},Ra=[],la=function(a,d){if(4===a.executed)return o.trace("loader-circular-dependency",[Ra.concat(a.mid).join("->")]),!a.def||d?ha:a.cjs&&a.cjs.exports;if(!a.executed){if(!a.def)return ha;var l=a.mid,g=a.deps||[],c,e=[],m=0;for(a.executed=4;m<g.length;){c=
+g[m++];c=c===Na?ja(a):c===Oa?a.cjs.exports:c===Pa?a.cjs:la(c,d);if(c===ha)return a.executed=0,o.trace("loader-exec-module",["abort",l]),ha;e.push(c)}o.trace("loader-run-factory",[a.mid]);var l=a.def,f;if(s("config-dojo-loader-catches"))try{f=b(l)?l.apply(null,e):l}catch(i){I("error",a.result=p("factoryThrew",[a,i]))}else f=b(l)?l.apply(null,e):l;a.result=void 0===f&&a.cjs?a.cjs.exports:f;ra(a)}return a.result},$=0,ka=function(a){try{$++,a()}finally{$--}Ma()&&I("idle",[])},da=function(){$||ka(function(){for(var a,
b,d=0;d<V.length;)a=qa,b=V[d],la(b),a!=qa?d=0:d++})};void 0===s("dojo-loader-eval-hint-url")&&s.add("dojo-loader-eval-hint-url",1);var Ea=function(a){a+="";return a+(x?(/\?/.test(a)?"&":"?")+x:"")},Ga=function(a){var b=a.plugin;5===b.executed&&!b.load&&oa(b);var d=function(b){a.result=b;ga(a);ra(a);da()};b.load?b.load(a.prid,a.req,d):b.loadQ?b.loadQ.push(a):(b.loadQ=[a],V.unshift(b),ya(b))},Z=0,sa=0,ta=0,Sa=function(a,b){s("config-stripStrict")&&(a=a.replace(/"use strict"/g,""));ta=1;if(s("config-dojo-loader-catches"))try{a===
-Z?Z.call(null):o.eval(a,s("dojo-loader-eval-hint-url")?b.url:b.mid)}catch(d){I("error",p("evalModuleThrew",b))}else a===Z?Z.call(null):o.eval(a,s("dojo-loader-eval-hint-url")?b.url:b.mid);ta=0},ya=function(a){var b=a.mid,k=a.url;if(!a.executed&&!a.injected&&!(R[b]||a.url&&(a.pack&&R[a.url]===a.pack||1==R[a.url])))if(La(a),a.plugin)Ga(a);else{var f=function(){Ta(a);2!==a.injected&&(ga(a),d(a,Fa),o.trace("loader-define-nonmodule",[a.url]));da()};(Z=K[b]||K["url:"+a.url])?(o.trace("loader-inject",["cache",
-a.mid,k]),Sa(Z,a),f()):(o.trace("loader-inject",["script",a.mid,k]),sa=a,o.injectUrl(Ea(k),f,a),sa=0)}},ua=function(a,k,f){o.trace("loader-define-module",[a.mid,k]);if(2===a.injected)return I("error",p("multipleDefine",a)),a;d(a,{deps:k,def:f,cjs:{id:a.mid,uri:a.url,exports:a.result={},setExports:function(b){a.cjs.exports=b},config:function(){return a.config}}});for(var m=0;m<k.length;m++)k[m]=W(k[m],a);ga(a);if(!b(f)&&!k.length)a.result=f,ra(a);return a},Ta=function(a,b){for(var d=[],f,m;ea.length;)m=
-ea.shift(),b&&(m[0]=b.shift()),f=m[0]&&W(m[0])||a,d.push([f,m[1],m[2]]);F(a);k(d,function(a){ba(ua.apply(null,a))})},ia=0,fa=c,za=c;fa=function(){ia&&clearTimeout(ia);ia=0};za=function(){fa();o.waitms&&(ia=window.setTimeout(function(){fa();I("error",p("timeout",R))},o.waitms))};s.add("ie-event-behavior",!!q.attachEvent&&("undefined"===typeof opera||"[object Opera]"!=opera.toString()));var va=function(a,b,d,k){if(s("ie-event-behavior"))return a.attachEvent(d,k),function(){a.detachEvent(d,k)};a.addEventListener(b,
-k,!1);return function(){a.removeEventListener(b,k,!1)}},Ua=va(window,"load","onload",function(){o.pageLoaded=1;"complete"!=q.readyState&&(q.readyState="complete");Ua()}),Ha=q.getElementsByTagName("script")[0],Va=Ha.parentNode;o.injectUrl=function(a,b,d){var d=d.node=q.createElement("script"),k=va(d,"load","onreadystatechange",function(a){var a=a||window.event,d=a.target||a.srcElement;if("load"===a.type||/complete|loaded/.test(d.readyState))k(),f(),b&&b()}),f=va(d,"error","onerror",function(b){k();
-f();I("error",p("scriptError",[a,b]))});d.type="text/javascript";d.charset="utf-8";d.src=a;Va.insertBefore(d,Ha);return d};o.log=c;o.trace=c;var Ia=function(a,d,k){var m=arguments.length,c=["require","exports","module"],g=[0,a,d];1==m?g=[0,b(a)?c:[],a]:2==m&&f(a)?g=[a,b(d)?c:[],d]:3==m&&(g=[a,d,k]);o.trace("loader-define",g.slice(0,2));if((m=g[0]&&W(g[0]))&&!R[m.mid])ba(ua(m,g[1],g[2]));else if(!s("ie-event-behavior")||ta)ea.push(g);else{m=m||sa;if(!m)for(a in R)if((c=w[a])&&c.node&&"interactive"===
-c.node.readyState){m=c;break}m?(F(m),ba(ua(m,g[1],g[2]))):I("error",p("ieDefineFailed",g[0]));da()}};Ia.amd={vendor:"dojotoolkit.org"};d(d(o,j.loaderPatch),e.loaderPatch);J("error",function(a){try{if(a instanceof Error)for(var b in a);}catch(d){}});d(o,{uid:n,cache:K,packs:Q});if(!r.define){r.define=Ia;r.require=o;k(T,function(a){G(a)});var Ja=C.deps||e.deps||j.deps,Ka=C.callback||e.callback||j.callback;o.boot=Ja||Ka?[Ja||[],Ka]:0}})(this.dojoConfig||this.djConfig||this.require||{},{async:0,hasCache:{"config-selectorEngine":"acme",
+Z?Z.call(null):o.eval(a,s("dojo-loader-eval-hint-url")?b.url:b.mid)}catch(d){I("error",p("evalModuleThrew",b))}else a===Z?Z.call(null):o.eval(a,s("dojo-loader-eval-hint-url")?b.url:b.mid);ta=0},ya=function(a){var b=a.mid,l=a.url;if(!a.executed&&!a.injected&&!(R[b]||a.url&&(a.pack&&R[a.url]===a.pack||1==R[a.url])))if(La(a),a.plugin)Ga(a);else{var g=function(){Ta(a);2!==a.injected&&(ga(a),d(a,Fa),o.trace("loader-define-nonmodule",[a.url]));da()};(Z=K[b]||K["url:"+a.url])?(o.trace("loader-inject",["cache",
+a.mid,l]),Sa(Z,a),g()):(o.trace("loader-inject",["script",a.mid,l]),sa=a,o.injectUrl(Ea(l),g,a),sa=0)}},ua=function(a,l,g){o.trace("loader-define-module",[a.mid,l]);if(2===a.injected)return I("error",p("multipleDefine",a)),a;d(a,{deps:l,def:g,cjs:{id:a.mid,uri:a.url,exports:a.result={},setExports:function(b){a.cjs.exports=b},config:function(){return a.config}}});for(var c=0;c<l.length;c++)l[c]=W(l[c],a);ga(a);if(!b(g)&&!l.length)a.result=g,ra(a);return a},Ta=function(a,b){for(var d=[],g,c;ea.length;)c=
+ea.shift(),b&&(c[0]=b.shift()),g=c[0]&&W(c[0])||a,d.push([g,c[1],c[2]]);F(a);l(d,function(a){ba(ua.apply(null,a))})},ia=0,fa=e,za=e;fa=function(){ia&&clearTimeout(ia);ia=0};za=function(){fa();o.waitms&&(ia=window.setTimeout(function(){fa();I("error",p("timeout",R))},o.waitms))};s.add("ie-event-behavior",!!q.attachEvent&&("undefined"===typeof opera||"[object Opera]"!=opera.toString()));var va=function(a,b,d,l){if(s("ie-event-behavior"))return a.attachEvent(d,l),function(){a.detachEvent(d,l)};a.addEventListener(b,
+l,!1);return function(){a.removeEventListener(b,l,!1)}},Ua=va(window,"load","onload",function(){o.pageLoaded=1;"complete"!=q.readyState&&(q.readyState="complete");Ua()}),Ha=q.getElementsByTagName("script")[0],Va=Ha.parentNode;o.injectUrl=function(a,b,d){var d=d.node=q.createElement("script"),l=va(d,"load","onreadystatechange",function(a){var a=a||window.event,d=a.target||a.srcElement;if("load"===a.type||/complete|loaded/.test(d.readyState))l(),g(),b&&b()}),g=va(d,"error","onerror",function(b){l();
+g();I("error",p("scriptError",[a,b]))});d.type="text/javascript";d.charset="utf-8";d.src=a;Va.insertBefore(d,Ha);return d};o.log=e;o.trace=e;var Ia=function(a,d,l){var c=arguments.length,e=["require","exports","module"],m=[0,a,d];1==c?m=[0,b(a)?e:[],a]:2==c&&g(a)?m=[a,b(d)?e:[],d]:3==c&&(m=[a,d,l]);o.trace("loader-define",m.slice(0,2));if((c=m[0]&&W(m[0]))&&!R[c.mid])ba(ua(c,m[1],m[2]));else if(!s("ie-event-behavior")||ta)ea.push(m);else{c=c||sa;if(!c)for(a in R)if((e=w[a])&&e.node&&"interactive"===
+e.node.readyState){c=e;break}c?(F(c),ba(ua(c,m[1],m[2]))):I("error",p("ieDefineFailed",m[0]));da()}};Ia.amd={vendor:"dojotoolkit.org"};d(d(o,k.loaderPatch),f.loaderPatch);J("error",function(a){try{if(a instanceof Error)for(var b in a);}catch(d){}});d(o,{uid:n,cache:K,packs:Q});if(!r.define){r.define=Ia;r.require=o;l(T,function(a){G(a)});var Ja=C.deps||f.deps||k.deps,Ka=C.callback||f.callback||k.callback;o.boot=Ja||Ka?[Ja||[],Ka]:0}})(this.dojoConfig||this.djConfig||this.require||{},{async:0,hasCache:{"config-selectorEngine":"acme",
"config-tlmSiblingOfDojo":1,"dojo-built":1,"dojo-loader":1,dom:1,"host-browser":1},packages:[{location:".",name:"dojo"},{location:"../dijit",name:"dijit"},{location:"../dojox",name:"dojox"},{location:"../app",name:"app"}]});
-require({cache:{"dojo/i18n":function(){define("./_base/kernel,require,./has,./_base/array,./_base/config,./_base/lang,./_base/xhr,./json,module".split(","),function(e,j,i,l,c,g,h,b,f){i.add("dojo-preload-i18n-Api",1);var h=e.i18n={},a=/(^.*(^|\/)nls)(\/|$)([^\/]*)\/?([^\/]*)/,k=function(a,b,d,k){for(var f=[d+k],b=b.split("-"),m="",c=0;c<b.length;c++)m+=(m?"-":"")+b[c],(!a||a[m])&&f.push(d+m+"/"+k);return f},d={},p=function(a,b,d){d=d?d.toLowerCase():e.locale;a=a.replace(/\./g,"/");b=b.replace(/\./g,
-"/");return/root/i.test(d)?a+"/nls/"+b:a+"/nls/"+d+"/"+b};e.getL10nName=function(a,b,d){return f.id+"!"+p(a,b,d)};var m=function(a,b,f,m,c,p){a([b],function(h){var e=g.clone(h.root),o=k(!h._v1x&&h,c,f,m);a(o,function(){for(var a=1;a<o.length;a++)e=g.mixin(g.clone(e),arguments[a]);d[b+"/"+c]=e;p()})})},n=function(a){var b=c.extraLocale||[],b=g.isArray(b)?b:[b];b.push(a);return b},o=function(k,f,c){if(i("dojo-preload-i18n-Api")){var p=k.split("*"),h="preload"==p[1];h&&(d[k]||(d[k]=1,u(p[2],b.parse(p[3]),
-1,f)),c(1));if(!(p=h))v&&s.push([k,f,c]),p=v;if(p)return}var k=a.exec(k),o=k[1]+"/",r=k[5]||k[4],q=o+r,p=(k=k[5]&&k[4])||e.locale,j=q+"/"+p,k=k?[p]:n(p),z=k.length,y=function(){--z||c(g.delegate(d[j]))};l.forEach(k,function(a){var b=q+"/"+a;i("dojo-preload-i18n-Api")&&t(b);d[b]?y():m(f,q,o,r,a,y)})};if(i("dojo-unit-tests"))var r=h.unitTests=[];i("dojo-preload-i18n-Api");var q=h.normalizeLocale=function(a){a=a?a.toLowerCase():e.locale;return"root"==a?"ROOT":a},v=0,s=[],u=h._preloadLocalizations=function(a,
-b,k,f){function m(a,b){f([a],b)}function c(a,b){for(var d=a.split("-");d.length;){if(b(d.join("-")))return;d.pop()}b("ROOT")}function g(k){k=q(k);c(k,function(k){if(0<=l.indexOf(b,k)){var f=a.replace(/\./g,"/")+"_"+k;v++;m(f,function(a){for(var b in a)d[j.toAbsMid(b)+"/"+k]=a[b];for(--v;!v&&s.length;)o.apply(null,s.shift())});return!0}return!1})}f=f||j;g();l.forEach(e.config.extraLocale,g)},t=function(){},y={},z=new Function("__bundle","__checkForLegacyModules","__mid","__amdValue","var define = function(mid, factory){define.called = 1; __amdValue.result = factory || mid;},\t require = function(){define.called = 1;};try{define.called = 0;eval(__bundle);if(define.called==1)return __amdValue;if((__checkForLegacyModules = __checkForLegacyModules(__mid)))return __checkForLegacyModules;}catch(e){}try{return eval('('+__bundle+')');}catch(e){return e;}"),
-t=function(a){for(var b,k=a.split("/"),f=e.global[k[0]],m=1;f&&m<k.length-1;f=f[k[m++]]);f&&((b=f[k[m]])||(b=f[k[m].replace(/-/g,"_")]),b&&(d[a]=b));return b};h.getLocalization=function(a,b,d){var k,a=p(a,b,d);o(a,j,function(a){k=a});return k};i("dojo-unit-tests")&&r.push(function(a){a.register("tests.i18n.unit",function(a){var b;b=z("{prop:1}",t,"nonsense",y);a.is({prop:1},b);a.is(void 0,b[1]);b=z("({prop:1})",t,"nonsense",y);a.is({prop:1},b);a.is(void 0,b[1]);b=z("{'prop-x':1}",t,"nonsense",y);
-a.is({"prop-x":1},b);a.is(void 0,b[1]);b=z("({'prop-x':1})",t,"nonsense",y);a.is({"prop-x":1},b);a.is(void 0,b[1]);b=z("define({'prop-x':1})",t,"nonsense",y);a.is(y,b);a.is({"prop-x":1},y.result);b=z("define('some/module', {'prop-x':1})",t,"nonsense",y);a.is(y,b);a.is({"prop-x":1},y.result);b=z("this is total nonsense and should throw an error",t,"nonsense",y);a.is(b instanceof Error,!0)})});return g.mixin(h,{dynamic:!0,normalize:function(a,b){return/^\./.test(a)?b(a):a},load:o,cache:d})})},"dojo/_base/kernel":function(){define(["../has",
-"./config","require","module"],function(e,j,i,l){var c,g={},h={},b={config:j,global:this,dijit:g,dojox:h},g={dojo:["dojo",b],dijit:["dijit",g],dojox:["dojox",h]},l=i.map&&i.map[l.id.match(/[^\/]+/)[0]];for(c in l)g[c]?g[c][0]=l[c]:g[c]=[l[c],{}];for(c in g)l=g[c],l[1]._scopeName=l[0],j.noGlobals||(this[l[0]]=l[1]);b.scopeMap=g;b.baseUrl=b.config.baseUrl=i.baseUrl;b.isAsync=i.async;b.locale=j.locale;l="$Rev: 29801 $".match(/\d+/);b.version={major:1,minor:8,patch:1,flag:"",revision:l?+l[0]:NaN,toString:function(){var a=
-b.version;return a.major+"."+a.minor+"."+a.patch+a.flag+" ("+a.revision+")"}};Function("d","d.eval = function(){return d.global.eval ? d.global.eval(arguments[0]) : eval(arguments[0]);}")(b);b.exit=function(){};"undefined"!=typeof console||(console={});for(var g="assert,count,debug,dir,dirxml,error,group,groupEnd,info,profile,profileEnd,time,timeEnd,trace,warn,log".split(","),f,l=0;f=g[l++];)console[f]||function(){var a=f+"";console[a]="log"in console?function(){var b=Array.apply({},arguments);b.unshift(a+
-":");console.log(b.join(" "))}:function(){};console[a]._fake=!0}();e.add("dojo-debug-messages",!!j.isDebug);b.deprecated=b.experimental=function(){};if(e("dojo-debug-messages"))b.deprecated=function(){},b.experimental=function(){};if(j.modulePaths){b.deprecated("dojo.modulePaths","use paths configuration");e={};for(c in j.modulePaths)e[c.replace(/\./g,"/")]=j.modulePaths[c];i({paths:e})}b.moduleUrl=function(a,k){b.deprecated("dojo.moduleUrl()","use require.toUrl","2.0");var d=null;a&&(d=i.toUrl(a.replace(/\./g,
-"/")+(k?"/"+k:"")+"/*.*").replace(/\/\*\.\*/,"")+(k?"":"/"));return d};b._hasResource={};return b})},"dojo/has":function(){define(["require","module"],function(e){var j=e.has||function(){};j.add("dom-addeventlistener",!!document.addEventListener);j.add("touch","ontouchstart"in document);j.add("device-width",screen.availWidth||innerWidth);e=document.createElement("form");j.add("dom-attributes-explicit",0==e.attributes.length);j.add("dom-attributes-specified-flag",0<e.attributes.length&&40>e.attributes.length);
-j.clearElement=function(e){e.innerHTML="";return e};j.normalize=function(e,l){var c=e.match(/[\?:]|[^:\?]*/g),g=0,h=function(b){var f=c[g++];if(":"==f)return 0;if("?"==c[g++]){if(!b&&j(f))return h();h(!0);return h(b)}return f||0};return(e=h())&&l(e)};j.load=function(e,l,c){e?l([e],c):c()};return j})},"dojo/_base/config":function(){define(["../has","require"],function(e,j){var i={},l=j.rawConfig,c;for(c in l)i[c]=l[c];return i})},"dojo/_base/array":function(){define(["./kernel","../has","./lang"],
-function(e,j,i){function l(a){return h[a]=new Function("item","index","array",a)}function c(a){var b=!a;return function(d,f,m){var c=0,g=d&&d.length||0,e;g&&"string"==typeof d&&(d=d.split(""));"string"==typeof f&&(f=h[f]||l(f));if(m)for(;c<g;++c){if(e=!f.call(m,d[c],c,d),a^e)return!e}else for(;c<g;++c)if(e=!f(d[c],c,d),a^e)return!e;return b}}function g(a){var k=1,d=0,c=0;a||(k=d=c=-1);return function(m,g,e,h){if(h&&0<k)return f.lastIndexOf(m,g,e);var h=m&&m.length||0,l=a?h+c:d;e===b?e=a?d:h+c:0>e?
-(e=h+e,0>e&&(e=d)):e=e>=h?h+c:e;for(h&&"string"==typeof m&&(m=m.split(""));e!=l;e+=k)if(m[e]==g)return e;return-1}}var h={},b,f={every:c(!1),some:c(!0),indexOf:g(!0),lastIndexOf:g(!1),forEach:function(a,b,d){var f=0,m=a&&a.length||0;m&&"string"==typeof a&&(a=a.split(""));"string"==typeof b&&(b=h[b]||l(b));if(d)for(;f<m;++f)b.call(d,a[f],f,a);else for(;f<m;++f)b(a[f],f,a)},map:function(a,b,d,f){var m=0,c=a&&a.length||0,f=new (f||Array)(c);c&&"string"==typeof a&&(a=a.split(""));"string"==typeof b&&
-(b=h[b]||l(b));if(d)for(;m<c;++m)f[m]=b.call(d,a[m],m,a);else for(;m<c;++m)f[m]=b(a[m],m,a);return f},filter:function(a,b,d){var f=0,m=a&&a.length||0,c=[],g;m&&"string"==typeof a&&(a=a.split(""));"string"==typeof b&&(b=h[b]||l(b));if(d)for(;f<m;++f)g=a[f],b.call(d,g,f,a)&&c.push(g);else for(;f<m;++f)g=a[f],b(g,f,a)&&c.push(g);return c},clearCache:function(){h={}}};i.mixin(e,f);return f})},"dojo/_base/lang":function(){define(["./kernel","../has","../sniff"],function(e,j){j.add("bug-for-in-skips-shadowed",
-function(){for(var a in{toString:1})return 0;return 1});var i=j("bug-for-in-skips-shadowed")?"hasOwnProperty.valueOf.isPrototypeOf.propertyIsEnumerable.toLocaleString.toString.constructor".split("."):[],l=i.length,c=function(a,b,d){var f,m=0,c=e.global;if(!d)if(a.length){f=a[m++];try{d=e.scopeMap[f]&&e.scopeMap[f][1]}catch(g){}d=d||(f in c?c[f]:b?c[f]={}:void 0)}else return c;for(;d&&(f=a[m++]);)d=f in d?d[f]:b?d[f]={}:void 0;return d},g=Object.prototype.toString,h=function(a,b,d){return(d||[]).concat(Array.prototype.slice.call(a,
-b||0))},b=/\{([^\}]+)\}/g,f={_extraNames:i,_mixin:function(a,b,d){var f,m,c,g={};for(f in b)if(m=b[f],!(f in a)||a[f]!==m&&(!(f in g)||g[f]!==m))a[f]=d?d(m):m;if(j("bug-for-in-skips-shadowed")&&b)for(c=0;c<l;++c)if(f=i[c],m=b[f],!(f in a)||a[f]!==m&&(!(f in g)||g[f]!==m))a[f]=d?d(m):m;return a},mixin:function(a,b){a||(a={});for(var d=1,c=arguments.length;d<c;d++)f._mixin(a,arguments[d]);return a},setObject:function(a,b,d){var f=a.split("."),a=f.pop();return(d=c(f,!0,d))&&a?d[a]=b:void 0},getObject:function(a,
-b,d){return c(a.split("."),b,d)},exists:function(a,b){return void 0!==f.getObject(a,!1,b)},isString:function(a){return"string"==typeof a||a instanceof String},isArray:function(a){return a&&(a instanceof Array||"array"==typeof a)},isFunction:function(a){return"[object Function]"===g.call(a)},isObject:function(a){return void 0!==a&&(null===a||"object"==typeof a||f.isArray(a)||f.isFunction(a))},isArrayLike:function(a){return a&&void 0!==a&&!f.isString(a)&&!f.isFunction(a)&&!(a.tagName&&"form"==a.tagName.toLowerCase())&&
-(f.isArray(a)||isFinite(a.length))},isAlien:function(a){return a&&!f.isFunction(a)&&/\{\s*\[native code\]\s*\}/.test(""+a)},extend:function(a,b){for(var d=1,c=arguments.length;d<c;d++)f._mixin(a.prototype,arguments[d]);return a},_hitchArgs:function(a,b){var d=f._toArray(arguments,2),c=f.isString(b);return function(){var m=f._toArray(arguments),g=c?(a||e.global)[b]:b;return g&&g.apply(a||this,d.concat(m))}},hitch:function(a,b){if(2<arguments.length)return f._hitchArgs.apply(e,arguments);b||(b=a,a=
-null);if(f.isString(b)){a=a||e.global;if(!a[b])throw['lang.hitch: scope["',b,'"] is null (scope="',a,'")'].join("");return function(){return a[b].apply(a,arguments||[])}}return!a?b:function(){return b.apply(a,arguments||[])}},delegate:function(){function a(){}return function(b,d){a.prototype=b;var c=new a;a.prototype=null;d&&f._mixin(c,d);return c}}(),_toArray:j("ie")?function(){function a(a,b,f){f=f||[];for(b=b||0;b<a.length;b++)f.push(a[b]);return f}return function(b){return(b.item?a:h).apply(this,
-arguments)}}():h,partial:function(a){return f.hitch.apply(e,[null].concat(f._toArray(arguments)))},clone:function(a){if(!a||"object"!=typeof a||f.isFunction(a))return a;if(a.nodeType&&"cloneNode"in a)return a.cloneNode(!0);if(a instanceof Date)return new Date(a.getTime());if(a instanceof RegExp)return RegExp(a);var b,d,c;if(f.isArray(a)){b=[];for(d=0,c=a.length;d<c;++d)d in a&&b.push(f.clone(a[d]))}else b=a.constructor?new a.constructor:{};return f._mixin(b,a,f.clone)},trim:String.prototype.trim?
-function(a){return a.trim()}:function(a){return a.replace(/^\s\s*/,"").replace(/\s\s*$/,"")},replace:function(a,k,d){return a.replace(d||b,f.isFunction(k)?k:function(a,b){return f.getObject(b,!1,k)})}};f.mixin(e,f);return f})},"dojo/sniff":function(){define(["./has"],function(e){var j=navigator,i=j.userAgent,j=j.appVersion,l=parseFloat(j);e.add("air",0<=i.indexOf("AdobeAIR"));e.add("khtml",0<=j.indexOf("Konqueror")?l:void 0);e.add("webkit",parseFloat(i.split("WebKit/")[1])||void 0);e.add("chrome",
-parseFloat(i.split("Chrome/")[1])||void 0);e.add("safari",0<=j.indexOf("Safari")&&!e("chrome")?parseFloat(j.split("Version/")[1]):void 0);e.add("mac",0<=j.indexOf("Macintosh"));e.add("quirks","BackCompat"==document.compatMode);e.add("ios",/iPhone|iPod|iPad/.test(i));e.add("android",parseFloat(i.split("Android ")[1])||void 0);if(!e("webkit")){0<=i.indexOf("Opera")&&e.add("opera",9.8<=l?parseFloat(i.split("Version/")[1])||l:l);0<=i.indexOf("Gecko")&&!e("khtml")&&!e("webkit")&&e.add("mozilla",l);e("mozilla")&&
-e.add("ff",parseFloat(i.split("Firefox/")[1]||i.split("Minefield/")[1])||void 0);if(document.all&&!e("opera"))i=parseFloat(j.split("MSIE ")[1])||void 0,(j=document.documentMode)&&5!=j&&Math.floor(i)!=j&&(i=j),e.add("ie",i);e.add("wii","undefined"!=typeof opera&&opera.wiiremote)}return e})},"dojo/_base/xhr":function(){define("./kernel,./sniff,require,../io-query,../dom,../dom-form,./Deferred,./config,./json,./lang,./array,../on,../aspect,../request/watch,../request/xhr,../request/util".split(","),
-function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o){e._xhrObj=n._create;var r=e.config;e.objectToQuery=l.objectToQuery;e.queryToObject=l.queryToObject;e.fieldToObject=g.fieldToObject;e.formToObject=g.toObject;e.formToQuery=g.toQuery;e.formToJson=g.toJson;e._blockAsync=!1;var q=e._contentHandlers=e.contentHandlers={text:function(a){return a.responseText},json:function(a){return f.fromJson(a.responseText||null)},"json-comment-filtered":function(a){var a=a.responseText,b=a.indexOf("/*"),d=a.lastIndexOf("*/");
-if(-1==b||-1==d)throw Error("JSON was not comment filtered");return f.fromJson(a.substring(b+2,d))},javascript:function(a){return e.eval(a.responseText)},xml:function(a){var b=a.responseXML;if(j("ie")&&(!b||!b.documentElement)){var d=function(a){return"MSXML"+a+".DOMDocument"},d=["Microsoft.XMLDOM",d(6),d(4),d(3),d(2)];k.some(d,function(d){try{var f=new ActiveXObject(d);f.async=!1;f.loadXML(a.responseText);b=f}catch(k){return!1}return!0})}return b},"json-comment-optional":function(a){return a.responseText&&
-/^[^{\[]*\/\*/.test(a.responseText)?q["json-comment-filtered"](a):q.json(a)}};e._ioSetArgs=function(b,d,f,k){var m={args:b,url:b.url},p=null;if(b.form){var p=c.byId(b.form),o=p.getAttributeNode("action");m.url=m.url||(o?o.value:null);p=g.toObject(p)}o=[{}];p&&o.push(p);b.content&&o.push(b.content);b.preventCache&&o.push({"dojo.preventCache":(new Date).valueOf()});m.query=l.objectToQuery(a.mixin.apply(null,o));m.handleAs=b.handleAs||"text";var n=new h(function(a){a.canceled=!0;d&&d(a);var b=a.ioArgs.error;
-if(!b)b=Error("request cancelled"),b.dojoType="cancel",a.ioArgs.error=b;return b});n.addCallback(f);var i=b.load;i&&a.isFunction(i)&&n.addCallback(function(a){return i.call(b,a,m)});var u=b.error;u&&a.isFunction(u)&&n.addErrback(function(a){return u.call(b,a,m)});var q=b.handle;q&&a.isFunction(q)&&n.addBoth(function(a){return q.call(b,a,m)});n.addErrback(function(a){return k(a,n)});r.ioPublish&&e.publish&&!1!==m.args.ioPublish&&(n.addCallbacks(function(a){e.publish("/dojo/io/load",[n,a]);return a},
-function(a){e.publish("/dojo/io/error",[n,a]);return a}),n.addBoth(function(a){e.publish("/dojo/io/done",[n,a]);return a}));n.ioArgs=m;return n};var v=function(a){a=q[a.ioArgs.handleAs](a.ioArgs.xhr);return void 0===a?null:a},s=function(a){return a},u=function(a){0>=t&&(t=0,r.ioPublish&&e.publish&&(!a||a&&!1!==a.ioArgs.args.ioPublish)&&e.publish("/dojo/io/stop"))},t=0;p.after(m,"_onAction",function(){t-=1});p.after(m,"_onInFlight",u);e._ioCancelAll=m.cancelAll;e._ioNotifyStart=function(a){r.ioPublish&&
-e.publish&&!1!==a.ioArgs.args.ioPublish&&(t||e.publish("/dojo/io/start"),t+=1,e.publish("/dojo/io/send",[a]))};e._ioWatch=function(b,d,f,k){b.ioArgs.options=b.ioArgs.args;a.mixin(b,{response:b.ioArgs,isValid:function(){return d(b)},isReady:function(){return f(b)},handleResponse:function(){return k(b)}});m(b);u(b)};e._ioAddQueryToUrl=function(a){if(a.query.length)a.url+=(-1==a.url.indexOf("?")?"?":"&")+a.query,a.query=null};e.xhr=function(a,b,d){var f,k=e._ioSetArgs(b,function(){f&&f.cancel()},v,s),
-m=k.ioArgs;"postData"in b?m.query=b.postData:"putData"in b?m.query=b.putData:"rawBody"in b?m.query=b.rawBody:(2<arguments.length&&!d||-1==="POST|PUT".indexOf(a.toUpperCase()))&&e._ioAddQueryToUrl(m);var c={method:a,handleAs:"text",timeout:b.timeout,withCredentials:b.withCredentials,ioArgs:m};if("undefined"!==typeof b.headers)c.headers=b.headers;if("undefined"!==typeof b.contentType){if(!c.headers)c.headers={};c.headers["Content-Type"]=b.contentType}if("undefined"!==typeof m.query)c.data=m.query;if("undefined"!==
-typeof b.sync)c.sync=b.sync;e._ioNotifyStart(k);try{f=n(m.url,c,!0)}catch(g){return k.cancel(),k}k.ioArgs.xhr=f.response.xhr;f.then(function(){k.resolve(k)}).otherwise(function(a){m.error=a;if(a.response)a.status=a.response.status,a.responseText=a.response.text,a.xhr=a.response.xhr;k.reject(a)});return k};e.xhrGet=function(a){return e.xhr("GET",a)};e.rawXhrPost=e.xhrPost=function(a){return e.xhr("POST",a,!0)};e.rawXhrPut=e.xhrPut=function(a){return e.xhr("PUT",a,!0)};e.xhrDelete=function(a){return e.xhr("DELETE",
-a)};e._isDocumentOk=function(a){return o.checkStatus(a.status)};e._getText=function(a){var b;e.xhrGet({url:a,sync:!0,load:function(a){b=a}});return b};a.mixin(e.xhr,{_xhrObj:e._xhrObj,fieldToObject:g.fieldToObject,formToObject:g.toObject,objectToQuery:l.objectToQuery,formToQuery:g.toQuery,formToJson:g.toJson,queryToObject:l.queryToObject,contentHandlers:q,_ioSetArgs:e._ioSetArgs,_ioCancelAll:e._ioCancelAll,_ioNotifyStart:e._ioNotifyStart,_ioWatch:e._ioWatch,_ioAddQueryToUrl:e._ioAddQueryToUrl,_isDocumentOk:e._isDocumentOk,
-_getText:e._getText,get:e.xhrGet,post:e.xhrPost,put:e.xhrPut,del:e.xhrDelete});return e.xhr})},"dojo/_base/sniff":function(){define(["./kernel","./lang","../sniff"],function(e,j,i){e._name="browser";j.mixin(e,{isBrowser:!0,isFF:i("ff"),isIE:i("ie"),isKhtml:i("khtml"),isWebKit:i("webkit"),isMozilla:i("mozilla"),isMoz:i("mozilla"),isOpera:i("opera"),isSafari:i("safari"),isChrome:i("chrome"),isMac:i("mac"),isIos:i("ios"),isAndroid:i("android"),isWii:i("wii"),isQuirks:i("quirks"),isAir:i("air")});e.locale=
-e.locale||(i("ie")?navigator.userLanguage:navigator.language).toLowerCase();return i})},"dojo/io-query":function(){define(["./_base/lang"],function(e){var j={};return{objectToQuery:function(i){var l=encodeURIComponent,c=[],g;for(g in i){var h=i[g];if(h!=j[g]){var b=l(g)+"=";if(e.isArray(h))for(var f=0,a=h.length;f<a;++f)c.push(b+l(h[f]));else c.push(b+l(h))}}return c.join("&")},queryToObject:function(i){for(var l=decodeURIComponent,i=i.split("&"),c={},g,h,b=0,f=i.length;b<f;++b)if(h=i[b],h.length){var a=
-h.indexOf("=");0>a?(g=l(h),h=""):(g=l(h.slice(0,a)),h=l(h.slice(a+1)));"string"==typeof c[g]&&(c[g]=[c[g]]);e.isArray(c[g])?c[g].push(h):c[g]=h}return c}}})},"dojo/dom":function(){define(["./sniff","./_base/lang","./_base/window"],function(e,j,i){if(7>=e("ie"))try{document.execCommand("BackgroundImageCache",!1,!0)}catch(l){}var c={};c.byId=e("ie")?function(c,e){if("string"!=typeof c)return c;var b=e||i.doc,f=c&&b.getElementById(c);if(f&&(f.attributes.id.value==c||f.id==c))return f;b=b.all[c];if(!b||
-b.nodeName)b=[b];for(var a=0;f=b[a++];)if(f.attributes&&f.attributes.id&&f.attributes.id.value==c||f.id==c)return f}:function(c,e){return("string"==typeof c?(e||i.doc).getElementById(c):c)||null};c.isDescendant=function(g,e){try{g=c.byId(g);for(e=c.byId(e);g;){if(g==e)return!0;g=g.parentNode}}catch(b){}return!1};c.setSelectable=function(g,h){g=c.byId(g);if(e("mozilla"))g.style.MozUserSelect=h?"":"none";else if(e("khtml")||e("webkit"))g.style.KhtmlUserSelect=h?"auto":"none";else if(e("ie"))for(var b=
-g.unselectable=h?"":"on",f=g.getElementsByTagName("*"),a=0,k=f.length;a<k;++a)f.item(a).unselectable=b};return c})},"dojo/_base/window":function(){define(["./kernel","./lang","../sniff"],function(e,j,i){var l={global:e.global,doc:this.document||null,body:function(c){c=c||e.doc;return c.body||c.getElementsByTagName("body")[0]},setContext:function(c,g){e.global=l.global=c;e.doc=l.doc=g},withGlobal:function(c,g,h,b){var f=e.global;try{return e.global=l.global=c,l.withDoc.call(null,c.document,g,h,b)}finally{e.global=
-l.global=f}},withDoc:function(c,g,h,b){var f=l.doc,a=i("quirks"),k=i("ie"),d,p,m;try{e.doc=l.doc=c;e.isQuirks=i.add("quirks","BackCompat"==e.doc.compatMode,!0,!0);if(i("ie")&&(m=c.parentWindow)&&m.navigator)d=parseFloat(m.navigator.appVersion.split("MSIE ")[1])||void 0,(p=c.documentMode)&&5!=p&&Math.floor(d)!=p&&(d=p),e.isIE=i.add("ie",d,!0,!0);h&&"string"==typeof g&&(g=h[g]);return g.apply(h,b||[])}finally{e.doc=l.doc=f,e.isQuirks=i.add("quirks",a,!0,!0),e.isIE=i.add("ie",k,!0,!0)}}};j.mixin(e,l);
-return l})},"dojo/dom-form":function(){define(["./_base/lang","./dom","./io-query","./json"],function(e,j,i,l){var c={fieldToObject:function(c){var e=null;if(c=j.byId(c)){var b=c.name,f=(c.type||"").toLowerCase();if(b&&f&&!c.disabled)if("radio"==f||"checkbox"==f){if(c.checked)e=c.value}else if(c.multiple){e=[];for(c=[c.firstChild];c.length;)for(b=c.pop();b;b=b.nextSibling)if(1==b.nodeType&&"option"==b.tagName.toLowerCase())b.selected&&e.push(b.value);else{b.nextSibling&&c.push(b.nextSibling);b.firstChild&&
-c.push(b.firstChild);break}}else e=c.value}return e},toObject:function(g){for(var h={},g=j.byId(g).elements,b=0,f=g.length;b<f;++b){var a=g[b],k=a.name,d=(a.type||"").toLowerCase();if(k&&d&&0>"file|submit|image|reset|button".indexOf(d)&&!a.disabled){var p=h,m=k,a=c.fieldToObject(a);if(null!==a){var n=p[m];"string"==typeof n?p[m]=[n,a]:e.isArray(n)?n.push(a):p[m]=a}if("image"==d)h[k+".x"]=h[k+".y"]=h[k].x=h[k].y=0}}return h},toQuery:function(g){return i.objectToQuery(c.toObject(g))},toJson:function(g,
-e){return l.stringify(c.toObject(g),null,e?4:0)}};return c})},"dojo/json":function(){define(["./has"],function(e){var j="undefined"!=typeof JSON;e.add("json-parse",j);e.add("json-stringify",j&&'{"a":1}'==JSON.stringify({a:0},function(e,c){return c||1}));if(e("json-stringify"))return JSON;var i=function(e){return('"'+e.replace(/(["\\])/g,"\\$1")+'"').replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r")};return{parse:e("json-parse")?JSON.parse:
-function(e,c){if(c&&!/^([\s\[\{]*(?:"(?:\\.|[^"])+"|-?\d[\d\.]*(?:[Ee][+-]?\d+)?|null|true|false|)[\s\]\}]*(?:,|:|$))+$/.test(e))throw new SyntaxError("Invalid characters in JSON");return eval("("+e+")")},stringify:function(e,c,g){function h(f,a,k){c&&(f=c(k,f));var d;d=typeof f;if("number"==d)return isFinite(f)?f+"":"null";if("boolean"==d)return f+"";if(null===f)return"null";if("string"==typeof f)return i(f);if("function"==d||"undefined"==d)return b;if("function"==typeof f.toJSON)return h(f.toJSON(k),
-a,k);if(f instanceof Date)return'"{FullYear}-{Month+}-{Date}T{Hours}:{Minutes}:{Seconds}Z"'.replace(/\{(\w+)(\+)?\}/g,function(a,b,d){a=f["getUTC"+b]()+(d?1:0);return 10>a?"0"+a:a});if(f.valueOf()!==f)return h(f.valueOf(),a,k);var e=g?a+g:"",m=g?" ":"",n=g?"\n":"";if(f instanceof Array){for(var m=f.length,o=[],k=0;k<m;k++)d=h(f[k],e,k),"string"!=typeof d&&(d="null"),o.push(n+e+d);return"["+o.join(",")+n+a+"]"}o=[];for(k in f){var l;if(f.hasOwnProperty(k)){if("number"==typeof k)l='"'+k+'"';else if("string"==
-typeof k)l=i(k);else continue;d=h(f[k],e,k);"string"==typeof d&&o.push(n+e+l+":"+m+d)}}return"{"+o.join(",")+n+a+"}"}var b;"string"==typeof c&&(g=c,c=null);return h(e,"","")}}})},"dojo/_base/Deferred":function(){define("./kernel,../Deferred,../promise/Promise,../errors/CancelError,../has,./lang,../when".split(","),function(e,j,i,l,c,g,h){var b=function(){},f=Object.freeze||function(){},a=e.Deferred=function(k){function d(a){if(h)throw Error("This deferred has already been resolved");m=a;h=!0;e()}
-function e(){for(var a;!a&&q;){var d=q;q=q.next;if(a=d.progress==b)h=!1;var f=o?d.error:d.resolved;c("config-useDeferredInstrumentation")&&o&&j.instrumentRejected&&j.instrumentRejected(m,!!f);if(f)try{var k=f(m);k&&"function"===typeof k.then?k.then(g.hitch(d.deferred,"resolve"),g.hitch(d.deferred,"reject"),g.hitch(d.deferred,"progress")):(f=a&&void 0===k,a&&!f&&(o=k instanceof Error),d.deferred[f&&o?"reject":"resolve"](f?m:k))}catch(p){d.deferred.reject(p)}else o?d.deferred.reject(m):d.deferred.resolve(m)}}
-var m,h,o,r,q,v=this.promise=new i;this.resolve=this.callback=function(a){this.fired=0;this.results=[a,null];d(a)};this.reject=this.errback=function(a){o=!0;this.fired=1;c("config-useDeferredInstrumentation")&&j.instrumentRejected&&j.instrumentRejected(a,!!q);d(a);this.results=[null,a]};this.progress=function(a){for(var b=q;b;){var d=b.progress;d&&d(a);b=b.next}};this.addCallbacks=function(a,d){this.then(a,d,b);return this};v.then=this.then=function(d,f,k){var c=k==b?this:new a(v.cancel),d={resolved:d,
-error:f,progress:k,deferred:c};q?r=r.next=d:q=r=d;h&&e();return c.promise};var s=this;v.cancel=this.cancel=function(){if(!h){var a=k&&k(s);if(!h)a instanceof Error||(a=new l(a)),a.log=!1,s.reject(a)}};f(v)};g.extend(a,{addCallback:function(a){return this.addCallbacks(g.hitch.apply(e,arguments))},addErrback:function(a){return this.addCallbacks(null,g.hitch.apply(e,arguments))},addBoth:function(a){var b=g.hitch.apply(e,arguments);return this.addCallbacks(b,b)},fired:-1});a.when=e.when=h;return a})},
-"dojo/Deferred":function(){define("dojo/Deferred",["./has","./_base/lang","./errors/CancelError","./promise/Promise","./promise/instrumentation"],function(e,j,i,l,c){var g=Object.freeze||function(){},h=function(a,f,c,g,e){2===f&&k.instrumentRejected&&0===a.length&&k.instrumentRejected(c,!1,g,e);for(e=0;e<a.length;e++)b(a[e],f,c,g)},b=function(b,c,m,g){var e=b[c],h=b.deferred;if(e)try{var l=e(m);if(0===c)"undefined"!==typeof l&&a(h,c,l);else{if(l&&"function"===typeof l.then){b.cancel=l.cancel;l.then(f(h,
-1),f(h,2),f(h,0));return}a(h,1,l)}}catch(i){a(h,2,i)}else a(h,c,m);2===c&&k.instrumentRejected&&k.instrumentRejected(m,!!e,g,h.promise)},f=function(b,f){return function(k){a(b,f,k)}},a=function(a,b,f){if(!a.isCanceled())switch(b){case 0:a.progress(f);break;case 1:a.resolve(f);break;case 2:a.reject(f)}},k=function(a){var f=this.promise=new l,c=this,e,o,r,q=!1,j=[];Error.captureStackTrace&&(Error.captureStackTrace(c,k),Error.captureStackTrace(f,k));this.isResolved=f.isResolved=function(){return 1===
-e};this.isRejected=f.isRejected=function(){return 2===e};this.isFulfilled=f.isFulfilled=function(){return!!e};this.isCanceled=f.isCanceled=function(){return q};this.progress=function(a,b){if(e){if(!0===b)throw Error("This deferred has already been fulfilled.");return f}h(j,0,a,null,c);return f};this.resolve=function(a,b){if(e){if(!0===b)throw Error("This deferred has already been fulfilled.");return f}h(j,e=1,o=a,null,c);j=null;return f};var s=this.reject=function(a,b){if(e){if(!0===b)throw Error("This deferred has already been fulfilled.");
-return f}Error.captureStackTrace&&Error.captureStackTrace(r={},s);h(j,e=2,o=a,r,c);j=null;return f};this.then=f.then=function(a,d,c){var m=[c,a,d];m.cancel=f.cancel;m.deferred=new k(function(a){return m.cancel&&m.cancel(a)});e&&!j?b(m,e,o,r):j.push(m);return m.deferred.promise};this.cancel=f.cancel=function(b,f){if(e){if(!0===f)throw Error("This deferred has already been fulfilled.");}else{if(a)var k=a(b),b="undefined"===typeof k?b:k;q=!0;if(e){if(2===e&&o===b)return b}else return"undefined"===typeof b&&
-(b=new i),s(b),b}};g(f)};k.prototype.toString=function(){return"[object Deferred]"};c&&c(k);return k})},"dojo/errors/CancelError":function(){define(["./create"],function(e){return e("CancelError",null,null,{dojoType:"cancel"})})},"dojo/errors/create":function(){define(["../_base/lang"],function(e){return function(j,i,l,c){var l=l||Error,g=function(c){if(l===Error){Error.captureStackTrace&&Error.captureStackTrace(this,g);var b=Error.call(this,c),f;for(f in b)b.hasOwnProperty(f)&&(this[f]=b[f]);this.message=
-c;this.stack=b.stack}else l.apply(this,arguments);i&&i.apply(this,arguments)};g.prototype=e.delegate(l.prototype,c);g.prototype.name=j;return g.prototype.constructor=g}})},"dojo/promise/Promise":function(){define(["../_base/lang"],function(e){function j(){throw new TypeError("abstract");}return e.extend(function(){},{then:function(){j()},cancel:function(){j()},isResolved:function(){j()},isRejected:function(){j()},isFulfilled:function(){j()},isCanceled:function(){j()},always:function(e){return this.then(e,
-e)},otherwise:function(e){return this.then(null,e)},trace:function(){return this},traceRejected:function(){return this},toString:function(){return"[object Promise]"}})})},"dojo/promise/instrumentation":function(){define(["./tracer","../has","../_base/lang","../_base/array"],function(e,j,i,l){function c(a,b){b&&b.stack&&b.stack.split("\n").slice(1).join("\n").replace(/^\s+/," ")}function g(a,b,f,k){b||c(a,f,k)}function h(d,c,m,g){c?l.some(f,function(a,b){if(a.error===d)return f.splice(b,1),!0}):l.some(f,
-function(a){return a.error===d})||f.push({error:d,rejection:m,deferred:g,timestamp:(new Date).getTime()});a||(a=setTimeout(b,k))}function b(){var d=(new Date).getTime(),g=d-k;f=l.filter(f,function(a){return a.timestamp<g?(c(a.error,a.rejection,a.deferred),!1):!0});f.length&&(a=setTimeout(b,f[0].timestamp+k-d))}var f=[],a=!1,k=1E3;return function(a){var b=j("config-useDeferredInstrumentation");if(b){e.on("resolved",i.hitch(console,"log","resolved"));e.on("rejected",i.hitch(console,"log","rejected"));
-e.on("progress",i.hitch(console,"log","progress"));var f=[];"string"===typeof b&&(f=b.split(","),b=f.shift());if("report-rejections"===b)a.instrumentRejected=g;else if("report-unhandled-rejections"===b||!0===b||1===b)a.instrumentRejected=h,k=parseInt(f[0],10)||k;else throw Error("Unsupported instrumentation usage <"+b+">");}}})},"dojo/promise/tracer":function(){define(["../_base/lang","./Promise","../Evented"],function(e,j,i){function l(e){setTimeout(function(){g.apply(c,e)},0)}var c=new i,g=c.emit;
-c.emit=null;j.prototype.trace=function(){var c=e._toArray(arguments);this.then(function(b){l(["resolved",b].concat(c))},function(b){l(["rejected",b].concat(c))},function(b){l(["progress",b].concat(c))});return this};j.prototype.traceRejected=function(){var c=e._toArray(arguments);this.otherwise(function(b){l(["rejected",b].concat(c))});return this};return c})},"dojo/Evented":function(){define("dojo/Evented",["./aspect","./on"],function(e,j){function i(){}var l=e.after;i.prototype={on:function(c,g){return j.parse(this,
-c,g,function(c,b){return l(c,"on"+b,g,!0)})},emit:function(c,g){var e=[this];e.push.apply(e,arguments);return j.emit.apply(j,e)}};return i})},"dojo/aspect":function(){define("dojo/aspect",[],function(){function e(b,f,a,k){var d=b[f],c="around"==f,m;if(c){var g=a(function(){return d.advice(this,arguments)});m={remove:function(){m.cancelled=!0},advice:function(a,b){return m.cancelled?d.advice(a,b):g.apply(a,b)}}}else m={remove:function(){var a=m.previous,d=m.next;if(!d&&!a)delete b[f];else if(a?a.next=
-d:b[f]=d,d)d.previous=a},id:l++,advice:a,receiveArguments:k};if(d&&!c)if("after"==f){for(a=d;a;)d=a,a=a.next;d.next=m;m.previous=d}else{if("before"==f)b[f]=m,m.next=d,d.previous=m}else b[f]=m;return m}function j(b){return function(f,a,k,d){var c=f[a],m;if(!c||c.target!=f){f[a]=m=function(){for(var a=l,b=arguments,d=m.before;d;)b=d.advice.apply(this,b)||b,d=d.next;if(m.around)var f=m.around.advice(this,b);for(d=m.after;d&&d.id<a;){if(d.receiveArguments)var k=d.advice.apply(this,b),f=k===i?f:k;else f=
-d.advice.call(this,f,b);d=d.next}return f};if(c)m.around={advice:function(a,b){return c.apply(a,b)}};m.target=f}f=e(m||c,b,k,d);k=null;return f}}var i,l=0,c=j("after"),g=j("before"),h=j("around");return{before:g,around:h,after:c}})},"dojo/on":function(){define(["./has!dom-addeventlistener?:./aspect","./_base/kernel","./has"],function(e,j,i){function l(a,k,c,g,e){if(g=k.match(/(.*):(.*)/))return k=g[2],g=g[1],b.selector(g,k).call(e,a,c);i("touch")&&(f.test(k)&&(c=y(c)),!i("event-orientationchange")&&
-"orientationchange"==k&&(k="resize",a=window,c=y(c)));m&&(c=m(c));if(a.addEventListener){var h=k in d,p=h?d[k]:k;a.addEventListener(p,c,h);return{remove:function(){a.removeEventListener(p,c,h)}}}if(q&&a.attachEvent)return q(a,"on"+k,c);throw Error("Target must be an event emitter");}function c(){this.cancelable=!1}function g(){this.bubbles=!1}var h=window.ScriptEngineMajorVersion;i.add("jscript",h&&h()+ScriptEngineMinorVersion()/10);i.add("event-orientationchange",i("touch")&&!i("android"));i.add("event-stopimmediatepropagation",
-window.Event&&!!window.Event.prototype&&!!window.Event.prototype.stopImmediatePropagation);var b=function(a,d,f,k){return"function"==typeof a.on&&"function"!=typeof d?a.on(d,f):b.parse(a,d,f,l,k,this)};b.pausable=function(a,d,f,k){var c,a=b(a,d,function(){if(!c)return f.apply(this,arguments)},k);a.pause=function(){c=!0};a.resume=function(){c=!1};return a};b.once=function(a,d,f){var k=b(a,d,function(){k.remove();return f.apply(this,arguments)});return k};b.parse=function(a,b,d,f,k,c){if(b.call)return b.call(c,
-a,d);if(-1<b.indexOf(",")){for(var b=b.split(/\s*,\s*/),m=[],g=0,e;e=b[g++];)m.push(f(a,e,d,k,c));m.remove=function(){for(var a=0;a<m.length;a++)m[a].remove()};return m}return f(a,b,d,k,c)};var f=/^touch/;b.selector=function(a,d,f){return function(k,c){function m(b){for(g=g&&g.matches?g:j.query;!g.matches(b,a,k);)if(b==k||!1===f||!(b=b.parentNode)||1!=b.nodeType)return;return b}var g="function"==typeof a?{matches:a}:this,e=d.bubble;return e?b(k,e(m),c):b(k,d,function(a){var b=m(a.target);return b&&
-c.call(b,a)})}};var a=[].slice,k=b.emit=function(b,d,f){var k=a.call(arguments,2),m="on"+d;if("parentNode"in b){var e=k[0]={},h;for(h in f)e[h]=f[h];e.preventDefault=c;e.stopPropagation=g;e.target=b;e.type=d;f=e}do b[m]&&b[m].apply(b,k);while(f&&f.bubbles&&(b=b.parentNode));return f&&f.cancelable&&f},d={};if(!i("event-stopimmediatepropagation"))var p=function(){this.modified=this.immediatelyStopped=!0},m=function(a){return function(b){if(!b.immediatelyStopped)return b.stopImmediatePropagation=p,a.apply(this,
-arguments)}};if(i("dom-addeventlistener")){d={focusin:"focus",focusout:"blur"};if(i("opera"))d.keydown="keypress";b.emit=function(a,d,f){if(a.dispatchEvent&&document.createEvent){var c=a.ownerDocument.createEvent("HTMLEvents");c.initEvent(d,!!f.bubbles,!!f.cancelable);for(var m in f)m in c||(c[m]=f[m]);return a.dispatchEvent(c)&&c}return k.apply(b,arguments)}}else{b._fixEvent=function(a,b){if(!a)a=(b&&(b.ownerDocument||b.document||b).parentWindow||window).event;if(!a)return a;n&&a.type==n.type&&(a=
+require({cache:{"dojo/i18n":function(){define("./_base/kernel,require,./has,./_base/array,./_base/config,./_base/lang,./_base/xhr,./json,module".split(","),function(f,k,h,j,e,c,i,b,g){h.add("dojo-preload-i18n-Api",1);var i=f.i18n={},a=/(^.*(^|\/)nls)(\/|$)([^\/]*)\/?([^\/]*)/,l=function(a,b,d,l){for(var g=[d+l],b=b.split("-"),c="",e=0;e<b.length;e++)c+=(c?"-":"")+b[e],(!a||a[c])&&g.push(d+c+"/"+l);return g},d={},p=function(a,b,d){d=d?d.toLowerCase():f.locale;a=a.replace(/\./g,"/");b=b.replace(/\./g,
+"/");return/root/i.test(d)?a+"/nls/"+b:a+"/nls/"+d+"/"+b};f.getL10nName=function(a,b,d){return g.id+"!"+p(a,b,d)};var m=function(a,b,g,e,m,p){a([b],function(f){var i=c.clone(f.root),o=l(!f._v1x&&f,m,g,e);a(o,function(){for(var a=1;a<o.length;a++)i=c.mixin(c.clone(i),arguments[a]);d[b+"/"+m]=i;p()})})},n=function(a){var b=e.extraLocale||[],b=c.isArray(b)?b:[b];b.push(a);return b},o=function(l,g,e){if(h("dojo-preload-i18n-Api")){var p=l.split("*"),i="preload"==p[1];i&&(d[l]||(d[l]=1,t(p[2],b.parse(p[3]),
+1,g)),e(1));if(!(p=i))v&&s.push([l,g,e]),p=v;if(p)return}var l=a.exec(l),o=l[1]+"/",r=l[5]||l[4],q=o+r,p=(l=l[5]&&l[4])||f.locale,k=q+"/"+p,l=l?[p]:n(p),z=l.length,y=function(){--z||e(c.delegate(d[k]))};j.forEach(l,function(a){var b=q+"/"+a;h("dojo-preload-i18n-Api")&&u(b);d[b]?y():m(g,q,o,r,a,y)})};if(h("dojo-unit-tests"))var r=i.unitTests=[];h("dojo-preload-i18n-Api");var q=i.normalizeLocale=function(a){a=a?a.toLowerCase():f.locale;return"root"==a?"ROOT":a},v=0,s=[],t=i._preloadLocalizations=function(a,
+b,l,g){function c(a,b){g([a],b)}function e(a,b){for(var d=a.split("-");d.length;){if(b(d.join("-")))return;d.pop()}b("ROOT")}function m(l){l=q(l);e(l,function(l){if(0<=j.indexOf(b,l)){var g=a.replace(/\./g,"/")+"_"+l;v++;c(g,function(a){for(var b in a)d[k.toAbsMid(b)+"/"+l]=a[b];for(--v;!v&&s.length;)o.apply(null,s.shift())});return!0}return!1})}g=g||k;m();j.forEach(f.config.extraLocale,m)},u=function(){},y={},z=new Function("__bundle","__checkForLegacyModules","__mid","__amdValue","var define = function(mid, factory){define.called = 1; __amdValue.result = factory || mid;},\t require = function(){define.called = 1;};try{define.called = 0;eval(__bundle);if(define.called==1)return __amdValue;if((__checkForLegacyModules = __checkForLegacyModules(__mid)))return __checkForLegacyModules;}catch(e){}try{return eval('('+__bundle+')');}catch(e){return e;}"),
+u=function(a){for(var b,l=a.split("/"),g=f.global[l[0]],c=1;g&&c<l.length-1;g=g[l[c++]]);g&&((b=g[l[c]])||(b=g[l[c].replace(/-/g,"_")]),b&&(d[a]=b));return b};i.getLocalization=function(a,b,d){var l,a=p(a,b,d);o(a,k,function(a){l=a});return l};h("dojo-unit-tests")&&r.push(function(a){a.register("tests.i18n.unit",function(a){var b;b=z("{prop:1}",u,"nonsense",y);a.is({prop:1},b);a.is(void 0,b[1]);b=z("({prop:1})",u,"nonsense",y);a.is({prop:1},b);a.is(void 0,b[1]);b=z("{'prop-x':1}",u,"nonsense",y);
+a.is({"prop-x":1},b);a.is(void 0,b[1]);b=z("({'prop-x':1})",u,"nonsense",y);a.is({"prop-x":1},b);a.is(void 0,b[1]);b=z("define({'prop-x':1})",u,"nonsense",y);a.is(y,b);a.is({"prop-x":1},y.result);b=z("define('some/module', {'prop-x':1})",u,"nonsense",y);a.is(y,b);a.is({"prop-x":1},y.result);b=z("this is total nonsense and should throw an error",u,"nonsense",y);a.is(b instanceof Error,!0)})});return c.mixin(i,{dynamic:!0,normalize:function(a,b){return/^\./.test(a)?b(a):a},load:o,cache:d})})},"dojo/_base/kernel":function(){define(["../has",
+"./config","require","module"],function(f,k,h,j){var e,c={},i={},b={config:k,global:this,dijit:c,dojox:i},c={dojo:["dojo",b],dijit:["dijit",c],dojox:["dojox",i]},j=h.map&&h.map[j.id.match(/[^\/]+/)[0]];for(e in j)c[e]?c[e][0]=j[e]:c[e]=[j[e],{}];for(e in c)j=c[e],j[1]._scopeName=j[0],k.noGlobals||(this[j[0]]=j[1]);b.scopeMap=c;b.baseUrl=b.config.baseUrl=h.baseUrl;b.isAsync=h.async;b.locale=k.locale;j="$Rev: 29801 $".match(/\d+/);b.version={major:1,minor:8,patch:1,flag:"",revision:j?+j[0]:NaN,toString:function(){var a=
+b.version;return a.major+"."+a.minor+"."+a.patch+a.flag+" ("+a.revision+")"}};Function("d","d.eval = function(){return d.global.eval ? d.global.eval(arguments[0]) : eval(arguments[0]);}")(b);b.exit=function(){};"undefined"!=typeof console||(console={});for(var c="assert,count,debug,dir,dirxml,error,group,groupEnd,info,profile,profileEnd,time,timeEnd,trace,warn,log".split(","),g,j=0;g=c[j++];)console[g]||function(){var a=g+"";console[a]="log"in console?function(){var b=Array.apply({},arguments);b.unshift(a+
+":");console.log(b.join(" "))}:function(){};console[a]._fake=!0}();f.add("dojo-debug-messages",!!k.isDebug);b.deprecated=b.experimental=function(){};if(f("dojo-debug-messages"))b.deprecated=function(){},b.experimental=function(){};if(k.modulePaths){b.deprecated("dojo.modulePaths","use paths configuration");f={};for(e in k.modulePaths)f[e.replace(/\./g,"/")]=k.modulePaths[e];h({paths:f})}b.moduleUrl=function(a,l){b.deprecated("dojo.moduleUrl()","use require.toUrl","2.0");var d=null;a&&(d=h.toUrl(a.replace(/\./g,
+"/")+(l?"/"+l:"")+"/*.*").replace(/\/\*\.\*/,"")+(l?"":"/"));return d};b._hasResource={};return b})},"dojo/has":function(){define(["require","module"],function(f){var k=f.has||function(){};k.add("dom-addeventlistener",!!document.addEventListener);k.add("touch","ontouchstart"in document);k.add("device-width",screen.availWidth||innerWidth);f=document.createElement("form");k.add("dom-attributes-explicit",0==f.attributes.length);k.add("dom-attributes-specified-flag",0<f.attributes.length&&40>f.attributes.length);
+k.clearElement=function(f){f.innerHTML="";return f};k.normalize=function(f,j){var e=f.match(/[\?:]|[^:\?]*/g),c=0,i=function(b){var g=e[c++];if(":"==g)return 0;if("?"==e[c++]){if(!b&&k(g))return i();i(!0);return i(b)}return g||0};return(f=i())&&j(f)};k.load=function(f,j,e){f?j([f],e):e()};return k})},"dojo/_base/config":function(){define(["../has","require"],function(f,k){var h={},j=k.rawConfig,e;for(e in j)h[e]=j[e];return h})},"dojo/_base/array":function(){define(["./kernel","../has","./lang"],
+function(f,k,h){function j(a){return i[a]=new Function("item","index","array",a)}function e(a){var b=!a;return function(d,g,c){var e=0,f=d&&d.length||0,h;f&&"string"==typeof d&&(d=d.split(""));"string"==typeof g&&(g=i[g]||j(g));if(c)for(;e<f;++e){if(h=!g.call(c,d[e],e,d),a^h)return!h}else for(;e<f;++e)if(h=!g(d[e],e,d),a^h)return!h;return b}}function c(a){var l=1,d=0,c=0;a||(l=d=c=-1);return function(e,f,i,j){if(j&&0<l)return g.lastIndexOf(e,f,i);var j=e&&e.length||0,h=a?j+c:d;i===b?i=a?d:j+c:0>i?
+(i=j+i,0>i&&(i=d)):i=i>=j?j+c:i;for(j&&"string"==typeof e&&(e=e.split(""));i!=h;i+=l)if(e[i]==f)return i;return-1}}var i={},b,g={every:e(!1),some:e(!0),indexOf:c(!0),lastIndexOf:c(!1),forEach:function(a,b,d){var g=0,c=a&&a.length||0;c&&"string"==typeof a&&(a=a.split(""));"string"==typeof b&&(b=i[b]||j(b));if(d)for(;g<c;++g)b.call(d,a[g],g,a);else for(;g<c;++g)b(a[g],g,a)},map:function(a,b,d,g){var c=0,e=a&&a.length||0,g=new (g||Array)(e);e&&"string"==typeof a&&(a=a.split(""));"string"==typeof b&&
+(b=i[b]||j(b));if(d)for(;c<e;++c)g[c]=b.call(d,a[c],c,a);else for(;c<e;++c)g[c]=b(a[c],c,a);return g},filter:function(a,b,d){var g=0,c=a&&a.length||0,e=[],f;c&&"string"==typeof a&&(a=a.split(""));"string"==typeof b&&(b=i[b]||j(b));if(d)for(;g<c;++g)f=a[g],b.call(d,f,g,a)&&e.push(f);else for(;g<c;++g)f=a[g],b(f,g,a)&&e.push(f);return e},clearCache:function(){i={}}};h.mixin(f,g);return g})},"dojo/_base/lang":function(){define(["./kernel","../has","../sniff"],function(f,k){k.add("bug-for-in-skips-shadowed",
+function(){for(var a in{toString:1})return 0;return 1});var h=k("bug-for-in-skips-shadowed")?"hasOwnProperty.valueOf.isPrototypeOf.propertyIsEnumerable.toLocaleString.toString.constructor".split("."):[],j=h.length,e=function(a,b,d){var g,c=0,e=f.global;if(!d)if(a.length){g=a[c++];try{d=f.scopeMap[g]&&f.scopeMap[g][1]}catch(i){}d=d||(g in e?e[g]:b?e[g]={}:void 0)}else return e;for(;d&&(g=a[c++]);)d=g in d?d[g]:b?d[g]={}:void 0;return d},c=Object.prototype.toString,i=function(a,b,d){return(d||[]).concat(Array.prototype.slice.call(a,
+b||0))},b=/\{([^\}]+)\}/g,g={_extraNames:h,_mixin:function(a,b,d){var g,c,e,f={};for(g in b)if(c=b[g],!(g in a)||a[g]!==c&&(!(g in f)||f[g]!==c))a[g]=d?d(c):c;if(k("bug-for-in-skips-shadowed")&&b)for(e=0;e<j;++e)if(g=h[e],c=b[g],!(g in a)||a[g]!==c&&(!(g in f)||f[g]!==c))a[g]=d?d(c):c;return a},mixin:function(a,b){a||(a={});for(var d=1,c=arguments.length;d<c;d++)g._mixin(a,arguments[d]);return a},setObject:function(a,b,d){var g=a.split("."),a=g.pop();return(d=e(g,!0,d))&&a?d[a]=b:void 0},getObject:function(a,
+b,d){return e(a.split("."),b,d)},exists:function(a,b){return void 0!==g.getObject(a,!1,b)},isString:function(a){return"string"==typeof a||a instanceof String},isArray:function(a){return a&&(a instanceof Array||"array"==typeof a)},isFunction:function(a){return"[object Function]"===c.call(a)},isObject:function(a){return void 0!==a&&(null===a||"object"==typeof a||g.isArray(a)||g.isFunction(a))},isArrayLike:function(a){return a&&void 0!==a&&!g.isString(a)&&!g.isFunction(a)&&!(a.tagName&&"form"==a.tagName.toLowerCase())&&
+(g.isArray(a)||isFinite(a.length))},isAlien:function(a){return a&&!g.isFunction(a)&&/\{\s*\[native code\]\s*\}/.test(""+a)},extend:function(a,b){for(var d=1,c=arguments.length;d<c;d++)g._mixin(a.prototype,arguments[d]);return a},_hitchArgs:function(a,b){var d=g._toArray(arguments,2),c=g.isString(b);return function(){var e=g._toArray(arguments),i=c?(a||f.global)[b]:b;return i&&i.apply(a||this,d.concat(e))}},hitch:function(a,b){if(2<arguments.length)return g._hitchArgs.apply(f,arguments);b||(b=a,a=
+null);if(g.isString(b)){a=a||f.global;if(!a[b])throw['lang.hitch: scope["',b,'"] is null (scope="',a,'")'].join("");return function(){return a[b].apply(a,arguments||[])}}return!a?b:function(){return b.apply(a,arguments||[])}},delegate:function(){function a(){}return function(b,d){a.prototype=b;var c=new a;a.prototype=null;d&&g._mixin(c,d);return c}}(),_toArray:k("ie")?function(){function a(a,b,g){g=g||[];for(b=b||0;b<a.length;b++)g.push(a[b]);return g}return function(b){return(b.item?a:i).apply(this,
+arguments)}}():i,partial:function(a){return g.hitch.apply(f,[null].concat(g._toArray(arguments)))},clone:function(a){if(!a||"object"!=typeof a||g.isFunction(a))return a;if(a.nodeType&&"cloneNode"in a)return a.cloneNode(!0);if(a instanceof Date)return new Date(a.getTime());if(a instanceof RegExp)return RegExp(a);var b,d,c;if(g.isArray(a)){b=[];for(d=0,c=a.length;d<c;++d)d in a&&b.push(g.clone(a[d]))}else b=a.constructor?new a.constructor:{};return g._mixin(b,a,g.clone)},trim:String.prototype.trim?
+function(a){return a.trim()}:function(a){return a.replace(/^\s\s*/,"").replace(/\s\s*$/,"")},replace:function(a,c,d){return a.replace(d||b,g.isFunction(c)?c:function(a,b){return g.getObject(b,!1,c)})}};g.mixin(f,g);return g})},"dojo/sniff":function(){define(["./has"],function(f){var k=navigator,h=k.userAgent,k=k.appVersion,j=parseFloat(k);f.add("air",0<=h.indexOf("AdobeAIR"));f.add("khtml",0<=k.indexOf("Konqueror")?j:void 0);f.add("webkit",parseFloat(h.split("WebKit/")[1])||void 0);f.add("chrome",
+parseFloat(h.split("Chrome/")[1])||void 0);f.add("safari",0<=k.indexOf("Safari")&&!f("chrome")?parseFloat(k.split("Version/")[1]):void 0);f.add("mac",0<=k.indexOf("Macintosh"));f.add("quirks","BackCompat"==document.compatMode);f.add("ios",/iPhone|iPod|iPad/.test(h));f.add("android",parseFloat(h.split("Android ")[1])||void 0);if(!f("webkit")){0<=h.indexOf("Opera")&&f.add("opera",9.8<=j?parseFloat(h.split("Version/")[1])||j:j);0<=h.indexOf("Gecko")&&!f("khtml")&&!f("webkit")&&f.add("mozilla",j);f("mozilla")&&
+f.add("ff",parseFloat(h.split("Firefox/")[1]||h.split("Minefield/")[1])||void 0);if(document.all&&!f("opera"))h=parseFloat(k.split("MSIE ")[1])||void 0,(k=document.documentMode)&&5!=k&&Math.floor(h)!=k&&(h=k),f.add("ie",h);f.add("wii","undefined"!=typeof opera&&opera.wiiremote)}return f})},"dojo/_base/xhr":function(){define("./kernel,./sniff,require,../io-query,../dom,../dom-form,./Deferred,./config,./json,./lang,./array,../on,../aspect,../request/watch,../request/xhr,../request/util".split(","),
+function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o){f._xhrObj=n._create;var r=f.config;f.objectToQuery=j.objectToQuery;f.queryToObject=j.queryToObject;f.fieldToObject=c.fieldToObject;f.formToObject=c.toObject;f.formToQuery=c.toQuery;f.formToJson=c.toJson;f._blockAsync=!1;var q=f._contentHandlers=f.contentHandlers={text:function(a){return a.responseText},json:function(a){return g.fromJson(a.responseText||null)},"json-comment-filtered":function(a){var a=a.responseText,b=a.indexOf("/*"),d=a.lastIndexOf("*/");
+if(-1==b||-1==d)throw Error("JSON was not comment filtered");return g.fromJson(a.substring(b+2,d))},javascript:function(a){return f.eval(a.responseText)},xml:function(a){var b=a.responseXML;if(k("ie")&&(!b||!b.documentElement)){var d=function(a){return"MSXML"+a+".DOMDocument"},d=["Microsoft.XMLDOM",d(6),d(4),d(3),d(2)];l.some(d,function(d){try{var g=new ActiveXObject(d);g.async=!1;g.loadXML(a.responseText);b=g}catch(c){return!1}return!0})}return b},"json-comment-optional":function(a){return a.responseText&&
+/^[^{\[]*\/\*/.test(a.responseText)?q["json-comment-filtered"](a):q.json(a)}};f._ioSetArgs=function(b,d,g,l){var m={args:b,url:b.url},p=null;if(b.form){var p=e.byId(b.form),o=p.getAttributeNode("action");m.url=m.url||(o?o.value:null);p=c.toObject(p)}o=[{}];p&&o.push(p);b.content&&o.push(b.content);b.preventCache&&o.push({"dojo.preventCache":(new Date).valueOf()});m.query=j.objectToQuery(a.mixin.apply(null,o));m.handleAs=b.handleAs||"text";var n=new i(function(a){a.canceled=!0;d&&d(a);var b=a.ioArgs.error;
+if(!b)b=Error("request cancelled"),b.dojoType="cancel",a.ioArgs.error=b;return b});n.addCallback(g);var h=b.load;h&&a.isFunction(h)&&n.addCallback(function(a){return h.call(b,a,m)});var t=b.error;t&&a.isFunction(t)&&n.addErrback(function(a){return t.call(b,a,m)});var q=b.handle;q&&a.isFunction(q)&&n.addBoth(function(a){return q.call(b,a,m)});n.addErrback(function(a){return l(a,n)});r.ioPublish&&f.publish&&!1!==m.args.ioPublish&&(n.addCallbacks(function(a){f.publish("/dojo/io/load",[n,a]);return a},
+function(a){f.publish("/dojo/io/error",[n,a]);return a}),n.addBoth(function(a){f.publish("/dojo/io/done",[n,a]);return a}));n.ioArgs=m;return n};var v=function(a){a=q[a.ioArgs.handleAs](a.ioArgs.xhr);return void 0===a?null:a},s=function(a){return a},t=function(a){0>=u&&(u=0,r.ioPublish&&f.publish&&(!a||a&&!1!==a.ioArgs.args.ioPublish)&&f.publish("/dojo/io/stop"))},u=0;p.after(m,"_onAction",function(){u-=1});p.after(m,"_onInFlight",t);f._ioCancelAll=m.cancelAll;f._ioNotifyStart=function(a){r.ioPublish&&
+f.publish&&!1!==a.ioArgs.args.ioPublish&&(u||f.publish("/dojo/io/start"),u+=1,f.publish("/dojo/io/send",[a]))};f._ioWatch=function(b,d,g,c){b.ioArgs.options=b.ioArgs.args;a.mixin(b,{response:b.ioArgs,isValid:function(){return d(b)},isReady:function(){return g(b)},handleResponse:function(){return c(b)}});m(b);t(b)};f._ioAddQueryToUrl=function(a){if(a.query.length)a.url+=(-1==a.url.indexOf("?")?"?":"&")+a.query,a.query=null};f.xhr=function(a,b,d){var g,c=f._ioSetArgs(b,function(){g&&g.cancel()},v,s),
+l=c.ioArgs;"postData"in b?l.query=b.postData:"putData"in b?l.query=b.putData:"rawBody"in b?l.query=b.rawBody:(2<arguments.length&&!d||-1==="POST|PUT".indexOf(a.toUpperCase()))&&f._ioAddQueryToUrl(l);var e={method:a,handleAs:"text",timeout:b.timeout,withCredentials:b.withCredentials,ioArgs:l};if("undefined"!==typeof b.headers)e.headers=b.headers;if("undefined"!==typeof b.contentType){if(!e.headers)e.headers={};e.headers["Content-Type"]=b.contentType}if("undefined"!==typeof l.query)e.data=l.query;if("undefined"!==
+typeof b.sync)e.sync=b.sync;f._ioNotifyStart(c);try{g=n(l.url,e,!0)}catch(m){return c.cancel(),c}c.ioArgs.xhr=g.response.xhr;g.then(function(){c.resolve(c)}).otherwise(function(a){l.error=a;if(a.response)a.status=a.response.status,a.responseText=a.response.text,a.xhr=a.response.xhr;c.reject(a)});return c};f.xhrGet=function(a){return f.xhr("GET",a)};f.rawXhrPost=f.xhrPost=function(a){return f.xhr("POST",a,!0)};f.rawXhrPut=f.xhrPut=function(a){return f.xhr("PUT",a,!0)};f.xhrDelete=function(a){return f.xhr("DELETE",
+a)};f._isDocumentOk=function(a){return o.checkStatus(a.status)};f._getText=function(a){var b;f.xhrGet({url:a,sync:!0,load:function(a){b=a}});return b};a.mixin(f.xhr,{_xhrObj:f._xhrObj,fieldToObject:c.fieldToObject,formToObject:c.toObject,objectToQuery:j.objectToQuery,formToQuery:c.toQuery,formToJson:c.toJson,queryToObject:j.queryToObject,contentHandlers:q,_ioSetArgs:f._ioSetArgs,_ioCancelAll:f._ioCancelAll,_ioNotifyStart:f._ioNotifyStart,_ioWatch:f._ioWatch,_ioAddQueryToUrl:f._ioAddQueryToUrl,_isDocumentOk:f._isDocumentOk,
+_getText:f._getText,get:f.xhrGet,post:f.xhrPost,put:f.xhrPut,del:f.xhrDelete});return f.xhr})},"dojo/_base/sniff":function(){define(["./kernel","./lang","../sniff"],function(f,k,h){f._name="browser";k.mixin(f,{isBrowser:!0,isFF:h("ff"),isIE:h("ie"),isKhtml:h("khtml"),isWebKit:h("webkit"),isMozilla:h("mozilla"),isMoz:h("mozilla"),isOpera:h("opera"),isSafari:h("safari"),isChrome:h("chrome"),isMac:h("mac"),isIos:h("ios"),isAndroid:h("android"),isWii:h("wii"),isQuirks:h("quirks"),isAir:h("air")});f.locale=
+f.locale||(h("ie")?navigator.userLanguage:navigator.language).toLowerCase();return h})},"dojo/io-query":function(){define(["./_base/lang"],function(f){var k={};return{objectToQuery:function(h){var j=encodeURIComponent,e=[],c;for(c in h){var i=h[c];if(i!=k[c]){var b=j(c)+"=";if(f.isArray(i))for(var g=0,a=i.length;g<a;++g)e.push(b+j(i[g]));else e.push(b+j(i))}}return e.join("&")},queryToObject:function(h){for(var j=decodeURIComponent,h=h.split("&"),e={},c,i,b=0,g=h.length;b<g;++b)if(i=h[b],i.length){var a=
+i.indexOf("=");0>a?(c=j(i),i=""):(c=j(i.slice(0,a)),i=j(i.slice(a+1)));"string"==typeof e[c]&&(e[c]=[e[c]]);f.isArray(e[c])?e[c].push(i):e[c]=i}return e}}})},"dojo/dom":function(){define(["./sniff","./_base/lang","./_base/window"],function(f,k,h){if(7>=f("ie"))try{document.execCommand("BackgroundImageCache",!1,!0)}catch(j){}var e={};e.byId=f("ie")?function(c,e){if("string"!=typeof c)return c;var b=e||h.doc,g=c&&b.getElementById(c);if(g&&(g.attributes.id.value==c||g.id==c))return g;b=b.all[c];if(!b||
+b.nodeName)b=[b];for(var a=0;g=b[a++];)if(g.attributes&&g.attributes.id&&g.attributes.id.value==c||g.id==c)return g}:function(c,e){return("string"==typeof c?(e||h.doc).getElementById(c):c)||null};e.isDescendant=function(c,f){try{c=e.byId(c);for(f=e.byId(f);c;){if(c==f)return!0;c=c.parentNode}}catch(b){}return!1};e.setSelectable=function(c,i){c=e.byId(c);if(f("mozilla"))c.style.MozUserSelect=i?"":"none";else if(f("khtml")||f("webkit"))c.style.KhtmlUserSelect=i?"auto":"none";else if(f("ie"))for(var b=
+c.unselectable=i?"":"on",g=c.getElementsByTagName("*"),a=0,l=g.length;a<l;++a)g.item(a).unselectable=b};return e})},"dojo/_base/window":function(){define(["./kernel","./lang","../sniff"],function(f,k,h){var j={global:f.global,doc:this.document||null,body:function(e){e=e||f.doc;return e.body||e.getElementsByTagName("body")[0]},setContext:function(e,c){f.global=j.global=e;f.doc=j.doc=c},withGlobal:function(e,c,i,b){var g=f.global;try{return f.global=j.global=e,j.withDoc.call(null,e.document,c,i,b)}finally{f.global=
+j.global=g}},withDoc:function(e,c,i,b){var g=j.doc,a=h("quirks"),l=h("ie"),d,p,m;try{f.doc=j.doc=e;f.isQuirks=h.add("quirks","BackCompat"==f.doc.compatMode,!0,!0);if(h("ie")&&(m=e.parentWindow)&&m.navigator)d=parseFloat(m.navigator.appVersion.split("MSIE ")[1])||void 0,(p=e.documentMode)&&5!=p&&Math.floor(d)!=p&&(d=p),f.isIE=h.add("ie",d,!0,!0);i&&"string"==typeof c&&(c=i[c]);return c.apply(i,b||[])}finally{f.doc=j.doc=g,f.isQuirks=h.add("quirks",a,!0,!0),f.isIE=h.add("ie",l,!0,!0)}}};k.mixin(f,j);
+return j})},"dojo/dom-form":function(){define(["./_base/lang","./dom","./io-query","./json"],function(f,k,h,j){var e={fieldToObject:function(c){var e=null;if(c=k.byId(c)){var b=c.name,g=(c.type||"").toLowerCase();if(b&&g&&!c.disabled)if("radio"==g||"checkbox"==g){if(c.checked)e=c.value}else if(c.multiple){e=[];for(c=[c.firstChild];c.length;)for(b=c.pop();b;b=b.nextSibling)if(1==b.nodeType&&"option"==b.tagName.toLowerCase())b.selected&&e.push(b.value);else{b.nextSibling&&c.push(b.nextSibling);b.firstChild&&
+c.push(b.firstChild);break}}else e=c.value}return e},toObject:function(c){for(var i={},c=k.byId(c).elements,b=0,g=c.length;b<g;++b){var a=c[b],l=a.name,d=(a.type||"").toLowerCase();if(l&&d&&0>"file|submit|image|reset|button".indexOf(d)&&!a.disabled){var p=i,m=l,a=e.fieldToObject(a);if(null!==a){var n=p[m];"string"==typeof n?p[m]=[n,a]:f.isArray(n)?n.push(a):p[m]=a}if("image"==d)i[l+".x"]=i[l+".y"]=i[l].x=i[l].y=0}}return i},toQuery:function(c){return h.objectToQuery(e.toObject(c))},toJson:function(c,
+f){return j.stringify(e.toObject(c),null,f?4:0)}};return e})},"dojo/json":function(){define(["./has"],function(f){var k="undefined"!=typeof JSON;f.add("json-parse",k);f.add("json-stringify",k&&'{"a":1}'==JSON.stringify({a:0},function(f,e){return e||1}));if(f("json-stringify"))return JSON;var h=function(f){return('"'+f.replace(/(["\\])/g,"\\$1")+'"').replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r")};return{parse:f("json-parse")?JSON.parse:
+function(f,e){if(e&&!/^([\s\[\{]*(?:"(?:\\.|[^"])+"|-?\d[\d\.]*(?:[Ee][+-]?\d+)?|null|true|false|)[\s\]\}]*(?:,|:|$))+$/.test(f))throw new SyntaxError("Invalid characters in JSON");return eval("("+f+")")},stringify:function(f,e,c){function i(g,a,l){e&&(g=e(l,g));var d;d=typeof g;if("number"==d)return isFinite(g)?g+"":"null";if("boolean"==d)return g+"";if(null===g)return"null";if("string"==typeof g)return h(g);if("function"==d||"undefined"==d)return b;if("function"==typeof g.toJSON)return i(g.toJSON(l),
+a,l);if(g instanceof Date)return'"{FullYear}-{Month+}-{Date}T{Hours}:{Minutes}:{Seconds}Z"'.replace(/\{(\w+)(\+)?\}/g,function(a,b,d){a=g["getUTC"+b]()+(d?1:0);return 10>a?"0"+a:a});if(g.valueOf()!==g)return i(g.valueOf(),a,l);var f=c?a+c:"",m=c?" ":"",n=c?"\n":"";if(g instanceof Array){for(var m=g.length,o=[],l=0;l<m;l++)d=i(g[l],f,l),"string"!=typeof d&&(d="null"),o.push(n+f+d);return"["+o.join(",")+n+a+"]"}o=[];for(l in g){var j;if(g.hasOwnProperty(l)){if("number"==typeof l)j='"'+l+'"';else if("string"==
+typeof l)j=h(l);else continue;d=i(g[l],f,l);"string"==typeof d&&o.push(n+f+j+":"+m+d)}}return"{"+o.join(",")+n+a+"}"}var b;"string"==typeof e&&(c=e,e=null);return i(f,"","")}}})},"dojo/_base/Deferred":function(){define("./kernel,../Deferred,../promise/Promise,../errors/CancelError,../has,./lang,../when".split(","),function(f,k,h,j,e,c,i){var b=function(){},g=Object.freeze||function(){},a=f.Deferred=function(l){function d(a){if(i)throw Error("This deferred has already been resolved");m=a;i=!0;f()}
+function f(){for(var a;!a&&q;){var d=q;q=q.next;if(a=d.progress==b)i=!1;var g=o?d.error:d.resolved;e("config-useDeferredInstrumentation")&&o&&k.instrumentRejected&&k.instrumentRejected(m,!!g);if(g)try{var l=g(m);l&&"function"===typeof l.then?l.then(c.hitch(d.deferred,"resolve"),c.hitch(d.deferred,"reject"),c.hitch(d.deferred,"progress")):(g=a&&void 0===l,a&&!g&&(o=l instanceof Error),d.deferred[g&&o?"reject":"resolve"](g?m:l))}catch(p){d.deferred.reject(p)}else o?d.deferred.reject(m):d.deferred.resolve(m)}}
+var m,i,o,r,q,v=this.promise=new h;this.resolve=this.callback=function(a){this.fired=0;this.results=[a,null];d(a)};this.reject=this.errback=function(a){o=!0;this.fired=1;e("config-useDeferredInstrumentation")&&k.instrumentRejected&&k.instrumentRejected(a,!!q);d(a);this.results=[null,a]};this.progress=function(a){for(var b=q;b;){var d=b.progress;d&&d(a);b=b.next}};this.addCallbacks=function(a,d){this.then(a,d,b);return this};v.then=this.then=function(d,g,c){var l=c==b?this:new a(v.cancel),d={resolved:d,
+error:g,progress:c,deferred:l};q?r=r.next=d:q=r=d;i&&f();return l.promise};var s=this;v.cancel=this.cancel=function(){if(!i){var a=l&&l(s);if(!i)a instanceof Error||(a=new j(a)),a.log=!1,s.reject(a)}};g(v)};c.extend(a,{addCallback:function(a){return this.addCallbacks(c.hitch.apply(f,arguments))},addErrback:function(a){return this.addCallbacks(null,c.hitch.apply(f,arguments))},addBoth:function(a){var b=c.hitch.apply(f,arguments);return this.addCallbacks(b,b)},fired:-1});a.when=f.when=i;return a})},
+"dojo/Deferred":function(){define("dojo/Deferred",["./has","./_base/lang","./errors/CancelError","./promise/Promise","./promise/instrumentation"],function(f,k,h,j,e){var c=Object.freeze||function(){},i=function(a,g,c,e,f){2===g&&l.instrumentRejected&&0===a.length&&l.instrumentRejected(c,!1,e,f);for(f=0;f<a.length;f++)b(a[f],g,c,e)},b=function(b,c,e,f){var i=b[c],j=b.deferred;if(i)try{var h=i(e);if(0===c)"undefined"!==typeof h&&a(j,c,h);else{if(h&&"function"===typeof h.then){b.cancel=h.cancel;h.then(g(j,
+1),g(j,2),g(j,0));return}a(j,1,h)}}catch(k){a(j,2,k)}else a(j,c,e);2===c&&l.instrumentRejected&&l.instrumentRejected(e,!!i,f,j.promise)},g=function(b,g){return function(c){a(b,g,c)}},a=function(a,b,g){if(!a.isCanceled())switch(b){case 0:a.progress(g);break;case 1:a.resolve(g);break;case 2:a.reject(g)}},l=function(a){var g=this.promise=new j,e=this,f,o,r,q=!1,k=[];Error.captureStackTrace&&(Error.captureStackTrace(e,l),Error.captureStackTrace(g,l));this.isResolved=g.isResolved=function(){return 1===
+f};this.isRejected=g.isRejected=function(){return 2===f};this.isFulfilled=g.isFulfilled=function(){return!!f};this.isCanceled=g.isCanceled=function(){return q};this.progress=function(a,b){if(f){if(!0===b)throw Error("This deferred has already been fulfilled.");return g}i(k,0,a,null,e);return g};this.resolve=function(a,b){if(f){if(!0===b)throw Error("This deferred has already been fulfilled.");return g}i(k,f=1,o=a,null,e);k=null;return g};var s=this.reject=function(a,b){if(f){if(!0===b)throw Error("This deferred has already been fulfilled.");
+return g}Error.captureStackTrace&&Error.captureStackTrace(r={},s);i(k,f=2,o=a,r,e);k=null;return g};this.then=g.then=function(a,d,c){var e=[c,a,d];e.cancel=g.cancel;e.deferred=new l(function(a){return e.cancel&&e.cancel(a)});f&&!k?b(e,f,o,r):k.push(e);return e.deferred.promise};this.cancel=g.cancel=function(b,g){if(f){if(!0===g)throw Error("This deferred has already been fulfilled.");}else{if(a)var c=a(b),b="undefined"===typeof c?b:c;q=!0;if(f){if(2===f&&o===b)return b}else return"undefined"===typeof b&&
+(b=new h),s(b),b}};c(g)};l.prototype.toString=function(){return"[object Deferred]"};e&&e(l);return l})},"dojo/errors/CancelError":function(){define(["./create"],function(f){return f("CancelError",null,null,{dojoType:"cancel"})})},"dojo/errors/create":function(){define(["../_base/lang"],function(f){return function(k,h,j,e){var j=j||Error,c=function(e){if(j===Error){Error.captureStackTrace&&Error.captureStackTrace(this,c);var b=Error.call(this,e),g;for(g in b)b.hasOwnProperty(g)&&(this[g]=b[g]);this.message=
+e;this.stack=b.stack}else j.apply(this,arguments);h&&h.apply(this,arguments)};c.prototype=f.delegate(j.prototype,e);c.prototype.name=k;return c.prototype.constructor=c}})},"dojo/promise/Promise":function(){define(["../_base/lang"],function(f){function k(){throw new TypeError("abstract");}return f.extend(function(){},{then:function(){k()},cancel:function(){k()},isResolved:function(){k()},isRejected:function(){k()},isFulfilled:function(){k()},isCanceled:function(){k()},always:function(f){return this.then(f,
+f)},otherwise:function(f){return this.then(null,f)},trace:function(){return this},traceRejected:function(){return this},toString:function(){return"[object Promise]"}})})},"dojo/promise/instrumentation":function(){define(["./tracer","../has","../_base/lang","../_base/array"],function(f,k,h,j){function e(a,b){b&&b.stack&&b.stack.split("\n").slice(1).join("\n").replace(/^\s+/," ")}function c(a,b,g,c){b||e(a,g,c)}function i(d,c,e,f){c?j.some(g,function(a,b){if(a.error===d)return g.splice(b,1),!0}):j.some(g,
+function(a){return a.error===d})||g.push({error:d,rejection:e,deferred:f,timestamp:(new Date).getTime()});a||(a=setTimeout(b,l))}function b(){var d=(new Date).getTime(),c=d-l;g=j.filter(g,function(a){return a.timestamp<c?(e(a.error,a.rejection,a.deferred),!1):!0});g.length&&(a=setTimeout(b,g[0].timestamp+l-d))}var g=[],a=!1,l=1E3;return function(a){var b=k("config-useDeferredInstrumentation");if(b){f.on("resolved",h.hitch(console,"log","resolved"));f.on("rejected",h.hitch(console,"log","rejected"));
+f.on("progress",h.hitch(console,"log","progress"));var g=[];"string"===typeof b&&(g=b.split(","),b=g.shift());if("report-rejections"===b)a.instrumentRejected=c;else if("report-unhandled-rejections"===b||!0===b||1===b)a.instrumentRejected=i,l=parseInt(g[0],10)||l;else throw Error("Unsupported instrumentation usage <"+b+">");}}})},"dojo/promise/tracer":function(){define(["../_base/lang","./Promise","../Evented"],function(f,k,h){function j(f){setTimeout(function(){c.apply(e,f)},0)}var e=new h,c=e.emit;
+e.emit=null;k.prototype.trace=function(){var c=f._toArray(arguments);this.then(function(b){j(["resolved",b].concat(c))},function(b){j(["rejected",b].concat(c))},function(b){j(["progress",b].concat(c))});return this};k.prototype.traceRejected=function(){var c=f._toArray(arguments);this.otherwise(function(b){j(["rejected",b].concat(c))});return this};return e})},"dojo/Evented":function(){define("dojo/Evented",["./aspect","./on"],function(f,k){function h(){}var j=f.after;h.prototype={on:function(e,c){return k.parse(this,
+e,c,function(e,b){return j(e,"on"+b,c,!0)})},emit:function(e,c){var f=[this];f.push.apply(f,arguments);return k.emit.apply(k,f)}};return h})},"dojo/aspect":function(){define("dojo/aspect",[],function(){function f(b,g,a,c){var d=b[g],e="around"==g,f;if(e){var i=a(function(){return d.advice(this,arguments)});f={remove:function(){f.cancelled=!0},advice:function(a,b){return f.cancelled?d.advice(a,b):i.apply(a,b)}}}else f={remove:function(){var a=f.previous,d=f.next;if(!d&&!a)delete b[g];else if(a?a.next=
+d:b[g]=d,d)d.previous=a},id:j++,advice:a,receiveArguments:c};if(d&&!e)if("after"==g){for(a=d;a;)d=a,a=a.next;d.next=f;f.previous=d}else{if("before"==g)b[g]=f,f.next=d,d.previous=f}else b[g]=f;return f}function k(b){return function(g,a,c,d){var e=g[a],m;if(!e||e.target!=g){g[a]=m=function(){for(var a=j,b=arguments,d=m.before;d;)b=d.advice.apply(this,b)||b,d=d.next;if(m.around)var g=m.around.advice(this,b);for(d=m.after;d&&d.id<a;){if(d.receiveArguments)var c=d.advice.apply(this,b),g=c===h?g:c;else g=
+d.advice.call(this,g,b);d=d.next}return g};if(e)m.around={advice:function(a,b){return e.apply(a,b)}};m.target=g}g=f(m||e,b,c,d);c=null;return g}}var h,j=0,e=k("after"),c=k("before"),i=k("around");return{before:c,around:i,after:e}})},"dojo/on":function(){define(["./has!dom-addeventlistener?:./aspect","./_base/kernel","./has"],function(f,k,h){function j(a,c,e,l,f){if(l=c.match(/(.*):(.*)/))return c=l[2],l=l[1],b.selector(l,c).call(f,a,e);h("touch")&&(g.test(c)&&(e=y(e)),!h("event-orientationchange")&&
+"orientationchange"==c&&(c="resize",a=window,e=y(e)));m&&(e=m(e));if(a.addEventListener){var i=c in d,j=i?d[c]:c;a.addEventListener(j,e,i);return{remove:function(){a.removeEventListener(j,e,i)}}}if(q&&a.attachEvent)return q(a,"on"+c,e);throw Error("Target must be an event emitter");}function e(){this.cancelable=!1}function c(){this.bubbles=!1}var i=window.ScriptEngineMajorVersion;h.add("jscript",i&&i()+ScriptEngineMinorVersion()/10);h.add("event-orientationchange",h("touch")&&!h("android"));h.add("event-stopimmediatepropagation",
+window.Event&&!!window.Event.prototype&&!!window.Event.prototype.stopImmediatePropagation);var b=function(a,d,g,c){return"function"==typeof a.on&&"function"!=typeof d?a.on(d,g):b.parse(a,d,g,j,c,this)};b.pausable=function(a,d,g,c){var e,a=b(a,d,function(){if(!e)return g.apply(this,arguments)},c);a.pause=function(){e=!0};a.resume=function(){e=!1};return a};b.once=function(a,d,g){var c=b(a,d,function(){c.remove();return g.apply(this,arguments)});return c};b.parse=function(a,b,d,g,c,e){if(b.call)return b.call(e,
+a,d);if(-1<b.indexOf(",")){for(var b=b.split(/\s*,\s*/),l=[],f=0,m;m=b[f++];)l.push(g(a,m,d,c,e));l.remove=function(){for(var a=0;a<l.length;a++)l[a].remove()};return l}return g(a,b,d,c,e)};var g=/^touch/;b.selector=function(a,d,g){return function(c,e){function l(b){for(f=f&&f.matches?f:k.query;!f.matches(b,a,c);)if(b==c||!1===g||!(b=b.parentNode)||1!=b.nodeType)return;return b}var f="function"==typeof a?{matches:a}:this,m=d.bubble;return m?b(c,m(l),e):b(c,d,function(a){var b=l(a.target);return b&&
+e.call(b,a)})}};var a=[].slice,l=b.emit=function(b,d,g){var l=a.call(arguments,2),f="on"+d;if("parentNode"in b){var m=l[0]={},i;for(i in g)m[i]=g[i];m.preventDefault=e;m.stopPropagation=c;m.target=b;m.type=d;g=m}do b[f]&&b[f].apply(b,l);while(g&&g.bubbles&&(b=b.parentNode));return g&&g.cancelable&&g},d={};if(!h("event-stopimmediatepropagation"))var p=function(){this.modified=this.immediatelyStopped=!0},m=function(a){return function(b){if(!b.immediatelyStopped)return b.stopImmediatePropagation=p,a.apply(this,
+arguments)}};if(h("dom-addeventlistener")){d={focusin:"focus",focusout:"blur"};if(h("opera"))d.keydown="keypress";b.emit=function(a,d,g){if(a.dispatchEvent&&document.createEvent){var c=a.ownerDocument.createEvent("HTMLEvents");c.initEvent(d,!!g.bubbles,!!g.cancelable);for(var e in g)e in c||(c[e]=g[e]);return a.dispatchEvent(c)&&c}return l.apply(b,arguments)}}else{b._fixEvent=function(a,b){if(!a)a=(b&&(b.ownerDocument||b.document||b).parentWindow||window).event;if(!a)return a;n&&a.type==n.type&&(a=
n);if(!a.target){a.target=a.srcElement;a.currentTarget=b||a.srcElement;if("mouseover"==a.type)a.relatedTarget=a.fromElement;if("mouseout"==a.type)a.relatedTarget=a.toElement;if(!a.stopPropagation)a.stopPropagation=v,a.preventDefault=s;switch(a.type){case "keypress":var d="charCode"in a?a.charCode:a.keyCode;10==d?(d=0,a.keyCode=13):13==d||27==d?d=0:3==d&&(d=99);a.charCode=d;d=a;d.keyChar=d.charCode?String.fromCharCode(d.charCode):"";d.charOrCode=d.keyChar||d.keyCode}}return a};var n,o=function(a){this.handle=
-a};o.prototype.remove=function(){delete _dojoIEListeners_[this.handle]};var r=function(a){return function(d){var d=b._fixEvent(d,this),f=a.call(this,d);d.modified&&(n||setTimeout(function(){n=null}),n=d);return f}},q=function(a,b,d){d=r(d);if(((a.ownerDocument?a.ownerDocument.parentWindow:a.parentWindow||a.window||window)!=top||5.8>i("jscript"))&&!i("config-_allow_leaks")){"undefined"==typeof _dojoIEListeners_&&(_dojoIEListeners_=[]);var f=a[b];if(!f||!f.listeners){var k=f,f=Function("event","var callee = arguments.callee; for(var i = 0; i<callee.listeners.length; i++){var listener = _dojoIEListeners_[callee.listeners[i]]; if(listener){listener.call(this,event);}}");
-f.listeners=[];a[b]=f;f.global=this;k&&f.listeners.push(_dojoIEListeners_.push(k)-1)}f.listeners.push(a=f.global._dojoIEListeners_.push(d)-1);return new o(a)}return e.after(a,b,d,!0)},v=function(){this.cancelBubble=!0},s=b._preventDefault=function(){this.bubbledKeyCode=this.keyCode;if(this.ctrlKey)try{this.keyCode=0}catch(a){}this.defaultPrevented=!0;this.returnValue=!1}}if(i("touch"))var u=function(){},t=window.orientation,y=function(a){return function(b){var d=b.corrected;if(!d){var f=b.type;try{delete b.type}catch(k){}b.type?
-(u.prototype=b,d=new u,d.preventDefault=function(){b.preventDefault()},d.stopPropagation=function(){b.stopPropagation()}):(d=b,d.type=f);b.corrected=d;if("resize"==f){if(t==window.orientation)return null;t=window.orientation;d.type="orientationchange";return a.call(this,d)}if(!("rotation"in d))d.rotation=0,d.scale=1;var f=d.changedTouches[0],c;for(c in f)delete d[c],d[c]=f[c]}return a.call(this,d)}};return b})},"dojo/when":function(){define(["./Deferred","./promise/Promise"],function(e,j){return function(i,
-l,c,g){var h=i&&"function"===typeof i.then,b=h&&i instanceof j;if(h){if(!b)h=new e(i.cancel),i.then(h.resolve,h.reject,h.progress),i=h.promise}else return l?l(i):(new e).resolve(i);return l||c||g?i.then(l,c,g):i}})},"dojo/_base/json":function(){define(["./kernel","../json"],function(e,j){e.fromJson=function(e){return eval("("+e+")")};e._escapeString=j.stringify;e.toJsonIndentStr="\t";e.toJson=function(i,l){return j.stringify(i,function(c,g){if(g){var e=g.__json__||g.json;if("function"==typeof e)return e.call(g)}return g},
-l&&e.toJsonIndentStr)};return e})},"dojo/request/watch":function(){define("./util,../errors/RequestTimeoutError,../errors/CancelError,../_base/array,../_base/window,../has!host-browser?dom-addeventlistener?:../on:".split(","),function(e,j,i,l,c,g){function h(){for(var k=+new Date,d=0,c;d<a.length&&(c=a[d]);d++){var m=c.response,g=m.options;if(c.isCanceled&&c.isCanceled()||c.isValid&&!c.isValid(m))a.splice(d--,1),b._onAction&&b._onAction();else if(c.isReady&&c.isReady(m))a.splice(d--,1),c.handleResponse(m),
-b._onAction&&b._onAction();else if(c.startTime&&c.startTime+(g.timeout||0)<k)a.splice(d--,1),c.cancel(new j("Timeout exceeded",m)),b._onAction&&b._onAction()}b._onInFlight&&b._onInFlight(c);a.length||(clearInterval(f),f=null)}function b(b){if(b.response.options.timeout)b.startTime=+new Date;b.isFulfilled()||(a.push(b),f||(f=setInterval(h,50)),b.response.options.sync&&h())}var f=null,a=[];b.cancelAll=function(){try{l.forEach(a,function(a){try{a.cancel(new i("All requests canceled."))}catch(b){}})}catch(b){}};
-c&&g&&c.doc.attachEvent&&g(c.global,"unload",function(){b.cancelAll()});return b})},"dojo/request/util":function(){define("exports,../errors/RequestError,../errors/CancelError,../Deferred,../io-query,../_base/array,../_base/lang".split(","),function(e,j,i,l,c,g,h){function b(a){return f(a)}e.deepCopy=function(a,b){for(var d in b){var f=a[d],c=b[d];f!==c&&(f&&"object"===typeof f&&c&&"object"===typeof c?e.deepCopy(f,c):a[d]=c)}return a};e.deepCreate=function(a,b){var b=b||{},d=h.delegate(a),f,c;for(f in a)(c=
-a[f])&&"object"===typeof c&&(d[f]=e.deepCreate(c,b[f]));return e.deepCopy(d,b)};var f=Object.freeze||function(a){return a};e.deferred=function(a,c,d,g,m,n){var o=new l(function(b){c&&c(o,a);return!b||!(b instanceof j)&&!(b instanceof i)?new i("Request canceled",a):b});o.response=a;o.isValid=d;o.isReady=g;o.handleResponse=m;d=o.then(b).otherwise(function(b){b.response=a;throw b;});e.notify&&d.then(h.hitch(e.notify,"emit","load"),h.hitch(e.notify,"emit","error"));g=d.then(function(a){return a.data||
-a.text});d=f(h.delegate(g,{response:d}));n&&o.then(function(a){n.call(o,a)},function(b){n.call(o,a,b)});o.promise=d;o.then=d.then;return o};e.addCommonMethods=function(a,b){g.forEach(b||["GET","POST","PUT","DELETE"],function(b){a[("DELETE"===b?"DEL":b).toLowerCase()]=function(f,c){c=h.delegate(c||{});c.method=b;return a(f,c)}})};e.parseArgs=function(a,b,d){var f=b.data,m=b.query;if(f&&!d&&"object"===typeof f)b.data=c.objectToQuery(f);m?("object"===typeof m&&(m=c.objectToQuery(m)),b.preventCache&&
-(m+=(m?"&":"")+"request.preventCache="+ +new Date)):b.preventCache&&(m="request.preventCache="+ +new Date);a&&m&&(a+=(~a.indexOf("?")?"&":"?")+m);return{url:a,options:b,getHeader:function(){return null}}};e.checkStatus=function(a){a=a||0;return 200<=a&&300>a||304===a||1223===a||!a}})},"dojo/errors/RequestError":function(){define(["./create"],function(e){return e("RequestError",function(e,i){this.response=i})})},"dojo/errors/RequestTimeoutError":function(){define(["./create","./RequestError"],function(e,
-j){return e("RequestTimeoutError",null,j,{dojoType:"timeout"})})},"dojo/request/xhr":function(){define(["../errors/RequestError","./watch","./handlers","./util","../has"],function(e,j,i,l,c){function g(a,b){var d=a.xhr;a.status=a.xhr.status;a.text=d.responseText;if("xml"===a.options.handleAs)a.data=d.responseXML;if(!b)try{i(a)}catch(f){b=f}b?this.reject(b):l.checkStatus(d.status)?this.resolve(a):(b=new e("Unable to load "+a.url+" status: "+d.status,a),this.reject(b))}function h(m,n,i){var v=l.parseArgs(m,
-l.deepCreate(p,n),c("native-formdata")&&n&&n.data&&n.data instanceof FormData),m=v.url,n=v.options,s,u=l.deferred(v,k,b,f,g,function(){s&&s()}),t=v.xhr=h._create();if(!t)return u.cancel(new e("XHR was not created")),i?u:u.promise;v.getHeader=function(a){return this.xhr.getResponseHeader(a)};a&&(s=a(t,u,v));var y=n.data,z=!n.sync,I=n.method;try{t.open(I,m,z,n.user||d,n.password||d);if(n.withCredentials)t.withCredentials=n.withCredentials;var J=n.headers,N;if(J)for(var E in J)"content-type"===E.toLowerCase()?
-N=J[E]:J[E]&&t.setRequestHeader(E,J[E]);N&&!1!==N&&t.setRequestHeader("Content-Type",N);(!J||!("X-Requested-With"in J))&&t.setRequestHeader("X-Requested-With","XMLHttpRequest");l.notify&&l.notify.emit("send",v,u.promise.cancel);t.send(y)}catch(S){u.reject(S)}j(u);t=null;return i?u:u.promise}c.add("native-xhr",function(){return"undefined"!==typeof XMLHttpRequest});c.add("dojo-force-activex-xhr",function(){return c("activex")&&!document.addEventListener&&"file:"===window.location.protocol});c.add("native-xhr2",
-function(){if(c("native-xhr")){var a=new XMLHttpRequest;return"undefined"!==typeof a.addEventListener&&("undefined"===typeof opera||"undefined"!==typeof a.upload)}});c.add("native-formdata",function(){return"function"===typeof FormData});var b,f,a,k;c("native-xhr2")?(b=function(){return!this.isFulfilled()},k=function(a,b){b.xhr.abort()},a=function(a,b,d){function f(){b.handleResponse(d)}function c(a){a=new e("Unable to load "+d.url+" status: "+a.target.status,d);b.handleResponse(d,a)}function k(a){if(a.lengthComputable)d.loaded=
-a.loaded,d.total=a.total,b.progress(d)}a.addEventListener("load",f,!1);a.addEventListener("error",c,!1);a.addEventListener("progress",k,!1);return function(){a.removeEventListener("load",f,!1);a.removeEventListener("error",c,!1);a.removeEventListener("progress",k,!1)}}):(b=function(a){return a.xhr.readyState},f=function(a){return 4===a.xhr.readyState},k=function(a,b){var d=b.xhr,f=typeof d.abort;("function"===f||"object"===f||"unknown"===f)&&d.abort()});var d,p={data:null,query:null,sync:!1,method:"GET",
-headers:{"Content-Type":"application/x-www-form-urlencoded"}};h._create=function(){throw Error("XMLHTTP not available");};if(c("native-xhr")&&!c("dojo-force-activex-xhr"))h._create=function(){return new XMLHttpRequest};else if(c("activex"))try{new ActiveXObject("Msxml2.XMLHTTP"),h._create=function(){return new ActiveXObject("Msxml2.XMLHTTP")}}catch(m){try{new ActiveXObject("Microsoft.XMLHTTP"),h._create=function(){return new ActiveXObject("Microsoft.XMLHTTP")}}catch(n){}}l.addCommonMethods(h);return h})},
-"dojo/request/handlers":function(){define(["../json","../_base/kernel","../_base/array","../has"],function(e,j,i,l){function c(f){var a=b[f.options.handleAs];f.data=a?a(f):f.data||f.text;return f}l.add("activex","undefined"!==typeof ActiveXObject);var g;if(l("activex")){var h=["Msxml2.DOMDocument.6.0","Msxml2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML.DOMDocument"];g=function(b){var a=b.data;if(!a||!a.documentElement){var c=b.text;i.some(h,function(b){try{var f=new ActiveXObject(b);f.async=
-!1;f.loadXML(c);a=f}catch(m){return!1}return!0})}return a}}var b={javascript:function(b){return j.eval(b.text||"")},json:function(b){return e.parse(b.text||null)},xml:g};c.register=function(f,a){b[f]=a};return c})},"dojo/main":function(){define("./_base/kernel,./has,require,./sniff,./_base/lang,./_base/array,./_base/config,./ready,./_base/declare,./_base/connect,./_base/Deferred,./_base/json,./_base/Color,./has!dojo-firebug?./_firebug/firebug,./_base/browser,require".split(","),function(e,j,i,l,c,
-g,h,b){h.isDebug&&i(["./_firebug/firebug"]);var f=h.require;f&&(f=g.map(c.isArray(f)?f:[f],function(a){return a.replace(/\./g,"/")}),e.isAsync?i(f):b(1,function(){i(f)}));return e})},"dojo/ready":function(){define(["./_base/kernel","./has","require","./domReady","./_base/lang"],function(e,j,i,l,c){var g=0,h,b=[],f=0,a=function(){if(g&&!f&&b.length){f=1;var d=b.shift();try{d()}finally{f=0}f=0;b.length&&h(a)}};i.on("idle",a);h=function(){i.idle()&&a()};var j=e.ready=e.addOnLoad=function(a,f,k){var g=
-c._toArray(arguments);"number"!=typeof a?(k=f,f=a,a=1E3):g.shift();k=k?c.hitch.apply(e,g):function(){f()};k.priority=a;for(g=0;g<b.length&&a>=b[g].priority;g++);b.splice(g,0,k);h()},k=e.config.addOnLoad;if(k)j[c.isArray(k)?"apply":"call"](e,k);l(function(){g=1;e._postLoad=e.config.afterOnLoad=!0;b.length&&h(a)});return j})},"dojo/domReady":function(){define(["./has"],function(e){function j(a){h?a(l):b.push(a)}var i=this,l=document,c={loaded:1,complete:1},g="string"!=typeof l.readyState,h=!!c[l.readyState];
-if(g)l.readyState="loading";if(!h){var b=[],f=[],a=function(a){a=a||i.event;if(!(h||"readystatechange"==a.type&&!c[l.readyState])){h=1;if(g)l.readyState="complete";for(;b.length;)b.shift()(l)}},k=function(d,f){d.addEventListener(f,a,!1);b.push(function(){d.removeEventListener(f,a,!1)})};if(!e("dom-addeventlistener")){var k=function(d,f){f="on"+f;d.attachEvent(f,a);b.push(function(){d.detachEvent(f,a)})},d=l.createElement("div");try{d.doScroll&&null===i.frameElement&&f.push(function(){try{return d.doScroll("left"),
-1}catch(a){}})}catch(p){}}k(l,"DOMContentLoaded");k(i,"load");"onreadystatechange"in l?k(l,"readystatechange"):g||f.push(function(){return c[l.readyState]});if(f.length){var m=function(){if(!h){for(var b=f.length;b--;)if(f[b]()){a("poller");return}setTimeout(m,30)}};m()}}j.load=function(a,b,d){j(d)};return j})},"dojo/_base/declare":function(){define(["./kernel","../has","./lang"],function(e,j,i){function l(a,b){throw Error("declare"+(b?" "+b:"")+": "+a);}function c(a,b,d){var f,c,k,m,g,e,h,i=this._inherited=
-this._inherited||{};"string"==typeof a&&(f=a,a=b,b=d);d=0;m=a.callee;(f=f||m.nom)||l("can't deduce a name to call inherited()",this.declaredClass);g=this.constructor._meta;k=g.bases;h=i.p;if(f!=z){if(i.c!==m&&(h=0,e=k[0],g=e._meta,g.hidden[f]!==m)){(c=g.chains)&&"string"==typeof c[f]&&l("calling chained method with inherited: "+f,this.declaredClass);do if(g=e._meta,c=e.prototype,g&&(c[f]===m&&c.hasOwnProperty(f)||g.hidden[f]===m))break;while(e=k[++h]);h=e?h:-1}if(e=k[++h])if(c=e.prototype,e._meta&&
-c.hasOwnProperty(f))d=c[f];else{m=s[f];do if(c=e.prototype,(d=c[f])&&(e._meta?c.hasOwnProperty(f):d!==m))break;while(e=k[++h])}d=e&&d||s[f]}else{if(i.c!==m&&(h=0,(g=k[0]._meta)&&g.ctor!==m)){c=g.chains;for((!c||"manual"!==c.constructor)&&l("calling chained constructor with inherited",this.declaredClass);(e=k[++h])&&!((g=e._meta)&&g.ctor===m););h=e?h:-1}for(;(e=k[++h])&&!(d=(g=e._meta)?g.ctor:e););d=e&&d}i.c=d;i.p=h;if(d)return!0===b?d:d.apply(this,b||a)}function g(a,b){return"string"==typeof a?this.__inherited(a,
-b,!0):this.__inherited(a,!0)}function h(a,b,d){var f=this.getInherited(a,b);if(f)return f.apply(this,d||b||a)}function b(a){for(var b=this.constructor._meta.bases,d=0,f=b.length;d<f;++d)if(b[d]===a)return!0;return this instanceof a}function f(a,b){for(var d in b)d!=z&&b.hasOwnProperty(d)&&(a[d]=b[d]);if(j("bug-for-in-skips-shadowed"))for(var f=i._extraNames,c=f.length;c;)d=f[--c],d!=z&&b.hasOwnProperty(d)&&(a[d]=b[d])}function a(a){q.safeMixin(this.prototype,a);return this}function k(a){return q([this].concat(a))}
-function d(a,b){return function(){var w;var d=arguments,f=d,c=d[0],k,m;m=a.length;var g;if(!(this instanceof d.callee))return r(d);if(b&&(c&&c.preamble||this.preamble)){g=Array(a.length);g[0]=d;for(k=0;;){if(c=d[0])(c=c.preamble)&&(d=c.apply(this,d)||d);c=a[k].prototype;(c=c.hasOwnProperty("preamble")&&c.preamble)&&(d=c.apply(this,d)||d);if(++k==m)break;g[k]=d}}for(k=m-1;0<=k;--k)c=a[k],(w=(m=c._meta)?m.ctor:c,c=w)&&c.apply(this,g?g[k]:d);(c=this.postscript)&&c.apply(this,f)}}function p(a,b){return function(){var d=
-arguments,f=d,c=d[0];if(!(this instanceof d.callee))return r(d);if(b){if(c)(c=c.preamble)&&(f=c.apply(this,f)||f);(c=this.preamble)&&c.apply(this,f)}a&&a.apply(this,d);(c=this.postscript)&&c.apply(this,d)}}function m(a){return function(){var w;var b=arguments,d=0,f,c;if(!(this instanceof b.callee))return r(b);for(;f=a[d];++d)if(w=(c=f._meta)?c.ctor:f,f=w){f.apply(this,b);break}(f=this.postscript)&&f.apply(this,b)}}function n(a,b,d){return function(){var f,c,k=0,m=1;d&&(k=b.length-1,m=-1);for(;f=b[k];k+=
-m)c=f._meta,(f=(c?c.hidden:f.prototype)[a])&&f.apply(this,arguments)}}function o(a){t.prototype=a.prototype;a=new t;t.prototype=null;return a}function r(a){var b=a.callee,d=o(b);b.apply(d,a);return d}function q(e,h,j){"string"!=typeof e&&(j=h,h=e,e="");var j=j||{},r,t,B,A,w,x,K,H=1,C=h;if("[object Array]"==u.call(h)){H=e;B=[];A=[{cls:0,refs:[]}];x={};for(var F=1,O=h.length,D=0,L,T,G,M;D<O;++D){(L=h[D])?"[object Function]"!=u.call(L)&&l("mixin #"+D+" is not a callable constructor.",H):l("mixin #"+
-D+" is unknown. Did you use dojo.require to pull it in?",H);T=L._meta?L._meta.bases:[L];G=0;for(L=T.length-1;0<=L;--L){M=T[L].prototype;if(!M.hasOwnProperty("declaredClass"))M.declaredClass="uniqName_"+y++;M=M.declaredClass;x.hasOwnProperty(M)||(x[M]={count:0,refs:[],cls:T[L]},++F);M=x[M];G&&G!==M&&(M.refs.push(G),++G.count);G=M}++G.count;A[0].refs.push(G)}for(;A.length;){G=A.pop();B.push(G.cls);for(--F;t=G.refs,1==t.length;){G=t[0];if(!G||--G.count){G=0;break}B.push(G.cls);--F}if(G)for(D=0,O=t.length;D<
-O;++D)G=t[D],--G.count||A.push(G)}F&&l("can't build consistent linearization",H);L=h[0];B[0]=L?L._meta&&L===B[B.length-L._meta.bases.length]?L._meta.bases.length:1:0;x=B;B=x[0];H=x.length-B;h=x[H]}else x=[0],h?"[object Function]"==u.call(h)?(B=h._meta,x=x.concat(B?B.bases:h)):l("base class is not a callable constructor.",e):null!==h&&l("unknown base class. Did you use dojo.require to pull it in?",e);if(h)for(t=H-1;;--t){r=o(h);if(!t)break;B=x[t];(B._meta?f:v)(r,B.prototype);A=new Function;A.superclass=
-h;A.prototype=r;h=r.constructor=A}else r={};q.safeMixin(r,j);B=j.constructor;if(B!==s.constructor)B.nom=z,r.constructor=B;for(t=H-1;t;--t)(B=x[t]._meta)&&B.chains&&(K=v(K||{},B.chains));r["-chains-"]&&(K=v(K||{},r["-chains-"]));B=!K||!K.hasOwnProperty(z);x[0]=A=K&&"manual"===K.constructor?m(x):1==x.length?p(j.constructor,B):d(x,B);A._meta={bases:x,hidden:j,chains:K,parents:C,ctor:j.constructor};A.superclass=h&&h.prototype;A.extend=a;A.createSubclass=k;A.prototype=r;r.constructor=A;r.getInherited=
-g;r.isInstanceOf=b;r.inherited=I;r.__inherited=c;if(e)r.declaredClass=e,i.setObject(e,A);if(K)for(w in K)if(r[w]&&"string"==typeof K[w]&&w!=z)B=r[w]=n(w,x,"after"===K[w]),B.nom=w;return A}var v=i.mixin,s=Object.prototype,u=s.toString,t=new Function,y=0,z="constructor",I=e.config.isDebug?h:c;e.safeMixin=q.safeMixin=function(a,b){var d,f;for(d in b)if(f=b[d],(f!==s[d]||!(d in s))&&d!=z){if("[object Function]"==u.call(f))f.nom=d;a[d]=f}if(j("bug-for-in-skips-shadowed"))for(var c=i._extraNames,k=c.length;k;)if(d=
-c[--k],f=b[d],(f!==s[d]||!(d in s))&&d!=z){if("[object Function]"==u.call(f))f.nom=d;a[d]=f}return a};return e.declare=q})},"dojo/_base/connect":function(){define("./kernel,../on,../topic,../aspect,./event,../mouse,./sniff,./lang,../keys".split(","),function(e,j,i,l,c,g,h,b){function f(a,d,f,c,k){c=b.hitch(f,c);if(!a||!a.addEventListener&&!a.attachEvent)return l.after(a||e.global,d,c,!0);"string"==typeof d&&"on"==d.substring(0,2)&&(d=d.substring(2));if(!a)a=e.global;if(!k)switch(d){case "keypress":d=
-m;break;case "mouseenter":d=g.enter;break;case "mouseleave":d=g.leave}return j(a,d,c,k)}function a(a){a.keyChar=a.charCode?String.fromCharCode(a.charCode):"";a.charOrCode=a.keyChar||a.keyCode}h.add("events-keypress-typed",function(){var a={charCode:0};try{a=document.createEvent("KeyboardEvent"),(a.initKeyboardEvent||a.initKeyEvent).call(a,"keypress",!0,!0,null,!1,!1,!1,!1,9,3)}catch(b){}return 0==a.charCode&&!h("opera")});var k={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,229:113},d=h("mac")?"metaKey":"ctrlKey",p=function(d,f){var c=b.mixin({},d,f);a(c);c.preventDefault=function(){d.preventDefault()};c.stopPropagation=function(){d.stopPropagation()};return c},m;m=h("events-keypress-typed")?function(a,b){var d=j(a,"keydown",function(a){var d=a.keyCode,f=13!=d&&32!=d&&(27!=d||!h("ie"))&&(48>d||90<d)&&(96>d||111<d)&&(186>d||192<d)&&(219>d||222<d)&&229!=d;if(f||a.ctrlKey){f=f?0:d;if(a.ctrlKey){if(3==d||13==d)return b.call(a.currentTarget,a);f=95<f&&
-106>f?f-48:!a.shiftKey&&65<=f&&90>=f?f+32:k[f]||f}d=p(a,{type:"keypress",faux:!0,charCode:f});b.call(a.currentTarget,d);if(h("ie"))try{a.keyCode=d.keyCode}catch(c){}}}),f=j(a,"keypress",function(a){var d=a.charCode,a=p(a,{charCode:32<=d?d:0,faux:!0});return b.call(this,a)});return{remove:function(){d.remove();f.remove()}}}:h("opera")?function(a,b){return j(a,"keypress",function(a){var d=a.which;3==d&&(d=99);d=32>d&&!a.shiftKey?0:d;a.ctrlKey&&!a.shiftKey&&65<=d&&90>=d&&(d+=32);return b.call(this,p(a,
-{charCode:d}))})}:function(b,d){return j(b,"keypress",function(b){a(b);return d.call(this,b)})};var n={_keypress:m,connect:function(a,b,d,c,k){var m=arguments,g=[],e=0;g.push("string"==typeof m[0]?null:m[e++],m[e++]);var h=m[e+1];g.push("string"==typeof h||"function"==typeof h?m[e++]:null,m[e++]);for(h=m.length;e<h;e++)g.push(m[e]);return f.apply(this,g)},disconnect:function(a){a&&a.remove()},subscribe:function(a,d,f){return i.subscribe(a,b.hitch(d,f))},publish:function(a,b){return i.publish.apply(i,
-[a].concat(b))},connectPublisher:function(a,b,d){var f=function(){n.publish(a,arguments)};return d?n.connect(b,d,f):n.connect(b,f)},isCopyKey:function(a){return a[d]}};n.unsubscribe=n.disconnect;b.mixin(e,n);return n})},"dojo/topic":function(){define(["./Evented"],function(e){var j=new e;return{publish:function(e,l){return j.emit.apply(j,arguments)},subscribe:function(e,l){return j.on.apply(j,arguments)}}})},"dojo/_base/event":function(){define(["./kernel","../on","../has","../dom-geometry"],function(e,
-j,i,l){if(j._fixEvent){var c=j._fixEvent;j._fixEvent=function(g,b){(g=c(g,b))&&l.normalizeEvent(g);return g}}var g={fix:function(c,b){return j._fixEvent?j._fixEvent(c,b):c},stop:function(c){i("dom-addeventlistener")||c&&c.preventDefault?(c.preventDefault(),c.stopPropagation()):(c=c||window.event,c.cancelBubble=!0,j._preventDefault.call(c))}};e.fixEvent=g.fix;e.stopEvent=g.stop;return g})},"dojo/dom-geometry":function(){define(["./sniff","./_base/window","./dom","./dom-style"],function(e,j,i,l){function c(a,
-b,d,f,c,g){g=g||"px";a=a.style;if(!isNaN(b))a.left=b+g;if(!isNaN(d))a.top=d+g;if(0<=f)a.width=f+g;if(0<=c)a.height=c+g}function g(a){return"button"==a.tagName.toLowerCase()||"input"==a.tagName.toLowerCase()&&"button"==(a.getAttribute("type")||"").toLowerCase()}function h(a){return"border-box"==b.boxModel||"table"==a.tagName.toLowerCase()||g(a)}var b={boxModel:"content-box"};if(e("ie"))b.boxModel="BackCompat"==document.compatMode?"border-box":"content-box";b.getPadExtents=function(a,b){var a=i.byId(a),
-d=b||l.getComputedStyle(a),f=l.toPixelValue,c=f(a,d.paddingLeft),g=f(a,d.paddingTop),e=f(a,d.paddingRight),d=f(a,d.paddingBottom);return{l:c,t:g,r:e,b:d,w:c+e,h:g+d}};b.getBorderExtents=function(a,b){var a=i.byId(a),d=l.toPixelValue,f=b||l.getComputedStyle(a),c="none"!=f.borderLeftStyle?d(a,f.borderLeftWidth):0,g="none"!=f.borderTopStyle?d(a,f.borderTopWidth):0,e="none"!=f.borderRightStyle?d(a,f.borderRightWidth):0,d="none"!=f.borderBottomStyle?d(a,f.borderBottomWidth):0;return{l:c,t:g,r:e,b:d,w:c+
-e,h:g+d}};b.getPadBorderExtents=function(a,f){var a=i.byId(a),d=f||l.getComputedStyle(a),c=b.getPadExtents(a,d),d=b.getBorderExtents(a,d);return{l:c.l+d.l,t:c.t+d.t,r:c.r+d.r,b:c.b+d.b,w:c.w+d.w,h:c.h+d.h}};b.getMarginExtents=function(a,b){var a=i.byId(a),d=b||l.getComputedStyle(a),f=l.toPixelValue,c=f(a,d.marginLeft),g=f(a,d.marginTop),e=f(a,d.marginRight),d=f(a,d.marginBottom);return{l:c,t:g,r:e,b:d,w:c+e,h:g+d}};b.getMarginBox=function(a,f){var a=i.byId(a),d=f||l.getComputedStyle(a),c=b.getMarginExtents(a,
-d),m=a.offsetLeft-c.l,g=a.offsetTop-c.t,h=a.parentNode,j=l.toPixelValue;if(e("mozilla")){var q=parseFloat(d.left),d=parseFloat(d.top);!isNaN(q)&&!isNaN(d)?(m=q,g=d):h&&h.style&&(h=l.getComputedStyle(h),"visible"!=h.overflow&&(m+="none"!=h.borderLeftStyle?j(a,h.borderLeftWidth):0,g+="none"!=h.borderTopStyle?j(a,h.borderTopWidth):0))}else if((e("opera")||8==e("ie")&&!e("quirks"))&&h)h=l.getComputedStyle(h),m-="none"!=h.borderLeftStyle?j(a,h.borderLeftWidth):0,g-="none"!=h.borderTopStyle?j(a,h.borderTopWidth):
-0;return{l:m,t:g,w:a.offsetWidth+c.w,h:a.offsetHeight+c.h}};b.getContentBox=function(a,f){var a=i.byId(a),d=f||l.getComputedStyle(a),c=a.clientWidth,g=b.getPadExtents(a,d),h=b.getBorderExtents(a,d);c?(d=a.clientHeight,h.w=h.h=0):(c=a.offsetWidth,d=a.offsetHeight);e("opera")&&(g.l+=h.l,g.t+=h.t);return{l:g.l,t:g.t,w:c-g.w-h.w,h:d-g.h-h.h}};b.setContentSize=function(a,f,d){var a=i.byId(a),g=f.w,f=f.h;h(a)&&(d=b.getPadBorderExtents(a,d),0<=g&&(g+=d.w),0<=f&&(f+=d.h));c(a,NaN,NaN,g,f)};var f={l:0,t:0,
-w:0,h:0};b.setMarginBox=function(a,k,d){var a=i.byId(a),p=d||l.getComputedStyle(a),d=k.w,m=k.h,n=h(a)?f:b.getPadBorderExtents(a,p),p=b.getMarginExtents(a,p);if(e("webkit")&&g(a)){var j=a.style;if(0<=d&&!j.width)j.width="4px";if(0<=m&&!j.height)j.height="4px"}0<=d&&(d=Math.max(d-n.w-p.w,0));0<=m&&(m=Math.max(m-n.h-p.h,0));c(a,k.l,k.t,d,m)};b.isBodyLtr=function(a){a=a||j.doc;return"ltr"==(j.body(a).dir||a.documentElement.dir||"ltr").toLowerCase()};b.docScroll=function(a){var a=a||j.doc,f=j.doc.parentWindow||
-j.doc.defaultView;return"pageXOffset"in f?{x:f.pageXOffset,y:f.pageYOffset}:(f=e("quirks")?j.body(a):a.documentElement)&&{x:b.fixIeBiDiScrollLeft(f.scrollLeft||0,a),y:f.scrollTop||0}};if(e("ie"))b.getIeDocumentElementOffset=function(a){a=a||j.doc;a=a.documentElement;if(8>e("ie")){var b=a.getBoundingClientRect(),d=b.left,b=b.top;7>e("ie")&&(d+=a.clientLeft,b+=a.clientTop);return{x:0>d?0:d,y:0>b?0:b}}return{x:0,y:0}};b.fixIeBiDiScrollLeft=function(a,f){var f=f||j.doc,d=e("ie");if(d&&!b.isBodyLtr(f)){var c=
-e("quirks"),g=c?j.body(f):f.documentElement,h=j.global;6==d&&!c&&h.frameElement&&g.scrollHeight>g.clientHeight&&(a+=g.clientLeft);return 8>d||c?a+g.clientWidth-g.scrollWidth:-a}return a};b.position=function(a,f){var a=i.byId(a),d=j.body(a.ownerDocument),c=a.getBoundingClientRect(),c={x:c.left,y:c.top,w:c.right-c.left,h:c.bottom-c.top};if(e("ie")){var g=b.getIeDocumentElementOffset(a.ownerDocument);c.x-=g.x+(e("quirks")?d.clientLeft+d.offsetLeft:0);c.y-=g.y+(e("quirks")?d.clientTop+d.offsetTop:0)}f&&
-(d=b.docScroll(a.ownerDocument),c.x+=d.x,c.y+=d.y);return c};b.getMarginSize=function(a,f){var a=i.byId(a),d=b.getMarginExtents(a,f||l.getComputedStyle(a)),c=a.getBoundingClientRect();return{w:c.right-c.left+d.w,h:c.bottom-c.top+d.h}};b.normalizeEvent=function(a){if(!("layerX"in a))a.layerX=a.offsetX,a.layerY=a.offsetY;if(!e("dom-addeventlistener")){var f=a.target,f=f&&f.ownerDocument||document,d=e("quirks")?f.body:f.documentElement,c=b.getIeDocumentElementOffset(f);a.pageX=a.clientX+b.fixIeBiDiScrollLeft(d.scrollLeft||
-0,f)-c.x;a.pageY=a.clientY+(d.scrollTop||0)-c.y}};return b})},"dojo/dom-style":function(){define(["./sniff","./dom"],function(e,j){function i(b,d,f){d=d.toLowerCase();if(e("ie")){if("auto"==f){if("height"==d)return b.offsetHeight;if("width"==d)return b.offsetWidth}if("fontweight"==d)switch(f){case 700:return"bold";default:return"normal"}}d in a||(a[d]=k.test(d));return a[d]?g(b,f):f}var l,c={};l=e("webkit")?function(a){var b;if(1==a.nodeType){var d=a.ownerDocument.defaultView;b=d.getComputedStyle(a,
-null);if(!b&&a.style)a.style.display="",b=d.getComputedStyle(a,null)}return b||{}}:e("ie")&&(9>e("ie")||e("quirks"))?function(a){return 1==a.nodeType&&a.currentStyle?a.currentStyle:{}}:function(a){return 1==a.nodeType?a.ownerDocument.defaultView.getComputedStyle(a,null):{}};c.getComputedStyle=l;var g;g=e("ie")?function(a,b){if(!b)return 0;if("medium"==b)return 4;if(b.slice&&"px"==b.slice(-2))return parseFloat(b);var d=a.style,f=a.runtimeStyle,c=d.left,k=f.left;f.left=a.currentStyle.left;try{d.left=
-b,b=d.pixelLeft}catch(g){b=0}d.left=c;f.left=k;return b}:function(a,b){return parseFloat(b)||0};c.toPixelValue=g;var h=function(a,b){try{return a.filters.item("DXImageTransform.Microsoft.Alpha")}catch(d){return b?{}:null}},b=9>e("ie")||e("ie")&&e("quirks")?function(a){try{return h(a).Opacity/100}catch(b){return 1}}:function(a){return l(a).opacity},f=9>e("ie")||e("ie")&&e("quirks")?function(a,b){var d=100*b,c=1==b;a.style.zoom=c?"":1;if(h(a))h(a,1).Opacity=d;else{if(c)return b;a.style.filter+=" progid:DXImageTransform.Microsoft.Alpha(Opacity="+
-d+")"}h(a,1).Enabled=!c;if("tr"==a.tagName.toLowerCase())for(d=a.firstChild;d;d=d.nextSibling)"td"==d.tagName.toLowerCase()&&f(d,b);return b}:function(a,b){return a.style.opacity=b},a={left:!0,top:!0},k=/margin|padding|width|height|max|min|offset/,d=e("ie")?"styleFloat":"cssFloat",p={cssFloat:d,styleFloat:d,"float":d};c.get=function(a,d){var f=j.byId(a),k=arguments.length;if(2==k&&"opacity"==d)return b(f);var d=p[d]||d,g=c.getComputedStyle(f);return 1==k?g:i(f,d,g[d]||f.style[d])};c.set=function(a,
-b,d){var k=j.byId(a),g=arguments.length,e="opacity"==b,b=p[b]||b;if(3==g)return e?f(k,d):k.style[b]=d;for(var h in b)c.set(a,h,b[h]);return c.getComputedStyle(k)};return c})},"dojo/mouse":function(){define(["./_base/kernel","./on","./has","./dom","./_base/window"],function(e,j,i,l,c){function g(c,b){var f=function(a,f){return j(a,c,function(d){if(b)return b(d,f);if(!l.isDescendant(d.relatedTarget,a))return f.call(this,d)})};f.bubble=function(a){return g(c,function(b,d){var f=a(b.target),c=b.relatedTarget;
-if(f&&f!=(c&&1==c.nodeType&&a(c)))return d.call(f,b)})};return f}i.add("dom-quirks",c.doc&&"BackCompat"==c.doc.compatMode);i.add("events-mouseenter",c.doc&&"onmouseenter"in c.doc.createElement("div"));i.add("events-mousewheel",c.doc&&"onmousewheel"in c.doc);c=i("dom-quirks")&&i("ie")||!i("dom-addeventlistener")?{LEFT:1,MIDDLE:4,RIGHT:2,isButton:function(c,b){return c.button&b},isLeft:function(c){return c.button&1},isMiddle:function(c){return c.button&4},isRight:function(c){return c.button&2}}:{LEFT:0,
-MIDDLE:1,RIGHT:2,isButton:function(c,b){return c.button==b},isLeft:function(c){return 0==c.button},isMiddle:function(c){return 1==c.button},isRight:function(c){return 2==c.button}};e.mouseButtons=c;e=i("events-mousewheel")?"mousewheel":function(c,b){return j(c,"DOMMouseScroll",function(f){f.wheelDelta=-f.detail;b.call(this,f)})};return{_eventHandler:g,enter:g("mouseover"),leave:g("mouseout"),wheel:e,isLeft:c.isLeft,isMiddle:c.isMiddle,isRight:c.isRight}})},"dojo/keys":function(){define(["./_base/kernel",
-"./sniff"],function(e,j){return e.keys={BACKSPACE:8,TAB:9,CLEAR:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,META:j("webkit")?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,UP_DPAD:175,DOWN_DPAD:176,LEFT_DPAD:177,RIGHT_DPAD:178,copyKey:j("mac")&&!j("air")?j("safari")?91:224:17}})},"dojo/_base/Color":function(){define(["./kernel","./lang","./array","./config"],function(e,j,i,l){var c=e.Color=function(c){c&&this.setColor(c)};c.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:l.transparentColor||[0,0,0,0]};j.extend(c,{r:255,g:255,b:255,a:1,_set:function(c,e,b,f){this.r=c;this.g=e;this.b=b;this.a=f},setColor:function(g){j.isString(g)?c.fromString(g,this):j.isArray(g)?c.fromArray(g,this):(this._set(g.r,g.g,g.b,g.a),g instanceof c||
-this.sanitize());return this},sanitize:function(){return this},toRgb:function(){return[this.r,this.g,this.b]},toRgba:function(){return[this.r,this.g,this.b,this.a]},toHex:function(){return"#"+i.map(["r","g","b"],function(c){c=this[c].toString(16);return 2>c.length?"0"+c:c},this).join("")},toCss:function(c){var e=this.r+", "+this.g+", "+this.b;return(c?"rgba("+e+", "+this.a:"rgb("+e)+")"},toString:function(){return this.toCss(!0)}});c.blendColors=e.blendColors=function(g,e,b,f){var a=f||new c;i.forEach(["r",
-"g","b","a"],function(f){a[f]=g[f]+(e[f]-g[f])*b;"a"!=f&&(a[f]=Math.round(a[f]))});return a.sanitize()};c.fromRgb=e.colorFromRgb=function(g,e){var b=g.toLowerCase().match(/^rgba?\(([\s\.,0-9]+)\)/);return b&&c.fromArray(b[1].split(/\s*,\s*/),e)};c.fromHex=e.colorFromHex=function(g,e){var b=e||new c,f=4==g.length?4:8,a=(1<<f)-1,g=Number("0x"+g.substr(1));if(isNaN(g))return null;i.forEach(["b","g","r"],function(c){var d=g&a;g>>=f;b[c]=4==f?17*d:d});b.a=1;return b};c.fromArray=e.colorFromArray=function(g,
-e){var b=e||new c;b._set(Number(g[0]),Number(g[1]),Number(g[2]),Number(g[3]));if(isNaN(b.a))b.a=1;return b.sanitize()};c.fromString=e.colorFromString=function(g,e){var b=c.named[g];return b&&c.fromArray(b,e)||c.fromRgb(g,e)||c.fromHex(g,e)};return c})},"dojo/_base/browser":function(){require.has&&require.has.add("config-selectorEngine","acme");define("../ready,./kernel,./connect,./unload,./window,./event,./html,./NodeList,../query,./xhr,./fx".split(","),function(e){return e})},"dojo/_base/unload":function(){define(["./kernel",
-"./lang","../on"],function(e,j,i){var l=window,c={addOnWindowUnload:function(c,h){if(!e.windowUnloaded)i(l,"unload",e.windowUnloaded=function(){});i(l,"unload",j.hitch(c,h))},addOnUnload:function(c,e){i(l,"beforeunload",j.hitch(c,e))}};e.addOnWindowUnload=c.addOnWindowUnload;e.addOnUnload=c.addOnUnload;return c})},"dojo/_base/html":function(){define("./kernel,../dom,../dom-style,../dom-attr,../dom-prop,../dom-class,../dom-construct,../dom-geometry".split(","),function(e,j,i,l,c,g,h,b){e.byId=j.byId;
-e.isDescendant=j.isDescendant;e.setSelectable=j.setSelectable;e.getAttr=l.get;e.setAttr=l.set;e.hasAttr=l.has;e.removeAttr=l.remove;e.getNodeProp=l.getNodeProp;e.attr=function(b,a,c){return 2==arguments.length?l["string"==typeof a?"get":"set"](b,a):l.set(b,a,c)};e.hasClass=g.contains;e.addClass=g.add;e.removeClass=g.remove;e.toggleClass=g.toggle;e.replaceClass=g.replace;e._toDom=e.toDom=h.toDom;e.place=h.place;e.create=h.create;e.empty=function(b){h.empty(b)};e._destroyElement=e.destroy=function(b){h.destroy(b)};
-e._getPadExtents=e.getPadExtents=b.getPadExtents;e._getBorderExtents=e.getBorderExtents=b.getBorderExtents;e._getPadBorderExtents=e.getPadBorderExtents=b.getPadBorderExtents;e._getMarginExtents=e.getMarginExtents=b.getMarginExtents;e._getMarginSize=e.getMarginSize=b.getMarginSize;e._getMarginBox=e.getMarginBox=b.getMarginBox;e.setMarginBox=b.setMarginBox;e._getContentBox=e.getContentBox=b.getContentBox;e.setContentSize=b.setContentSize;e._isBodyLtr=e.isBodyLtr=b.isBodyLtr;e._docScroll=e.docScroll=
-b.docScroll;e._getIeDocumentElementOffset=e.getIeDocumentElementOffset=b.getIeDocumentElementOffset;e._fixIeBiDiScrollLeft=e.fixIeBiDiScrollLeft=b.fixIeBiDiScrollLeft;e.position=b.position;e.marginBox=function(f,a){return a?b.setMarginBox(f,a):b.getMarginBox(f)};e.contentBox=function(f,a){return a?b.setContentSize(f,a):b.getContentBox(f)};e.coords=function(f,a){e.deprecated("dojo.coords()","Use dojo.position() or dojo.marginBox().");var f=j.byId(f),c=i.getComputedStyle(f),c=b.getMarginBox(f,c),d=
-b.position(f,a);c.x=d.x;c.y=d.y;return c};e.getProp=c.get;e.setProp=c.set;e.prop=function(b,a,k){return 2==arguments.length?c["string"==typeof a?"get":"set"](b,a):c.set(b,a,k)};e.getStyle=i.get;e.setStyle=i.set;e.getComputedStyle=i.getComputedStyle;e.__toPixelValue=e.toPixelValue=i.toPixelValue;e.style=function(b,a,c){switch(arguments.length){case 1:return i.get(b);case 2:return i["string"==typeof a?"get":"set"](b,a)}return i.set(b,a,c)};return e})},"dojo/dom-attr":function(){define("exports,./sniff,./_base/lang,./dom,./dom-style,./dom-prop".split(","),
-function(e,j,i,l,c,g){function h(a,b){var d=a.getAttributeNode&&a.getAttributeNode(b);return d&&d.specified}var b={innerHTML:1,className:1,htmlFor:j("ie"),value:1},f={classname:"class",htmlfor:"for",tabindex:"tabIndex",readonly:"readOnly"};e.has=function(a,c){var d=c.toLowerCase();return b[g.names[d]||c]||h(l.byId(a),f[d]||c)};e.get=function(a,c){var a=l.byId(a),d=c.toLowerCase(),e=g.names[d]||c,m=a[e];if(b[e]&&"undefined"!=typeof m||"href"!=e&&("boolean"==typeof m||i.isFunction(m)))return m;d=f[d]||
-c;return h(a,d)?a.getAttribute(d):null};e.set=function(a,k,d){a=l.byId(a);if(2==arguments.length){for(var h in k)e.set(a,h,k[h]);return a}h=k.toLowerCase();var m=g.names[h]||k,j=b[m];if("style"==m&&"string"!=typeof d)return c.set(a,d),a;if(j||"boolean"==typeof d||i.isFunction(d))return g.set(a,k,d);a.setAttribute(f[h]||k,d);return a};e.remove=function(a,b){l.byId(a).removeAttribute(f[b.toLowerCase()]||b)};e.getNodeProp=function(a,b){var a=l.byId(a),d=b.toLowerCase(),c=g.names[d]||b;if(c in a&&"href"!=
-c)return a[c];d=f[d]||b;return h(a,d)?a.getAttribute(d):null}})},"dojo/dom-prop":function(){define("exports,./_base/kernel,./sniff,./_base/lang,./dom,./dom-style,./dom-construct,./_base/connect".split(","),function(e,j,i,l,c,g,h,b){var f={},a=0,k=j._scopeName+"attrid";e.names={"class":"className","for":"htmlFor",tabindex:"tabIndex",readonly:"readOnly",colspan:"colSpan",frameborder:"frameBorder",rowspan:"rowSpan",valuetype:"valueType"};e.get=function(a,b){var a=c.byId(a),f=b.toLowerCase();return a[e.names[f]||
-b]};e.set=function(d,j,m){d=c.byId(d);if(2==arguments.length&&"string"!=typeof j){for(var n in j)e.set(d,n,j[n]);return d}n=j.toLowerCase();n=e.names[n]||j;if("style"==n&&"string"!=typeof m)return g.set(d,m),d;if("innerHTML"==n)return i("ie")&&d.tagName.toLowerCase()in{col:1,colgroup:1,table:1,tbody:1,tfoot:1,thead:1,tr:1,title:1}?(h.empty(d),d.appendChild(h.toDom(m,d.ownerDocument))):d[n]=m,d;if(l.isFunction(m)){var o=d[k];o||(o=a++,d[k]=o);f[o]||(f[o]={});var r=f[o][n];if(r)b.disconnect(r);else try{delete d[n]}catch(q){}m?
-f[o][n]=b.connect(d,n,m):d[n]=null;return d}d[n]=m;return d}})},"dojo/dom-construct":function(){define("exports,./_base/kernel,./sniff,./_base/window,./dom,./dom-attr,./on".split(","),function(e,j,i,l,c,g,h){function b(a,b){var d=b.parentNode;d&&d.insertBefore(a,b)}var f={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"]},
-a=/<\s*([\w\:]+)/,k={},d=0,p="__"+j._scopeName+"ToDomId",m;for(m in f)if(f.hasOwnProperty(m))j=f[m],j.pre="option"==m?'<select multiple="multiple">':"<"+j.join("><")+">",j.post="</"+j.reverse().join("></")+">";var n=null,o;h(window,"unload",function(){n=null});e.toDom=function(b,c){var c=c||l.doc,g=c[p];g||(c[p]=g=++d+"",k[g]=c.createElement("div"));var b=b+"",e=b.match(a),m=e?e[1].toLowerCase():"",g=k[g];if(e&&f[m]){e=f[m];g.innerHTML=e.pre+b+e.post;for(e=e.length;e;--e)g=g.firstChild}else g.innerHTML=
-b;if(1==g.childNodes.length)return g.removeChild(g.firstChild);for(m=c.createDocumentFragment();e=g.firstChild;)m.appendChild(e);return m};e.place=function(a,d,f){d=c.byId(d);"string"==typeof a&&(a=/^\s*</.test(a)?e.toDom(a,d.ownerDocument):c.byId(a));if("number"==typeof f){var g=d.childNodes;!g.length||g.length<=f?d.appendChild(a):b(a,g[0>f?0:f])}else switch(f){case "before":b(a,d);break;case "after":f=a;(g=d.parentNode)&&(g.lastChild==d?g.appendChild(f):g.insertBefore(f,d.nextSibling));break;case "replace":d.parentNode.replaceChild(a,
-d);break;case "only":e.empty(d);d.appendChild(a);break;case "first":if(d.firstChild){b(a,d.firstChild);break}default:d.appendChild(a)}return a};e.create=function(a,b,d,f){var k=l.doc;if(d)d=c.byId(d),k=d.ownerDocument;"string"==typeof a&&(a=k.createElement(a));b&&g.set(a,b);d&&e.place(a,d,f);return a};e.empty=i("ie")?function(a){for(var a=c.byId(a),b;b=a.lastChild;)e.destroy(b)}:function(a){c.byId(a).innerHTML=""};e.destroy=function(a){a=c.byId(a);try{var b=a.ownerDocument;if(!n||o!=b)n=b.createElement("div"),
-o=b;n.appendChild(a.parentNode?a.parentNode.removeChild(a):a);n.innerHTML=""}catch(d){}}})},"dojo/dom-class":function(){define(["./_base/lang","./_base/array","./dom"],function(e,j,i){function l(b){if("string"==typeof b||b instanceof String){if(b&&!g.test(b))return h[0]=b,h;b=b.split(g);b.length&&!b[0]&&b.shift();b.length&&!b[b.length-1]&&b.pop();return b}return!b?[]:j.filter(b,function(a){return a})}var c,g=/\s+/,h=[""],b={};return c={contains:function(b,a){return 0<=(" "+i.byId(b).className+" ").indexOf(" "+
-a+" ")},add:function(b,a){var b=i.byId(b),a=l(a),c=b.className,d,c=c?" "+c+" ":" ";d=c.length;for(var g=0,e=a.length,h;g<e;++g)(h=a[g])&&0>c.indexOf(" "+h+" ")&&(c+=h+" ");d<c.length&&(b.className=c.substr(1,c.length-2))},remove:function(b,a){var b=i.byId(b),c;if(void 0!==a){a=l(a);c=" "+b.className+" ";for(var d=0,g=a.length;d<g;++d)c=c.replace(" "+a[d]+" "," ");c=e.trim(c)}else c="";b.className!=c&&(b.className=c)},replace:function(f,a,g){f=i.byId(f);b.className=f.className;c.remove(b,g);c.add(b,
-a);f.className!==b.className&&(f.className=b.className)},toggle:function(b,a,g){b=i.byId(b);if(void 0===g)for(var a=l(a),d=0,e=a.length,m;d<e;++d)m=a[d],c[c.contains(b,m)?"remove":"add"](b,m);else c[g?"add":"remove"](b,a);return g}}})},"dojo/_base/NodeList":function(){define(["./kernel","../query","./array","./html","../NodeList-dom"],function(e,j,i){var j=j.NodeList,l=j.prototype;l.connect=j._adaptAsForEach(function(){return e.connect.apply(this,arguments)});l.coords=j._adaptAsMap(e.coords);j.events=
-"blur,focus,change,click,error,keydown,keypress,keyup,load,mousedown,mouseenter,mouseleave,mousemove,mouseout,mouseover,mouseup,submit".split(",");i.forEach(j.events,function(c){var g="on"+c;l[g]=function(c,b){return this.connect(g,c,b)}});return e.NodeList=j})},"dojo/query":function(){define("./_base/kernel,./has,./dom,./on,./_base/array,./_base/lang,./selector/_loader,./selector/_loader!default".split(","),function(e,j,i,l,c,g,h,b){function f(a,b){var d=function(d,c){if("string"==typeof c&&(c=i.byId(c),
-!c))return new b([]);var f="string"==typeof d?a(d,c):d?d.orphan?d:[d]:[];return f.orphan?f:new b(f)};d.matches=a.match||function(a,b,c){return 0<d.filter([a],b,c).length};d.filter=a.filter||function(a,b,f){return d(b,f).filter(function(b){return-1<c.indexOf(a,b)})};if("function"!=typeof a)var f=a.search,a=function(a,b){return f(b||document,a)};return d}j.add("array-extensible",function(){return 1==g.delegate([],{length:1}).length&&!j("bug-for-in-skips-shadowed")});var a=Array.prototype,k=a.slice,
-d=a.concat,p=c.forEach,m=function(a,b,d){b=[0].concat(k.call(b,0));d=d||e.global;return function(c){b[0]=c;return a.apply(d,b)}},n=function(a){var b=this instanceof o&&j("array-extensible");"number"==typeof a&&(a=Array(a));var d=a&&"length"in a?a:arguments;if(b||!d.sort){for(var c=b?this:[],f=c.length=d.length,e=0;e<f;e++)c[e]=d[e];if(b)return c;d=c}g._mixin(d,r);d._NodeListCtor=function(a){return o(a)};return d},o=n,r=o.prototype=j("array-extensible")?[]:{};o._wrap=r._wrap=function(a,b,d){a=new (d||
-this._NodeListCtor||o)(a);return b?a._stash(b):a};o._adaptAsMap=function(a,b){return function(){return this.map(m(a,arguments,b))}};o._adaptAsForEach=function(a,b){return function(){this.forEach(m(a,arguments,b));return this}};o._adaptAsFilter=function(a,b){return function(){return this.filter(m(a,arguments,b))}};o._adaptWithCondition=function(a,b,d){return function(){var c=arguments,f=m(a,c,d);if(b.call(d||e.global,c))return this.map(f);this.forEach(f);return this}};p(["slice","splice"],function(b){var d=
-a[b];r[b]=function(){return this._wrap(d.apply(this,arguments),"slice"==b?this:null)}});p(["indexOf","lastIndexOf","every","some"],function(a){var b=c[a];r[a]=function(){return b.apply(e,[this].concat(k.call(arguments,0)))}});g.extend(n,{constructor:o,_NodeListCtor:o,toString:function(){return this.join(",")},_stash:function(a){this._parent=a;return this},on:function(a,b){var d=this.map(function(d){return l(d,a,b)});d.remove=function(){for(var a=0;a<d.length;a++)d[a].remove()};return d},end:function(){return this._parent?
-this._parent:new this._NodeListCtor(0)},concat:function(a){var b=k.call(this,0),f=c.map(arguments,function(a){return k.call(a,0)});return this._wrap(d.apply(b,f),this)},map:function(a,b){return this._wrap(c.map(this,a,b),this)},forEach:function(a,b){p(this,a,b);return this},filter:function(a){var b=arguments,d=this,f=0;if("string"==typeof a){d=q._filterResult(this,b[0]);if(1==b.length)return d._stash(this);f=1}return this._wrap(c.filter(d,b[f],b[f+1]),this)},instantiate:function(a,b){var d=g.isFunction(a)?
-a:g.getObject(a),b=b||{};return this.forEach(function(a){new d(b,a)})},at:function(){var a=new this._NodeListCtor(0);p(arguments,function(b){0>b&&(b=this.length+b);this[b]&&a.push(this[b])},this);return a._stash(this)}});var q=f(b,n);e.query=f(b,function(a){return n(a)});q.load=function(a,b,d){h.load(a,b,function(a){d(f(a,n))})};e._filterQueryResult=q._filterResult=function(a,b,d){return new n(q.filter(a,b,d))};e.NodeList=q.NodeList=n;return q})},"dojo/selector/_loader":function(){define(["../has",
-"require"],function(e,j){var i=document.createElement("div");e.add("dom-qsa2.1",!!i.querySelectorAll);e.add("dom-qsa3",function(){try{return i.innerHTML="<p class='TEST'></p>",1==i.querySelectorAll(".TEST:empty").length}catch(c){}});var l;return{load:function(c,g,h){var b=j,c="default"==c?e("config-selectorEngine")||"css3":c,c="css2"==c||"lite"==c?"./lite":"css2.1"==c?e("dom-qsa2.1")?"./lite":"./acme":"css3"==c?e("dom-qsa3")?"./lite":"./acme":"acme"==c?"./acme":(b=g)&&c;if("?"==c.charAt(c.length-
-1))var c=c.substring(0,c.length-1),f=!0;if(f&&(e("dom-compliant-qsa")||l))return h(l);b([c],function(a){"./lite"!=c&&(l=a);h(a)})}}})},"dojo/selector/acme":function(){define(["../dom","../sniff","../_base/array","../_base/lang","../_base/window"],function(e,j,i,l,c){var g=l.trim,h=i.forEach,b="BackCompat"==c.doc.compatMode,f=!1,a=function(){return!0},k=function(a){for(var a=0<=">~+".indexOf(a.slice(-1))?a+" * ":a+" ",b=function(b,d){return g(a.slice(b,d))},d=[],c=-1,e=-1,k=-1,m=-1,h=-1,l=-1,i=-1,
-j,n="",p="",o,q=0,u=a.length,r=null,t=null,v=function(){if(0<=l)r.id=b(l,q).replace(/\\/g,""),l=-1;if(0<=i){var a=i==q?null:b(i,q);r[0>">~+".indexOf(a)?"tag":"oper"]=a;i=-1}0<=h&&(r.classes.push(b(h+1,q).replace(/\\/g,"")),h=-1)};n=p,p=a.charAt(q),q<u;q++)if("\\"!=n)if(r||(o=q,r={query:null,pseudos:[],attrs:[],classes:[],tag:null,oper:null,id:null,getTag:function(){return f?this.otag:this.tag}},i=q),j)p==j&&(j=null);else if("'"==p||'"'==p)j=p;else if(0<=c)if("]"==p){t.attr?t.matchFor=b(k||c+1,q):
-t.attr=b(c+1,q);if((c=t.matchFor)&&('"'==c.charAt(0)||"'"==c.charAt(0)))t.matchFor=c.slice(1,-1);if(t.matchFor)t.matchFor=t.matchFor.replace(/\\/g,"");r.attrs.push(t);t=null;c=k=-1}else{if("="==p)k=0<="|~^$*".indexOf(n)?n:"",t.type=k+p,t.attr=b(c+1,q-k.length),k=q+1}else if(0<=e){if(")"==p){if(0<=m)t.value=b(e+1,q);m=e=-1}}else if("#"==p)v(),l=q+1;else if("."==p)v(),h=q;else if(":"==p)v(),m=q;else if("["==p)v(),c=q,t={};else if("("==p)0<=m&&(t={name:b(m+1,q),value:null},r.pseudos.push(t)),e=q;else if(" "==
-p&&n!=p){v();0<=m&&r.pseudos.push({name:b(m+1,q)});r.loops=r.pseudos.length||r.attrs.length||r.classes.length;r.oquery=r.query=b(o,q);r.otag=r.tag=r.oper?null:r.tag||"*";if(r.tag)r.tag=r.tag.toUpperCase();if(d.length&&d[d.length-1].oper)r.infixOper=d.pop(),r.query=r.infixOper.query+" "+r.query;d.push(r);r=null}return d},d=function(a,b){return!a?b:!b?a:function(){return a.apply(window,arguments)&&b.apply(window,arguments)}},p=function(a,b){var d=b||[];a&&d.push(a);return d},m=function(a){return 1==
-a.nodeType},n=function(a,b){return!a?"":"class"==b?a.className||"":"for"==b?a.htmlFor||"":"style"==b?a.style.cssText||"":(f?a.getAttribute(b):a.getAttribute(b,2))||""},o={"*=":function(a,b){return function(d){return 0<=n(d,a).indexOf(b)}},"^=":function(a,b){return function(d){return 0==n(d,a).indexOf(b)}},"$=":function(a,b){return function(d){var d=" "+n(d,a),c=d.lastIndexOf(b);return-1<c&&c==d.length-b.length}},"~=":function(a,b){var d=" "+b+" ";return function(b){return 0<=(" "+n(b,a)+" ").indexOf(d)}},
-"|=":function(a,b){var d=b+"-";return function(c){c=n(c,a);return c==b||0==c.indexOf(d)}},"=":function(a,b){return function(d){return n(d,a)==b}}},r="undefined"==typeof c.doc.firstChild.nextElementSibling,q=!r?"nextElementSibling":"nextSibling",v=!r?"previousElementSibling":"previousSibling",s=r?m:a,u=function(a){for(;a=a[v];)if(s(a))return!1;return!0},t=function(a){for(;a=a[q];)if(s(a))return!1;return!0},y=function(a){var b=a.parentNode,b=7!=b.nodeType?b:b.nextSibling,d=0,c=b.children||b.childNodes,
-f=a._i||a.getAttribute("_i")||-1,g=b._l||("undefined"!==typeof b.getAttribute?b.getAttribute("_l"):-1);if(!c)return-1;c=c.length;if(g==c&&0<=f&&0<=g)return f;j("ie")&&"undefined"!==typeof b.setAttribute?b.setAttribute("_l",c):b._l=c;f=-1;for(b=b.firstElementChild||b.firstChild;b;b=b[q])if(s(b))j("ie")?b.setAttribute("_i",++d):b._i=++d,a===b&&(f=d);return f},z=function(a){return!(y(a)%2)},I=function(a){return y(a)%2},J={checked:function(){return function(a){return!!("checked"in a?a.checked:a.selected)}},
-disabled:function(){return function(a){return a.disabled}},enabled:function(){return function(a){return!a.disabled}},"first-child":function(){return u},"last-child":function(){return t},"only-child":function(){return function(a){return u(a)&&t(a)}},empty:function(){return function(a){for(var b=a.childNodes,a=a.childNodes.length-1;0<=a;a--){var d=b[a].nodeType;if(1===d||3==d)return!1}return!0}},contains:function(a,b){var d=b.charAt(0);if('"'==d||"'"==d)b=b.slice(1,-1);return function(a){return 0<=
-a.innerHTML.indexOf(b)}},not:function(a,b){var d=k(b)[0],c={el:1};if("*"!=d.tag)c.tag=1;if(!d.classes.length)c.classes=1;var f=E(d,c);return function(a){return!f(a)}},"nth-child":function(a,b){var d=parseInt;if("odd"==b)return I;if("even"==b)return z;if(-1!=b.indexOf("n")){var c=b.split("n",2),f=c[0]?"-"==c[0]?-1:d(c[0]):1,g=c[1]?d(c[1]):0,e=0,k=-1;0<f?0>g?g=g%f&&f+g%f:0<g&&(g>=f&&(e=g-g%f),g%=f):0>f&&(f*=-1,0<g&&(k=g,g%=f));if(0<f)return function(a){a=y(a);return a>=e&&(0>k||a<=k)&&a%f==g};b=g}var m=
-d(b);return function(a){return y(a)==m}}},N=j("ie")&&(9>j("ie")||j("quirks"))?function(a){var b=a.toLowerCase();"class"==b&&(a="className");return function(d){return f?d.getAttribute(a):d[a]||d[b]}}:function(a){return function(b){return b&&b.getAttribute&&b.hasAttribute(a)}},E=function(b,c){if(!b)return a;var c=c||{},g=null;"el"in c||(g=d(g,m));"tag"in c||"*"!=b.tag&&(g=d(g,function(a){return a&&(f?a.tagName:a.tagName.toUpperCase())==b.getTag()}));"classes"in c||h(b.classes,function(a,b){var c=RegExp("(?:^|\\s)"+
-a+"(?:\\s|$)");g=d(g,function(a){return c.test(a.className)});g.count=b});"pseudos"in c||h(b.pseudos,function(a){var b=a.name;J[b]&&(g=d(g,J[b](b,a.value)))});"attrs"in c||h(b.attrs,function(a){var b,c=a.attr;a.type&&o[a.type]?b=o[a.type](c,a.matchFor):c.length&&(b=N(c));b&&(g=d(g,b))});"id"in c||b.id&&(g=d(g,function(a){return!!a&&a.id==b.id}));g||"default"in c||(g=a);return g},S=function(a){return function(b,d,c){for(;b=b[q];)if(!r||m(b)){(!c||P(b,c))&&a(b)&&d.push(b);break}return d}},Q=function(a){return function(b,
-d,c){for(b=b[q];b;){if(s(b)){if(c&&!P(b,c))break;a(b)&&d.push(b)}b=b[q]}return d}},B=function(b){b=b||a;return function(a,d,c){for(var f=0,g=a.children||a.childNodes;a=g[f++];)s(a)&&(!c||P(a,c))&&b(a,f)&&d.push(a);return d}},A={},w=function(d){var f=A[d.query];if(f)return f;var g=d.infixOper,g=g?g.oper:"",k=E(d,{el:1}),m="*"==d.tag,h=c.doc.getElementsByClassName;if(g){h={el:1};if(m)h.tag=1;k=E(d,h);"+"==g?f=S(k):"~"==g?f=Q(k):">"==g&&(f=B(k))}else if(d.id)k=!d.loops&&m?a:E(d,{el:1,id:1}),f=function(a,
-b){var c=e.byId(d.id,a.ownerDocument||a);if(c&&k(c)){if(9==a.nodeType)return p(c,b);for(var f=c.parentNode;f&&!(f==a);)f=f.parentNode;if(f)return p(c,b)}};else if(h&&/\{\s*\[native code\]\s*\}/.test(""+h)&&d.classes.length&&!b)var k=E(d,{el:1,classes:1,id:1}),l=d.classes.join(" "),f=function(a,b,d){for(var b=p(0,b),c,f=0,g=a.getElementsByClassName(l);c=g[f++];)k(c,a)&&P(c,d)&&b.push(c);return b};else!m&&!d.loops?f=function(a,b,c){for(var b=p(0,b),f=0,g=d.getTag(),g=g?a.getElementsByTagName(g):[];a=
-g[f++];)P(a,c)&&b.push(a);return b}:(k=E(d,{el:1,tag:1,id:1}),f=function(a,b,c){for(var b=p(0,b),f,g=0,e=(f=d.getTag())?a.getElementsByTagName(f):[];f=e[g++];)k(f,a)&&P(f,c)&&b.push(f);return b});return A[d.query]=f},x={},K={},H=function(a){var b=k(g(a));if(1==b.length){var d=w(b[0]);return function(a){if(a=d(a,[]))a.nozip=!0;return a}}return function(a){for(var a=p(a),d,c,f=b.length,g,e,k=0;k<f;k++){e=[];d=b[k];c=a.length-1;if(0<c)g={},e.nozip=!0;c=w(d);for(var m=0;d=a[m];m++)c(d,e,g);if(!e.length)break;
-a=e}return e}},C=j("ie")?"commentStrip":"nozip",F=!!c.doc.querySelectorAll,O=/\\[>~+]|n\+\d|([^ \\])?([>~+])([^ =])?/g,D=function(a,b,d,c){return d?(b?b+" ":"")+d+(c?" "+c:""):a},L=/([^[]*)([^\]]*])?/g,T=function(a,b,d){return b.replace(O,D)+(d||"")},G=function(a,d){a=a.replace(L,T);if(F){var c=K[a];if(c&&!d)return c}if(c=x[a])return c;var c=a.charAt(0),f=-1==a.indexOf(" ");0<=a.indexOf("#")&&f&&(d=!0);if(F&&!d&&-1==">~+".indexOf(c)&&(!j("ie")||-1==a.indexOf(":"))&&!(b&&0<=a.indexOf("."))&&-1==a.indexOf(":contains")&&
--1==a.indexOf(":checked")&&-1==a.indexOf("|=")){var g=0<=">~+".indexOf(a.charAt(a.length-1))?a+" *":a;return K[a]=function(b){try{if(!(9==b.nodeType||f))throw"";var d=b.querySelectorAll(g);d[C]=!0;return d}catch(c){return G(a,!0)(b)}}}var e=a.match(/([^\s,](?:"(?:\\.|[^"])+"|'(?:\\.|[^'])+'|[^,])*)/g);return x[a]=2>e.length?H(a):function(a){for(var b=0,d=[],c;c=e[b++];)d=d.concat(H(c)(a));return d}},M=0,X=j("ie")?function(a){return f?a.getAttribute("_uid")||a.setAttribute("_uid",++M)||M:a.uniqueID}:
-function(a){return a._uid||(a._uid=++M)},P=function(a,b){if(!b)return 1;var d=X(a);return!b[d]?b[d]=1:0},Y=function(a){if(a&&a.nozip)return a;var b=[];if(!a||!a.length)return b;a[0]&&b.push(a[0]);if(2>a.length)return b;M++;var d,c;if(j("ie")&&f){var g=M+"";a[0].setAttribute("_zipIdx",g);for(d=1;c=a[d];d++)a[d].getAttribute("_zipIdx")!=g&&b.push(c),c.setAttribute("_zipIdx",g)}else if(j("ie")&&a.commentStrip)try{for(d=1;c=a[d];d++)m(c)&&b.push(c)}catch(e){}else{a[0]&&(a[0]._zipIdx=M);for(d=1;c=a[d];d++)a[d]._zipIdx!=
-M&&b.push(c),c._zipIdx=M}return b},U=function(a,b){b=b||c.doc;f="div"===(b.ownerDocument||b).createElement("div").tagName;var d=G(a)(b);return d&&d.nozip?d:Y(d)};U.filter=function(a,b,d){for(var c=[],f=k(b),f=1==f.length&&!/[^\w#\.]/.test(b)?E(f[0]):function(a){return-1!=i.indexOf(U(b,e.byId(d)),a)},g=0,m;m=a[g];g++)f(m)&&c.push(m);return c};return U})},"dojo/NodeList-dom":function(){define("dojo/NodeList-dom","./_base/kernel,./query,./_base/array,./_base/lang,./dom-class,./dom-construct,./dom-geometry,./dom-attr,./dom-style".split(","),
-function(e,j,i,l,c,g,h,b,f){function a(a){return function(b,d,c){return 2==arguments.length?a["string"==typeof d?"get":"set"](b,d):a.set(b,d,c)}}var k=function(a){return 1==a.length&&"string"==typeof a[0]},d=function(a){var b=a.parentNode;b&&b.removeChild(a)},p=j.NodeList,m=p._adaptWithCondition,n=p._adaptAsForEach,o=p._adaptAsMap;l.extend(p,{_normalize:function(a,b){var d=!0===a.parse;if("string"==typeof a.template)var c=a.templateFunc||e.string&&e.string.substitute,a=c?c(a.template,a):a;c=typeof a;
-"string"==c||"number"==c?(a=g.toDom(a,b&&b.ownerDocument),a=11==a.nodeType?l._toArray(a.childNodes):[a]):l.isArrayLike(a)?l.isArray(a)||(a=l._toArray(a)):a=[a];if(d)a._runParse=!0;return a},_cloneNode:function(a){return a.cloneNode(!0)},_place:function(a,b,d,c){if(!(1!=b.nodeType&&"only"==d))for(var f,k=a.length,m=k-1;0<=m;m--){var h=c?this._cloneNode(a[m]):a[m];if(a._runParse&&e.parser&&e.parser.parse){f||(f=b.ownerDocument.createElement("div"));f.appendChild(h);e.parser.parse(f);for(h=f.firstChild;f.firstChild;)f.removeChild(f.firstChild)}m==
-k-1?g.place(h,b,d):b.parentNode.insertBefore(h,b);b=h}},position:o(h.position),attr:m(a(b),k),style:m(a(f),k),addClass:n(c.add),removeClass:n(c.remove),toggleClass:n(c.toggle),replaceClass:n(c.replace),empty:n(g.empty),removeAttr:n(b.remove),marginBox:o(h.getMarginBox),place:function(a,b){var d=j(a)[0];return this.forEach(function(a){g.place(a,d,b)})},orphan:function(a){return(a?j._filterResult(this,a):this).forEach(d)},adopt:function(a,b){return j(a).place(this[0],b)._stash(this)},query:function(a){if(!a)return this;
-var b=new p;this.map(function(d){j(a,d).forEach(function(a){void 0!==a&&b.push(a)})});return b._stash(this)},filter:function(a){var b=arguments,d=this,c=0;if("string"==typeof a){d=j._filterResult(this,b[0]);if(1==b.length)return d._stash(this);c=1}return this._wrap(i.filter(d,b[c],b[c+1]),this)},addContent:function(a,b){for(var a=this._normalize(a,this[0]),d=0,c;c=this[d];d++)this._place(a,c,b,0<d);return this}});return p})},"dojo/_base/fx":function(){define("./kernel,./config,./lang,../Evented,./Color,./connect,./sniff,../dom,../dom-style".split(","),
-function(e,j,i,l,c,g,h,b,f){var a=i.mixin,k={},d=k._Line=function(a,b){this.start=a;this.end=b};d.prototype.getValue=function(a){return(this.end-this.start)*a+this.start};var p=k.Animation=function(b){a(this,b);if(i.isArray(this.curve))this.curve=new d(this.curve[0],this.curve[1])};p.prototype=new l;i.extend(p,{duration:350,repeat:0,rate:20,_percent:0,_startRepeatCount:0,_getStep:function(){var a=this._percent,b=this.easing;return b?b(a):a},_fire:function(a,b){var d=b||[];if(this[a])if(j.debugAtAllCosts)this[a].apply(this,
-d);else try{this[a].apply(this,d)}catch(c){}return this},play:function(a,b){this._delayTimer&&this._clearTimer();if(b)this._stopTimer(),this._active=this._paused=!1,this._percent=0;else if(this._active&&!this._paused)return this;this._fire("beforeBegin",[this.node]);var d=a||this.delay,c=i.hitch(this,"_play",b);if(0<d)return this._delayTimer=setTimeout(c,d),this;c();return this},_play:function(){this._delayTimer&&this._clearTimer();this._startTime=(new Date).valueOf();this._paused&&(this._startTime-=
+a};o.prototype.remove=function(){delete _dojoIEListeners_[this.handle]};var r=function(a){return function(d){var d=b._fixEvent(d,this),g=a.call(this,d);d.modified&&(n||setTimeout(function(){n=null}),n=d);return g}},q=function(a,b,d){d=r(d);if(((a.ownerDocument?a.ownerDocument.parentWindow:a.parentWindow||a.window||window)!=top||5.8>h("jscript"))&&!h("config-_allow_leaks")){"undefined"==typeof _dojoIEListeners_&&(_dojoIEListeners_=[]);var g=a[b];if(!g||!g.listeners){var c=g,g=Function("event","var callee = arguments.callee; for(var i = 0; i<callee.listeners.length; i++){var listener = _dojoIEListeners_[callee.listeners[i]]; if(listener){listener.call(this,event);}}");
+g.listeners=[];a[b]=g;g.global=this;c&&g.listeners.push(_dojoIEListeners_.push(c)-1)}g.listeners.push(a=g.global._dojoIEListeners_.push(d)-1);return new o(a)}return f.after(a,b,d,!0)},v=function(){this.cancelBubble=!0},s=b._preventDefault=function(){this.bubbledKeyCode=this.keyCode;if(this.ctrlKey)try{this.keyCode=0}catch(a){}this.defaultPrevented=!0;this.returnValue=!1}}if(h("touch"))var t=function(){},u=window.orientation,y=function(a){return function(b){var d=b.corrected;if(!d){var g=b.type;try{delete b.type}catch(c){}b.type?
+(t.prototype=b,d=new t,d.preventDefault=function(){b.preventDefault()},d.stopPropagation=function(){b.stopPropagation()}):(d=b,d.type=g);b.corrected=d;if("resize"==g){if(u==window.orientation)return null;u=window.orientation;d.type="orientationchange";return a.call(this,d)}if(!("rotation"in d))d.rotation=0,d.scale=1;var g=d.changedTouches[0],e;for(e in g)delete d[e],d[e]=g[e]}return a.call(this,d)}};return b})},"dojo/when":function(){define(["./Deferred","./promise/Promise"],function(f,k){return function(h,
+j,e,c){var i=h&&"function"===typeof h.then,b=i&&h instanceof k;if(i){if(!b)i=new f(h.cancel),h.then(i.resolve,i.reject,i.progress),h=i.promise}else return j?j(h):(new f).resolve(h);return j||e||c?h.then(j,e,c):h}})},"dojo/_base/json":function(){define(["./kernel","../json"],function(f,k){f.fromJson=function(f){return eval("("+f+")")};f._escapeString=k.stringify;f.toJsonIndentStr="\t";f.toJson=function(h,j){return k.stringify(h,function(e,c){if(c){var f=c.__json__||c.json;if("function"==typeof f)return f.call(c)}return c},
+j&&f.toJsonIndentStr)};return f})},"dojo/request/watch":function(){define("./util,../errors/RequestTimeoutError,../errors/CancelError,../_base/array,../_base/window,../has!host-browser?dom-addeventlistener?:../on:".split(","),function(f,k,h,j,e,c){function i(){for(var c=+new Date,d=0,e;d<a.length&&(e=a[d]);d++){var f=e.response,i=f.options;if(e.isCanceled&&e.isCanceled()||e.isValid&&!e.isValid(f))a.splice(d--,1),b._onAction&&b._onAction();else if(e.isReady&&e.isReady(f))a.splice(d--,1),e.handleResponse(f),
+b._onAction&&b._onAction();else if(e.startTime&&e.startTime+(i.timeout||0)<c)a.splice(d--,1),e.cancel(new k("Timeout exceeded",f)),b._onAction&&b._onAction()}b._onInFlight&&b._onInFlight(e);a.length||(clearInterval(g),g=null)}function b(b){if(b.response.options.timeout)b.startTime=+new Date;b.isFulfilled()||(a.push(b),g||(g=setInterval(i,50)),b.response.options.sync&&i())}var g=null,a=[];b.cancelAll=function(){try{j.forEach(a,function(a){try{a.cancel(new h("All requests canceled."))}catch(b){}})}catch(b){}};
+e&&c&&e.doc.attachEvent&&c(e.global,"unload",function(){b.cancelAll()});return b})},"dojo/request/util":function(){define("exports,../errors/RequestError,../errors/CancelError,../Deferred,../io-query,../_base/array,../_base/lang".split(","),function(f,k,h,j,e,c,i){function b(a){return g(a)}f.deepCopy=function(a,b){for(var d in b){var g=a[d],c=b[d];g!==c&&(g&&"object"===typeof g&&c&&"object"===typeof c?f.deepCopy(g,c):a[d]=c)}return a};f.deepCreate=function(a,b){var b=b||{},d=i.delegate(a),g,c;for(g in a)(c=
+a[g])&&"object"===typeof c&&(d[g]=f.deepCreate(c,b[g]));return f.deepCopy(d,b)};var g=Object.freeze||function(a){return a};f.deferred=function(a,c,d,e,m,n){var o=new j(function(b){c&&c(o,a);return!b||!(b instanceof k)&&!(b instanceof h)?new h("Request canceled",a):b});o.response=a;o.isValid=d;o.isReady=e;o.handleResponse=m;d=o.then(b).otherwise(function(b){b.response=a;throw b;});f.notify&&d.then(i.hitch(f.notify,"emit","load"),i.hitch(f.notify,"emit","error"));e=d.then(function(a){return a.data||
+a.text});d=g(i.delegate(e,{response:d}));n&&o.then(function(a){n.call(o,a)},function(b){n.call(o,a,b)});o.promise=d;o.then=d.then;return o};f.addCommonMethods=function(a,b){c.forEach(b||["GET","POST","PUT","DELETE"],function(b){a[("DELETE"===b?"DEL":b).toLowerCase()]=function(g,c){c=i.delegate(c||{});c.method=b;return a(g,c)}})};f.parseArgs=function(a,b,d){var g=b.data,c=b.query;if(g&&!d&&"object"===typeof g)b.data=e.objectToQuery(g);c?("object"===typeof c&&(c=e.objectToQuery(c)),b.preventCache&&
+(c+=(c?"&":"")+"request.preventCache="+ +new Date)):b.preventCache&&(c="request.preventCache="+ +new Date);a&&c&&(a+=(~a.indexOf("?")?"&":"?")+c);return{url:a,options:b,getHeader:function(){return null}}};f.checkStatus=function(a){a=a||0;return 200<=a&&300>a||304===a||1223===a||!a}})},"dojo/errors/RequestError":function(){define(["./create"],function(f){return f("RequestError",function(f,h){this.response=h})})},"dojo/errors/RequestTimeoutError":function(){define(["./create","./RequestError"],function(f,
+k){return f("RequestTimeoutError",null,k,{dojoType:"timeout"})})},"dojo/request/xhr":function(){define(["../errors/RequestError","./watch","./handlers","./util","../has"],function(f,k,h,j,e){function c(a,b){var d=a.xhr;a.status=a.xhr.status;a.text=d.responseText;if("xml"===a.options.handleAs)a.data=d.responseXML;if(!b)try{h(a)}catch(g){b=g}b?this.reject(b):j.checkStatus(d.status)?this.resolve(a):(b=new f("Unable to load "+a.url+" status: "+d.status,a),this.reject(b))}function i(m,h,n){var v=j.parseArgs(m,
+j.deepCreate(p,h),e("native-formdata")&&h&&h.data&&h.data instanceof FormData),m=v.url,h=v.options,s,t=j.deferred(v,l,b,g,c,function(){s&&s()}),u=v.xhr=i._create();if(!u)return t.cancel(new f("XHR was not created")),n?t:t.promise;v.getHeader=function(a){return this.xhr.getResponseHeader(a)};a&&(s=a(u,t,v));var y=h.data,z=!h.sync,I=h.method;try{u.open(I,m,z,h.user||d,h.password||d);if(h.withCredentials)u.withCredentials=h.withCredentials;var J=h.headers,N;if(J)for(var E in J)"content-type"===E.toLowerCase()?
+N=J[E]:J[E]&&u.setRequestHeader(E,J[E]);N&&!1!==N&&u.setRequestHeader("Content-Type",N);(!J||!("X-Requested-With"in J))&&u.setRequestHeader("X-Requested-With","XMLHttpRequest");j.notify&&j.notify.emit("send",v,t.promise.cancel);u.send(y)}catch(S){t.reject(S)}k(t);u=null;return n?t:t.promise}e.add("native-xhr",function(){return"undefined"!==typeof XMLHttpRequest});e.add("dojo-force-activex-xhr",function(){return e("activex")&&!document.addEventListener&&"file:"===window.location.protocol});e.add("native-xhr2",
+function(){if(e("native-xhr")){var a=new XMLHttpRequest;return"undefined"!==typeof a.addEventListener&&("undefined"===typeof opera||"undefined"!==typeof a.upload)}});e.add("native-formdata",function(){return"function"===typeof FormData});var b,g,a,l;e("native-xhr2")?(b=function(){return!this.isFulfilled()},l=function(a,b){b.xhr.abort()},a=function(a,b,d){function g(){b.handleResponse(d)}function c(a){a=new f("Unable to load "+d.url+" status: "+a.target.status,d);b.handleResponse(d,a)}function e(a){if(a.lengthComputable)d.loaded=
+a.loaded,d.total=a.total,b.progress(d)}a.addEventListener("load",g,!1);a.addEventListener("error",c,!1);a.addEventListener("progress",e,!1);return function(){a.removeEventListener("load",g,!1);a.removeEventListener("error",c,!1);a.removeEventListener("progress",e,!1)}}):(b=function(a){return a.xhr.readyState},g=function(a){return 4===a.xhr.readyState},l=function(a,b){var d=b.xhr,g=typeof d.abort;("function"===g||"object"===g||"unknown"===g)&&d.abort()});var d,p={data:null,query:null,sync:!1,method:"GET",
+headers:{"Content-Type":"application/x-www-form-urlencoded"}};i._create=function(){throw Error("XMLHTTP not available");};if(e("native-xhr")&&!e("dojo-force-activex-xhr"))i._create=function(){return new XMLHttpRequest};else if(e("activex"))try{new ActiveXObject("Msxml2.XMLHTTP"),i._create=function(){return new ActiveXObject("Msxml2.XMLHTTP")}}catch(m){try{new ActiveXObject("Microsoft.XMLHTTP"),i._create=function(){return new ActiveXObject("Microsoft.XMLHTTP")}}catch(n){}}j.addCommonMethods(i);return i})},
+"dojo/request/handlers":function(){define(["../json","../_base/kernel","../_base/array","../has"],function(f,k,h,j){function e(g){var a=b[g.options.handleAs];g.data=a?a(g):g.data||g.text;return g}j.add("activex","undefined"!==typeof ActiveXObject);var c;if(j("activex")){var i=["Msxml2.DOMDocument.6.0","Msxml2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML.DOMDocument"];c=function(b){var a=b.data;if(!a||!a.documentElement){var c=b.text;h.some(i,function(b){try{var g=new ActiveXObject(b);g.async=
+!1;g.loadXML(c);a=g}catch(e){return!1}return!0})}return a}}var b={javascript:function(b){return k.eval(b.text||"")},json:function(b){return f.parse(b.text||null)},xml:c};e.register=function(g,a){b[g]=a};return e})},"dojo/main":function(){define("./_base/kernel,./has,require,./sniff,./_base/lang,./_base/array,./_base/config,./ready,./_base/declare,./_base/connect,./_base/Deferred,./_base/json,./_base/Color,./has!dojo-firebug?./_firebug/firebug,./_base/browser,require".split(","),function(f,k,h,j,e,
+c,i,b){i.isDebug&&h(["./_firebug/firebug"]);var g=i.require;g&&(g=c.map(e.isArray(g)?g:[g],function(a){return a.replace(/\./g,"/")}),f.isAsync?h(g):b(1,function(){h(g)}));return f})},"dojo/ready":function(){define(["./_base/kernel","./has","require","./domReady","./_base/lang"],function(f,k,h,j,e){var c=0,i,b=[],g=0,a=function(){if(c&&!g&&b.length){g=1;var d=b.shift();try{d()}finally{g=0}g=0;b.length&&i(a)}};h.on("idle",a);i=function(){h.idle()&&a()};var k=f.ready=f.addOnLoad=function(a,g,c){var l=
+e._toArray(arguments);"number"!=typeof a?(c=g,g=a,a=1E3):l.shift();c=c?e.hitch.apply(f,l):function(){g()};c.priority=a;for(l=0;l<b.length&&a>=b[l].priority;l++);b.splice(l,0,c);i()},l=f.config.addOnLoad;if(l)k[e.isArray(l)?"apply":"call"](f,l);j(function(){c=1;f._postLoad=f.config.afterOnLoad=!0;b.length&&i(a)});return k})},"dojo/domReady":function(){define(["./has"],function(f){function k(a){i?a(j):b.push(a)}var h=this,j=document,e={loaded:1,complete:1},c="string"!=typeof j.readyState,i=!!e[j.readyState];
+if(c)j.readyState="loading";if(!i){var b=[],g=[],a=function(a){a=a||h.event;if(!(i||"readystatechange"==a.type&&!e[j.readyState])){i=1;if(c)j.readyState="complete";for(;b.length;)b.shift()(j)}},l=function(d,g){d.addEventListener(g,a,!1);b.push(function(){d.removeEventListener(g,a,!1)})};if(!f("dom-addeventlistener")){var l=function(d,g){g="on"+g;d.attachEvent(g,a);b.push(function(){d.detachEvent(g,a)})},d=j.createElement("div");try{d.doScroll&&null===h.frameElement&&g.push(function(){try{return d.doScroll("left"),
+1}catch(a){}})}catch(p){}}l(j,"DOMContentLoaded");l(h,"load");"onreadystatechange"in j?l(j,"readystatechange"):c||g.push(function(){return e[j.readyState]});if(g.length){var m=function(){if(!i){for(var b=g.length;b--;)if(g[b]()){a("poller");return}setTimeout(m,30)}};m()}}k.load=function(a,b,d){k(d)};return k})},"dojo/_base/declare":function(){define(["./kernel","../has","./lang"],function(f,k,h){function j(a,b){throw Error("declare"+(b?" "+b:"")+": "+a);}function e(a,b,d){var g,c,e,l,f,m,i,h=this._inherited=
+this._inherited||{};"string"==typeof a&&(g=a,a=b,b=d);d=0;l=a.callee;(g=g||l.nom)||j("can't deduce a name to call inherited()",this.declaredClass);f=this.constructor._meta;e=f.bases;i=h.p;if(g!=z){if(h.c!==l&&(i=0,m=e[0],f=m._meta,f.hidden[g]!==l)){(c=f.chains)&&"string"==typeof c[g]&&j("calling chained method with inherited: "+g,this.declaredClass);do if(f=m._meta,c=m.prototype,f&&(c[g]===l&&c.hasOwnProperty(g)||f.hidden[g]===l))break;while(m=e[++i]);i=m?i:-1}if(m=e[++i])if(c=m.prototype,m._meta&&
+c.hasOwnProperty(g))d=c[g];else{l=s[g];do if(c=m.prototype,(d=c[g])&&(m._meta?c.hasOwnProperty(g):d!==l))break;while(m=e[++i])}d=m&&d||s[g]}else{if(h.c!==l&&(i=0,(f=e[0]._meta)&&f.ctor!==l)){c=f.chains;for((!c||"manual"!==c.constructor)&&j("calling chained constructor with inherited",this.declaredClass);(m=e[++i])&&!((f=m._meta)&&f.ctor===l););i=m?i:-1}for(;(m=e[++i])&&!(d=(f=m._meta)?f.ctor:m););d=m&&d}h.c=d;h.p=i;if(d)return!0===b?d:d.apply(this,b||a)}function c(a,b){return"string"==typeof a?this.__inherited(a,
+b,!0):this.__inherited(a,!0)}function i(a,b,d){var g=this.getInherited(a,b);if(g)return g.apply(this,d||b||a)}function b(a){for(var b=this.constructor._meta.bases,d=0,g=b.length;d<g;++d)if(b[d]===a)return!0;return this instanceof a}function g(a,b){for(var d in b)d!=z&&b.hasOwnProperty(d)&&(a[d]=b[d]);if(k("bug-for-in-skips-shadowed"))for(var g=h._extraNames,c=g.length;c;)d=g[--c],d!=z&&b.hasOwnProperty(d)&&(a[d]=b[d])}function a(a){q.safeMixin(this.prototype,a);return this}function l(a){return q([this].concat(a))}
+function d(a,b){return function(){var w;var d=arguments,g=d,c=d[0],e,l;l=a.length;var f;if(!(this instanceof d.callee))return r(d);if(b&&(c&&c.preamble||this.preamble)){f=Array(a.length);f[0]=d;for(e=0;;){if(c=d[0])(c=c.preamble)&&(d=c.apply(this,d)||d);c=a[e].prototype;(c=c.hasOwnProperty("preamble")&&c.preamble)&&(d=c.apply(this,d)||d);if(++e==l)break;f[e]=d}}for(e=l-1;0<=e;--e)c=a[e],(w=(l=c._meta)?l.ctor:c,c=w)&&c.apply(this,f?f[e]:d);(c=this.postscript)&&c.apply(this,g)}}function p(a,b){return function(){var d=
+arguments,g=d,c=d[0];if(!(this instanceof d.callee))return r(d);if(b){if(c)(c=c.preamble)&&(g=c.apply(this,g)||g);(c=this.preamble)&&c.apply(this,g)}a&&a.apply(this,d);(c=this.postscript)&&c.apply(this,d)}}function m(a){return function(){var w;var b=arguments,d=0,g,c;if(!(this instanceof b.callee))return r(b);for(;g=a[d];++d)if(w=(c=g._meta)?c.ctor:g,g=w){g.apply(this,b);break}(g=this.postscript)&&g.apply(this,b)}}function n(a,b,d){return function(){var g,c,e=0,l=1;d&&(e=b.length-1,l=-1);for(;g=b[e];e+=
+l)c=g._meta,(g=(c?c.hidden:g.prototype)[a])&&g.apply(this,arguments)}}function o(a){u.prototype=a.prototype;a=new u;u.prototype=null;return a}function r(a){var b=a.callee,d=o(b);b.apply(d,a);return d}function q(f,i,k){"string"!=typeof f&&(k=i,i=f,f="");var k=k||{},r,u,B,A,w,x,K,H=1,C=i;if("[object Array]"==t.call(i)){H=f;B=[];A=[{cls:0,refs:[]}];x={};for(var F=1,O=i.length,D=0,L,T,G,M;D<O;++D){(L=i[D])?"[object Function]"!=t.call(L)&&j("mixin #"+D+" is not a callable constructor.",H):j("mixin #"+
+D+" is unknown. Did you use dojo.require to pull it in?",H);T=L._meta?L._meta.bases:[L];G=0;for(L=T.length-1;0<=L;--L){M=T[L].prototype;if(!M.hasOwnProperty("declaredClass"))M.declaredClass="uniqName_"+y++;M=M.declaredClass;x.hasOwnProperty(M)||(x[M]={count:0,refs:[],cls:T[L]},++F);M=x[M];G&&G!==M&&(M.refs.push(G),++G.count);G=M}++G.count;A[0].refs.push(G)}for(;A.length;){G=A.pop();B.push(G.cls);for(--F;u=G.refs,1==u.length;){G=u[0];if(!G||--G.count){G=0;break}B.push(G.cls);--F}if(G)for(D=0,O=u.length;D<
+O;++D)G=u[D],--G.count||A.push(G)}F&&j("can't build consistent linearization",H);L=i[0];B[0]=L?L._meta&&L===B[B.length-L._meta.bases.length]?L._meta.bases.length:1:0;x=B;B=x[0];H=x.length-B;i=x[H]}else x=[0],i?"[object Function]"==t.call(i)?(B=i._meta,x=x.concat(B?B.bases:i)):j("base class is not a callable constructor.",f):null!==i&&j("unknown base class. Did you use dojo.require to pull it in?",f);if(i)for(u=H-1;;--u){r=o(i);if(!u)break;B=x[u];(B._meta?g:v)(r,B.prototype);A=new Function;A.superclass=
+i;A.prototype=r;i=r.constructor=A}else r={};q.safeMixin(r,k);B=k.constructor;if(B!==s.constructor)B.nom=z,r.constructor=B;for(u=H-1;u;--u)(B=x[u]._meta)&&B.chains&&(K=v(K||{},B.chains));r["-chains-"]&&(K=v(K||{},r["-chains-"]));B=!K||!K.hasOwnProperty(z);x[0]=A=K&&"manual"===K.constructor?m(x):1==x.length?p(k.constructor,B):d(x,B);A._meta={bases:x,hidden:k,chains:K,parents:C,ctor:k.constructor};A.superclass=i&&i.prototype;A.extend=a;A.createSubclass=l;A.prototype=r;r.constructor=A;r.getInherited=
+c;r.isInstanceOf=b;r.inherited=I;r.__inherited=e;if(f)r.declaredClass=f,h.setObject(f,A);if(K)for(w in K)if(r[w]&&"string"==typeof K[w]&&w!=z)B=r[w]=n(w,x,"after"===K[w]),B.nom=w;return A}var v=h.mixin,s=Object.prototype,t=s.toString,u=new Function,y=0,z="constructor",I=f.config.isDebug?i:e;f.safeMixin=q.safeMixin=function(a,b){var d,g;for(d in b)if(g=b[d],(g!==s[d]||!(d in s))&&d!=z){if("[object Function]"==t.call(g))g.nom=d;a[d]=g}if(k("bug-for-in-skips-shadowed"))for(var c=h._extraNames,e=c.length;e;)if(d=
+c[--e],g=b[d],(g!==s[d]||!(d in s))&&d!=z){if("[object Function]"==t.call(g))g.nom=d;a[d]=g}return a};return f.declare=q})},"dojo/_base/connect":function(){define("./kernel,../on,../topic,../aspect,./event,../mouse,./sniff,./lang,../keys".split(","),function(f,k,h,j,e,c,i,b){function g(a,d,g,e,l){e=b.hitch(g,e);if(!a||!a.addEventListener&&!a.attachEvent)return j.after(a||f.global,d,e,!0);"string"==typeof d&&"on"==d.substring(0,2)&&(d=d.substring(2));if(!a)a=f.global;if(!l)switch(d){case "keypress":d=
+m;break;case "mouseenter":d=c.enter;break;case "mouseleave":d=c.leave}return k(a,d,e,l)}function a(a){a.keyChar=a.charCode?String.fromCharCode(a.charCode):"";a.charOrCode=a.keyChar||a.keyCode}i.add("events-keypress-typed",function(){var a={charCode:0};try{a=document.createEvent("KeyboardEvent"),(a.initKeyboardEvent||a.initKeyEvent).call(a,"keypress",!0,!0,null,!1,!1,!1,!1,9,3)}catch(b){}return 0==a.charCode&&!i("opera")});var l={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,229:113},d=i("mac")?"metaKey":"ctrlKey",p=function(d,g){var c=b.mixin({},d,g);a(c);c.preventDefault=function(){d.preventDefault()};c.stopPropagation=function(){d.stopPropagation()};return c},m;m=i("events-keypress-typed")?function(a,b){var d=k(a,"keydown",function(a){var d=a.keyCode,g=13!=d&&32!=d&&(27!=d||!i("ie"))&&(48>d||90<d)&&(96>d||111<d)&&(186>d||192<d)&&(219>d||222<d)&&229!=d;if(g||a.ctrlKey){g=g?0:d;if(a.ctrlKey){if(3==d||13==d)return b.call(a.currentTarget,a);g=95<g&&
+106>g?g-48:!a.shiftKey&&65<=g&&90>=g?g+32:l[g]||g}d=p(a,{type:"keypress",faux:!0,charCode:g});b.call(a.currentTarget,d);if(i("ie"))try{a.keyCode=d.keyCode}catch(c){}}}),g=k(a,"keypress",function(a){var d=a.charCode,a=p(a,{charCode:32<=d?d:0,faux:!0});return b.call(this,a)});return{remove:function(){d.remove();g.remove()}}}:i("opera")?function(a,b){return k(a,"keypress",function(a){var d=a.which;3==d&&(d=99);d=32>d&&!a.shiftKey?0:d;a.ctrlKey&&!a.shiftKey&&65<=d&&90>=d&&(d+=32);return b.call(this,p(a,
+{charCode:d}))})}:function(b,d){return k(b,"keypress",function(b){a(b);return d.call(this,b)})};var n={_keypress:m,connect:function(a,b,d,c,e){var l=arguments,f=[],i=0;f.push("string"==typeof l[0]?null:l[i++],l[i++]);var m=l[i+1];f.push("string"==typeof m||"function"==typeof m?l[i++]:null,l[i++]);for(m=l.length;i<m;i++)f.push(l[i]);return g.apply(this,f)},disconnect:function(a){a&&a.remove()},subscribe:function(a,d,g){return h.subscribe(a,b.hitch(d,g))},publish:function(a,b){return h.publish.apply(h,
+[a].concat(b))},connectPublisher:function(a,b,d){var g=function(){n.publish(a,arguments)};return d?n.connect(b,d,g):n.connect(b,g)},isCopyKey:function(a){return a[d]}};n.unsubscribe=n.disconnect;b.mixin(f,n);return n})},"dojo/topic":function(){define(["./Evented"],function(f){var k=new f;return{publish:function(f,j){return k.emit.apply(k,arguments)},subscribe:function(f,j){return k.on.apply(k,arguments)}}})},"dojo/_base/event":function(){define(["./kernel","../on","../has","../dom-geometry"],function(f,
+k,h,j){if(k._fixEvent){var e=k._fixEvent;k._fixEvent=function(c,b){(c=e(c,b))&&j.normalizeEvent(c);return c}}var c={fix:function(c,b){return k._fixEvent?k._fixEvent(c,b):c},stop:function(c){h("dom-addeventlistener")||c&&c.preventDefault?(c.preventDefault(),c.stopPropagation()):(c=c||window.event,c.cancelBubble=!0,k._preventDefault.call(c))}};f.fixEvent=c.fix;f.stopEvent=c.stop;return c})},"dojo/dom-geometry":function(){define(["./sniff","./_base/window","./dom","./dom-style"],function(f,k,h,j){function e(a,
+b,d,g,c,e){e=e||"px";a=a.style;if(!isNaN(b))a.left=b+e;if(!isNaN(d))a.top=d+e;if(0<=g)a.width=g+e;if(0<=c)a.height=c+e}function c(a){return"button"==a.tagName.toLowerCase()||"input"==a.tagName.toLowerCase()&&"button"==(a.getAttribute("type")||"").toLowerCase()}function i(a){return"border-box"==b.boxModel||"table"==a.tagName.toLowerCase()||c(a)}var b={boxModel:"content-box"};if(f("ie"))b.boxModel="BackCompat"==document.compatMode?"border-box":"content-box";b.getPadExtents=function(a,b){var a=h.byId(a),
+d=b||j.getComputedStyle(a),g=j.toPixelValue,c=g(a,d.paddingLeft),e=g(a,d.paddingTop),f=g(a,d.paddingRight),d=g(a,d.paddingBottom);return{l:c,t:e,r:f,b:d,w:c+f,h:e+d}};b.getBorderExtents=function(a,b){var a=h.byId(a),d=j.toPixelValue,g=b||j.getComputedStyle(a),c="none"!=g.borderLeftStyle?d(a,g.borderLeftWidth):0,e="none"!=g.borderTopStyle?d(a,g.borderTopWidth):0,f="none"!=g.borderRightStyle?d(a,g.borderRightWidth):0,d="none"!=g.borderBottomStyle?d(a,g.borderBottomWidth):0;return{l:c,t:e,r:f,b:d,w:c+
+f,h:e+d}};b.getPadBorderExtents=function(a,g){var a=h.byId(a),d=g||j.getComputedStyle(a),c=b.getPadExtents(a,d),d=b.getBorderExtents(a,d);return{l:c.l+d.l,t:c.t+d.t,r:c.r+d.r,b:c.b+d.b,w:c.w+d.w,h:c.h+d.h}};b.getMarginExtents=function(a,b){var a=h.byId(a),d=b||j.getComputedStyle(a),g=j.toPixelValue,c=g(a,d.marginLeft),e=g(a,d.marginTop),f=g(a,d.marginRight),d=g(a,d.marginBottom);return{l:c,t:e,r:f,b:d,w:c+f,h:e+d}};b.getMarginBox=function(a,g){var a=h.byId(a),d=g||j.getComputedStyle(a),c=b.getMarginExtents(a,
+d),e=a.offsetLeft-c.l,i=a.offsetTop-c.t,o=a.parentNode,k=j.toPixelValue;if(f("mozilla")){var q=parseFloat(d.left),d=parseFloat(d.top);!isNaN(q)&&!isNaN(d)?(e=q,i=d):o&&o.style&&(o=j.getComputedStyle(o),"visible"!=o.overflow&&(e+="none"!=o.borderLeftStyle?k(a,o.borderLeftWidth):0,i+="none"!=o.borderTopStyle?k(a,o.borderTopWidth):0))}else if((f("opera")||8==f("ie")&&!f("quirks"))&&o)o=j.getComputedStyle(o),e-="none"!=o.borderLeftStyle?k(a,o.borderLeftWidth):0,i-="none"!=o.borderTopStyle?k(a,o.borderTopWidth):
+0;return{l:e,t:i,w:a.offsetWidth+c.w,h:a.offsetHeight+c.h}};b.getContentBox=function(a,g){var a=h.byId(a),d=g||j.getComputedStyle(a),c=a.clientWidth,e=b.getPadExtents(a,d),i=b.getBorderExtents(a,d);c?(d=a.clientHeight,i.w=i.h=0):(c=a.offsetWidth,d=a.offsetHeight);f("opera")&&(e.l+=i.l,e.t+=i.t);return{l:e.l,t:e.t,w:c-e.w-i.w,h:d-e.h-i.h}};b.setContentSize=function(a,g,d){var a=h.byId(a),c=g.w,g=g.h;i(a)&&(d=b.getPadBorderExtents(a,d),0<=c&&(c+=d.w),0<=g&&(g+=d.h));e(a,NaN,NaN,c,g)};var g={l:0,t:0,
+w:0,h:0};b.setMarginBox=function(a,l,d){var a=h.byId(a),p=d||j.getComputedStyle(a),d=l.w,m=l.h,n=i(a)?g:b.getPadBorderExtents(a,p),p=b.getMarginExtents(a,p);if(f("webkit")&&c(a)){var k=a.style;if(0<=d&&!k.width)k.width="4px";if(0<=m&&!k.height)k.height="4px"}0<=d&&(d=Math.max(d-n.w-p.w,0));0<=m&&(m=Math.max(m-n.h-p.h,0));e(a,l.l,l.t,d,m)};b.isBodyLtr=function(a){a=a||k.doc;return"ltr"==(k.body(a).dir||a.documentElement.dir||"ltr").toLowerCase()};b.docScroll=function(a){var a=a||k.doc,g=k.doc.parentWindow||
+k.doc.defaultView;return"pageXOffset"in g?{x:g.pageXOffset,y:g.pageYOffset}:(g=f("quirks")?k.body(a):a.documentElement)&&{x:b.fixIeBiDiScrollLeft(g.scrollLeft||0,a),y:g.scrollTop||0}};if(f("ie"))b.getIeDocumentElementOffset=function(a){a=a||k.doc;a=a.documentElement;if(8>f("ie")){var b=a.getBoundingClientRect(),d=b.left,b=b.top;7>f("ie")&&(d+=a.clientLeft,b+=a.clientTop);return{x:0>d?0:d,y:0>b?0:b}}return{x:0,y:0}};b.fixIeBiDiScrollLeft=function(a,g){var g=g||k.doc,d=f("ie");if(d&&!b.isBodyLtr(g)){var c=
+f("quirks"),e=c?k.body(g):g.documentElement,i=k.global;6==d&&!c&&i.frameElement&&e.scrollHeight>e.clientHeight&&(a+=e.clientLeft);return 8>d||c?a+e.clientWidth-e.scrollWidth:-a}return a};b.position=function(a,g){var a=h.byId(a),d=k.body(a.ownerDocument),c=a.getBoundingClientRect(),c={x:c.left,y:c.top,w:c.right-c.left,h:c.bottom-c.top};if(f("ie")){var e=b.getIeDocumentElementOffset(a.ownerDocument);c.x-=e.x+(f("quirks")?d.clientLeft+d.offsetLeft:0);c.y-=e.y+(f("quirks")?d.clientTop+d.offsetTop:0)}g&&
+(d=b.docScroll(a.ownerDocument),c.x+=d.x,c.y+=d.y);return c};b.getMarginSize=function(a,g){var a=h.byId(a),d=b.getMarginExtents(a,g||j.getComputedStyle(a)),c=a.getBoundingClientRect();return{w:c.right-c.left+d.w,h:c.bottom-c.top+d.h}};b.normalizeEvent=function(a){if(!("layerX"in a))a.layerX=a.offsetX,a.layerY=a.offsetY;if(!f("dom-addeventlistener")){var g=a.target,g=g&&g.ownerDocument||document,d=f("quirks")?g.body:g.documentElement,c=b.getIeDocumentElementOffset(g);a.pageX=a.clientX+b.fixIeBiDiScrollLeft(d.scrollLeft||
+0,g)-c.x;a.pageY=a.clientY+(d.scrollTop||0)-c.y}};return b})},"dojo/dom-style":function(){define(["./sniff","./dom"],function(f,k){function h(b,d,g){d=d.toLowerCase();if(f("ie")){if("auto"==g){if("height"==d)return b.offsetHeight;if("width"==d)return b.offsetWidth}if("fontweight"==d)switch(g){case 700:return"bold";default:return"normal"}}d in a||(a[d]=l.test(d));return a[d]?c(b,g):g}var j,e={};j=f("webkit")?function(a){var b;if(1==a.nodeType){var d=a.ownerDocument.defaultView;b=d.getComputedStyle(a,
+null);if(!b&&a.style)a.style.display="",b=d.getComputedStyle(a,null)}return b||{}}:f("ie")&&(9>f("ie")||f("quirks"))?function(a){return 1==a.nodeType&&a.currentStyle?a.currentStyle:{}}:function(a){return 1==a.nodeType?a.ownerDocument.defaultView.getComputedStyle(a,null):{}};e.getComputedStyle=j;var c;c=f("ie")?function(a,b){if(!b)return 0;if("medium"==b)return 4;if(b.slice&&"px"==b.slice(-2))return parseFloat(b);var d=a.style,g=a.runtimeStyle,c=d.left,e=g.left;g.left=a.currentStyle.left;try{d.left=
+b,b=d.pixelLeft}catch(l){b=0}d.left=c;g.left=e;return b}:function(a,b){return parseFloat(b)||0};e.toPixelValue=c;var i=function(a,b){try{return a.filters.item("DXImageTransform.Microsoft.Alpha")}catch(d){return b?{}:null}},b=9>f("ie")||f("ie")&&f("quirks")?function(a){try{return i(a).Opacity/100}catch(b){return 1}}:function(a){return j(a).opacity},g=9>f("ie")||f("ie")&&f("quirks")?function(a,b){var d=100*b,c=1==b;a.style.zoom=c?"":1;if(i(a))i(a,1).Opacity=d;else{if(c)return b;a.style.filter+=" progid:DXImageTransform.Microsoft.Alpha(Opacity="+
+d+")"}i(a,1).Enabled=!c;if("tr"==a.tagName.toLowerCase())for(d=a.firstChild;d;d=d.nextSibling)"td"==d.tagName.toLowerCase()&&g(d,b);return b}:function(a,b){return a.style.opacity=b},a={left:!0,top:!0},l=/margin|padding|width|height|max|min|offset/,d=f("ie")?"styleFloat":"cssFloat",p={cssFloat:d,styleFloat:d,"float":d};e.get=function(a,d){var g=k.byId(a),c=arguments.length;if(2==c&&"opacity"==d)return b(g);var d=p[d]||d,l=e.getComputedStyle(g);return 1==c?l:h(g,d,l[d]||g.style[d])};e.set=function(a,
+b,d){var c=k.byId(a),l=arguments.length,f="opacity"==b,b=p[b]||b;if(3==l)return f?g(c,d):c.style[b]=d;for(var i in b)e.set(a,i,b[i]);return e.getComputedStyle(c)};return e})},"dojo/mouse":function(){define(["./_base/kernel","./on","./has","./dom","./_base/window"],function(f,k,h,j,e){function c(e,b){var g=function(a,g){return k(a,e,function(d){if(b)return b(d,g);if(!j.isDescendant(d.relatedTarget,a))return g.call(this,d)})};g.bubble=function(a){return c(e,function(b,d){var g=a(b.target),c=b.relatedTarget;
+if(g&&g!=(c&&1==c.nodeType&&a(c)))return d.call(g,b)})};return g}h.add("dom-quirks",e.doc&&"BackCompat"==e.doc.compatMode);h.add("events-mouseenter",e.doc&&"onmouseenter"in e.doc.createElement("div"));h.add("events-mousewheel",e.doc&&"onmousewheel"in e.doc);e=h("dom-quirks")&&h("ie")||!h("dom-addeventlistener")?{LEFT:1,MIDDLE:4,RIGHT:2,isButton:function(c,b){return c.button&b},isLeft:function(c){return c.button&1},isMiddle:function(c){return c.button&4},isRight:function(c){return c.button&2}}:{LEFT:0,
+MIDDLE:1,RIGHT:2,isButton:function(c,b){return c.button==b},isLeft:function(c){return 0==c.button},isMiddle:function(c){return 1==c.button},isRight:function(c){return 2==c.button}};f.mouseButtons=e;f=h("events-mousewheel")?"mousewheel":function(c,b){return k(c,"DOMMouseScroll",function(g){g.wheelDelta=-g.detail;b.call(this,g)})};return{_eventHandler:c,enter:c("mouseover"),leave:c("mouseout"),wheel:f,isLeft:e.isLeft,isMiddle:e.isMiddle,isRight:e.isRight}})},"dojo/keys":function(){define(["./_base/kernel",
+"./sniff"],function(f,k){return f.keys={BACKSPACE:8,TAB:9,CLEAR:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,META:k("webkit")?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,UP_DPAD:175,DOWN_DPAD:176,LEFT_DPAD:177,RIGHT_DPAD:178,copyKey:k("mac")&&!k("air")?k("safari")?91:224:17}})},"dojo/_base/Color":function(){define(["./kernel","./lang","./array","./config"],function(f,k,h,j){var e=f.Color=function(c){c&&this.setColor(c)};e.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:j.transparentColor||[0,0,0,0]};k.extend(e,{r:255,g:255,b:255,a:1,_set:function(c,e,b,g){this.r=c;this.g=e;this.b=b;this.a=g},setColor:function(c){k.isString(c)?e.fromString(c,this):k.isArray(c)?e.fromArray(c,this):(this._set(c.r,c.g,c.b,c.a),c instanceof e||
+this.sanitize());return this},sanitize:function(){return this},toRgb:function(){return[this.r,this.g,this.b]},toRgba:function(){return[this.r,this.g,this.b,this.a]},toHex:function(){return"#"+h.map(["r","g","b"],function(c){c=this[c].toString(16);return 2>c.length?"0"+c:c},this).join("")},toCss:function(c){var e=this.r+", "+this.g+", "+this.b;return(c?"rgba("+e+", "+this.a:"rgb("+e)+")"},toString:function(){return this.toCss(!0)}});e.blendColors=f.blendColors=function(c,f,b,g){var a=g||new e;h.forEach(["r",
+"g","b","a"],function(g){a[g]=c[g]+(f[g]-c[g])*b;"a"!=g&&(a[g]=Math.round(a[g]))});return a.sanitize()};e.fromRgb=f.colorFromRgb=function(c,f){var b=c.toLowerCase().match(/^rgba?\(([\s\.,0-9]+)\)/);return b&&e.fromArray(b[1].split(/\s*,\s*/),f)};e.fromHex=f.colorFromHex=function(c,f){var b=f||new e,g=4==c.length?4:8,a=(1<<g)-1,c=Number("0x"+c.substr(1));if(isNaN(c))return null;h.forEach(["b","g","r"],function(e){var d=c&a;c>>=g;b[e]=4==g?17*d:d});b.a=1;return b};e.fromArray=f.colorFromArray=function(c,
+f){var b=f||new e;b._set(Number(c[0]),Number(c[1]),Number(c[2]),Number(c[3]));if(isNaN(b.a))b.a=1;return b.sanitize()};e.fromString=f.colorFromString=function(c,f){var b=e.named[c];return b&&e.fromArray(b,f)||e.fromRgb(c,f)||e.fromHex(c,f)};return e})},"dojo/_base/browser":function(){require.has&&require.has.add("config-selectorEngine","acme");define("../ready,./kernel,./connect,./unload,./window,./event,./html,./NodeList,../query,./xhr,./fx".split(","),function(f){return f})},"dojo/_base/unload":function(){define(["./kernel",
+"./lang","../on"],function(f,k,h){var j=window,e={addOnWindowUnload:function(c,e){if(!f.windowUnloaded)h(j,"unload",f.windowUnloaded=function(){});h(j,"unload",k.hitch(c,e))},addOnUnload:function(c,e){h(j,"beforeunload",k.hitch(c,e))}};f.addOnWindowUnload=e.addOnWindowUnload;f.addOnUnload=e.addOnUnload;return e})},"dojo/_base/html":function(){define("./kernel,../dom,../dom-style,../dom-attr,../dom-prop,../dom-class,../dom-construct,../dom-geometry".split(","),function(f,k,h,j,e,c,i,b){f.byId=k.byId;
+f.isDescendant=k.isDescendant;f.setSelectable=k.setSelectable;f.getAttr=j.get;f.setAttr=j.set;f.hasAttr=j.has;f.removeAttr=j.remove;f.getNodeProp=j.getNodeProp;f.attr=function(b,a,c){return 2==arguments.length?j["string"==typeof a?"get":"set"](b,a):j.set(b,a,c)};f.hasClass=c.contains;f.addClass=c.add;f.removeClass=c.remove;f.toggleClass=c.toggle;f.replaceClass=c.replace;f._toDom=f.toDom=i.toDom;f.place=i.place;f.create=i.create;f.empty=function(b){i.empty(b)};f._destroyElement=f.destroy=function(b){i.destroy(b)};
+f._getPadExtents=f.getPadExtents=b.getPadExtents;f._getBorderExtents=f.getBorderExtents=b.getBorderExtents;f._getPadBorderExtents=f.getPadBorderExtents=b.getPadBorderExtents;f._getMarginExtents=f.getMarginExtents=b.getMarginExtents;f._getMarginSize=f.getMarginSize=b.getMarginSize;f._getMarginBox=f.getMarginBox=b.getMarginBox;f.setMarginBox=b.setMarginBox;f._getContentBox=f.getContentBox=b.getContentBox;f.setContentSize=b.setContentSize;f._isBodyLtr=f.isBodyLtr=b.isBodyLtr;f._docScroll=f.docScroll=
+b.docScroll;f._getIeDocumentElementOffset=f.getIeDocumentElementOffset=b.getIeDocumentElementOffset;f._fixIeBiDiScrollLeft=f.fixIeBiDiScrollLeft=b.fixIeBiDiScrollLeft;f.position=b.position;f.marginBox=function(g,a){return a?b.setMarginBox(g,a):b.getMarginBox(g)};f.contentBox=function(g,a){return a?b.setContentSize(g,a):b.getContentBox(g)};f.coords=function(g,a){f.deprecated("dojo.coords()","Use dojo.position() or dojo.marginBox().");var g=k.byId(g),c=h.getComputedStyle(g),c=b.getMarginBox(g,c),d=
+b.position(g,a);c.x=d.x;c.y=d.y;return c};f.getProp=e.get;f.setProp=e.set;f.prop=function(b,a,c){return 2==arguments.length?e["string"==typeof a?"get":"set"](b,a):e.set(b,a,c)};f.getStyle=h.get;f.setStyle=h.set;f.getComputedStyle=h.getComputedStyle;f.__toPixelValue=f.toPixelValue=h.toPixelValue;f.style=function(b,a,c){switch(arguments.length){case 1:return h.get(b);case 2:return h["string"==typeof a?"get":"set"](b,a)}return h.set(b,a,c)};return f})},"dojo/dom-attr":function(){define("exports,./sniff,./_base/lang,./dom,./dom-style,./dom-prop".split(","),
+function(f,k,h,j,e,c){function i(a,b){var d=a.getAttributeNode&&a.getAttributeNode(b);return d&&d.specified}var b={innerHTML:1,className:1,htmlFor:k("ie"),value:1},g={classname:"class",htmlfor:"for",tabindex:"tabIndex",readonly:"readOnly"};f.has=function(a,e){var d=e.toLowerCase();return b[c.names[d]||e]||i(j.byId(a),g[d]||e)};f.get=function(a,e){var a=j.byId(a),d=e.toLowerCase(),f=c.names[d]||e,m=a[f];if(b[f]&&"undefined"!=typeof m||"href"!=f&&("boolean"==typeof m||h.isFunction(m)))return m;d=g[d]||
+e;return i(a,d)?a.getAttribute(d):null};f.set=function(a,l,d){a=j.byId(a);if(2==arguments.length){for(var i in l)f.set(a,i,l[i]);return a}i=l.toLowerCase();var m=c.names[i]||l,k=b[m];if("style"==m&&"string"!=typeof d)return e.set(a,d),a;if(k||"boolean"==typeof d||h.isFunction(d))return c.set(a,l,d);a.setAttribute(g[i]||l,d);return a};f.remove=function(a,b){j.byId(a).removeAttribute(g[b.toLowerCase()]||b)};f.getNodeProp=function(a,b){var a=j.byId(a),d=b.toLowerCase(),e=c.names[d]||b;if(e in a&&"href"!=
+e)return a[e];d=g[d]||b;return i(a,d)?a.getAttribute(d):null}})},"dojo/dom-prop":function(){define("exports,./_base/kernel,./sniff,./_base/lang,./dom,./dom-style,./dom-construct,./_base/connect".split(","),function(f,k,h,j,e,c,i,b){var g={},a=0,l=k._scopeName+"attrid";f.names={"class":"className","for":"htmlFor",tabindex:"tabIndex",readonly:"readOnly",colspan:"colSpan",frameborder:"frameBorder",rowspan:"rowSpan",valuetype:"valueType"};f.get=function(a,b){var a=e.byId(a),g=b.toLowerCase();return a[f.names[g]||
+b]};f.set=function(d,k,m){d=e.byId(d);if(2==arguments.length&&"string"!=typeof k){for(var n in k)f.set(d,n,k[n]);return d}n=k.toLowerCase();n=f.names[n]||k;if("style"==n&&"string"!=typeof m)return c.set(d,m),d;if("innerHTML"==n)return h("ie")&&d.tagName.toLowerCase()in{col:1,colgroup:1,table:1,tbody:1,tfoot:1,thead:1,tr:1,title:1}?(i.empty(d),d.appendChild(i.toDom(m,d.ownerDocument))):d[n]=m,d;if(j.isFunction(m)){var o=d[l];o||(o=a++,d[l]=o);g[o]||(g[o]={});var r=g[o][n];if(r)b.disconnect(r);else try{delete d[n]}catch(q){}m?
+g[o][n]=b.connect(d,n,m):d[n]=null;return d}d[n]=m;return d}})},"dojo/dom-construct":function(){define("exports,./_base/kernel,./sniff,./_base/window,./dom,./dom-attr,./on".split(","),function(f,k,h,j,e,c,i){function b(a,b){var d=b.parentNode;d&&d.insertBefore(a,b)}var g={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"]},
+a=/<\s*([\w\:]+)/,l={},d=0,p="__"+k._scopeName+"ToDomId",m;for(m in g)if(g.hasOwnProperty(m))k=g[m],k.pre="option"==m?'<select multiple="multiple">':"<"+k.join("><")+">",k.post="</"+k.reverse().join("></")+">";var n=null,o;i(window,"unload",function(){n=null});f.toDom=function(b,c){var c=c||j.doc,e=c[p];e||(c[p]=e=++d+"",l[e]=c.createElement("div"));var b=b+"",f=b.match(a),i=f?f[1].toLowerCase():"",e=l[e];if(f&&g[i]){f=g[i];e.innerHTML=f.pre+b+f.post;for(f=f.length;f;--f)e=e.firstChild}else e.innerHTML=
+b;if(1==e.childNodes.length)return e.removeChild(e.firstChild);for(i=c.createDocumentFragment();f=e.firstChild;)i.appendChild(f);return i};f.place=function(a,d,c){d=e.byId(d);"string"==typeof a&&(a=/^\s*</.test(a)?f.toDom(a,d.ownerDocument):e.byId(a));if("number"==typeof c){var g=d.childNodes;!g.length||g.length<=c?d.appendChild(a):b(a,g[0>c?0:c])}else switch(c){case "before":b(a,d);break;case "after":c=a;(g=d.parentNode)&&(g.lastChild==d?g.appendChild(c):g.insertBefore(c,d.nextSibling));break;case "replace":d.parentNode.replaceChild(a,
+d);break;case "only":f.empty(d);d.appendChild(a);break;case "first":if(d.firstChild){b(a,d.firstChild);break}default:d.appendChild(a)}return a};f.create=function(a,b,d,g){var l=j.doc;if(d)d=e.byId(d),l=d.ownerDocument;"string"==typeof a&&(a=l.createElement(a));b&&c.set(a,b);d&&f.place(a,d,g);return a};f.empty=h("ie")?function(a){for(var a=e.byId(a),b;b=a.lastChild;)f.destroy(b)}:function(a){e.byId(a).innerHTML=""};f.destroy=function(a){a=e.byId(a);try{var b=a.ownerDocument;if(!n||o!=b)n=b.createElement("div"),
+o=b;n.appendChild(a.parentNode?a.parentNode.removeChild(a):a);n.innerHTML=""}catch(d){}}})},"dojo/dom-class":function(){define(["./_base/lang","./_base/array","./dom"],function(f,k,h){function j(b){if("string"==typeof b||b instanceof String){if(b&&!c.test(b))return i[0]=b,i;b=b.split(c);b.length&&!b[0]&&b.shift();b.length&&!b[b.length-1]&&b.pop();return b}return!b?[]:k.filter(b,function(a){return a})}var e,c=/\s+/,i=[""],b={};return e={contains:function(b,a){return 0<=(" "+h.byId(b).className+" ").indexOf(" "+
+a+" ")},add:function(b,a){var b=h.byId(b),a=j(a),c=b.className,d,c=c?" "+c+" ":" ";d=c.length;for(var e=0,f=a.length,i;e<f;++e)(i=a[e])&&0>c.indexOf(" "+i+" ")&&(c+=i+" ");d<c.length&&(b.className=c.substr(1,c.length-2))},remove:function(b,a){var b=h.byId(b),c;if(void 0!==a){a=j(a);c=" "+b.className+" ";for(var d=0,e=a.length;d<e;++d)c=c.replace(" "+a[d]+" "," ");c=f.trim(c)}else c="";b.className!=c&&(b.className=c)},replace:function(c,a,f){c=h.byId(c);b.className=c.className;e.remove(b,f);e.add(b,
+a);c.className!==b.className&&(c.className=b.className)},toggle:function(b,a,c){b=h.byId(b);if(void 0===c)for(var a=j(a),d=0,f=a.length,i;d<f;++d)i=a[d],e[e.contains(b,i)?"remove":"add"](b,i);else e[c?"add":"remove"](b,a);return c}}})},"dojo/_base/NodeList":function(){define(["./kernel","../query","./array","./html","../NodeList-dom"],function(f,k,h){var k=k.NodeList,j=k.prototype;j.connect=k._adaptAsForEach(function(){return f.connect.apply(this,arguments)});j.coords=k._adaptAsMap(f.coords);k.events=
+"blur,focus,change,click,error,keydown,keypress,keyup,load,mousedown,mouseenter,mouseleave,mousemove,mouseout,mouseover,mouseup,submit".split(",");h.forEach(k.events,function(e){var c="on"+e;j[c]=function(e,b){return this.connect(c,e,b)}});return f.NodeList=k})},"dojo/query":function(){define("./_base/kernel,./has,./dom,./on,./_base/array,./_base/lang,./selector/_loader,./selector/_loader!default".split(","),function(f,k,h,j,e,c,i,b){function g(a,b){var d=function(d,c){if("string"==typeof c&&(c=h.byId(c),
+!c))return new b([]);var g="string"==typeof d?a(d,c):d?d.orphan?d:[d]:[];return g.orphan?g:new b(g)};d.matches=a.match||function(a,b,c){return 0<d.filter([a],b,c).length};d.filter=a.filter||function(a,b,c){return d(b,c).filter(function(b){return-1<e.indexOf(a,b)})};if("function"!=typeof a)var c=a.search,a=function(a,b){return c(b||document,a)};return d}k.add("array-extensible",function(){return 1==c.delegate([],{length:1}).length&&!k("bug-for-in-skips-shadowed")});var a=Array.prototype,l=a.slice,
+d=a.concat,p=e.forEach,m=function(a,b,d){b=[0].concat(l.call(b,0));d=d||f.global;return function(c){b[0]=c;return a.apply(d,b)}},n=function(a){var b=this instanceof o&&k("array-extensible");"number"==typeof a&&(a=Array(a));var d=a&&"length"in a?a:arguments;if(b||!d.sort){for(var g=b?this:[],e=g.length=d.length,f=0;f<e;f++)g[f]=d[f];if(b)return g;d=g}c._mixin(d,r);d._NodeListCtor=function(a){return o(a)};return d},o=n,r=o.prototype=k("array-extensible")?[]:{};o._wrap=r._wrap=function(a,b,d){a=new (d||
+this._NodeListCtor||o)(a);return b?a._stash(b):a};o._adaptAsMap=function(a,b){return function(){return this.map(m(a,arguments,b))}};o._adaptAsForEach=function(a,b){return function(){this.forEach(m(a,arguments,b));return this}};o._adaptAsFilter=function(a,b){return function(){return this.filter(m(a,arguments,b))}};o._adaptWithCondition=function(a,b,d){return function(){var c=arguments,g=m(a,c,d);if(b.call(d||f.global,c))return this.map(g);this.forEach(g);return this}};p(["slice","splice"],function(b){var d=
+a[b];r[b]=function(){return this._wrap(d.apply(this,arguments),"slice"==b?this:null)}});p(["indexOf","lastIndexOf","every","some"],function(a){var b=e[a];r[a]=function(){return b.apply(f,[this].concat(l.call(arguments,0)))}});c.extend(n,{constructor:o,_NodeListCtor:o,toString:function(){return this.join(",")},_stash:function(a){this._parent=a;return this},on:function(a,b){var d=this.map(function(d){return j(d,a,b)});d.remove=function(){for(var a=0;a<d.length;a++)d[a].remove()};return d},end:function(){return this._parent?
+this._parent:new this._NodeListCtor(0)},concat:function(a){var b=l.call(this,0),c=e.map(arguments,function(a){return l.call(a,0)});return this._wrap(d.apply(b,c),this)},map:function(a,b){return this._wrap(e.map(this,a,b),this)},forEach:function(a,b){p(this,a,b);return this},filter:function(a){var b=arguments,d=this,c=0;if("string"==typeof a){d=q._filterResult(this,b[0]);if(1==b.length)return d._stash(this);c=1}return this._wrap(e.filter(d,b[c],b[c+1]),this)},instantiate:function(a,b){var d=c.isFunction(a)?
+a:c.getObject(a),b=b||{};return this.forEach(function(a){new d(b,a)})},at:function(){var a=new this._NodeListCtor(0);p(arguments,function(b){0>b&&(b=this.length+b);this[b]&&a.push(this[b])},this);return a._stash(this)}});var q=g(b,n);f.query=g(b,function(a){return n(a)});q.load=function(a,b,d){i.load(a,b,function(a){d(g(a,n))})};f._filterQueryResult=q._filterResult=function(a,b,d){return new n(q.filter(a,b,d))};f.NodeList=q.NodeList=n;return q})},"dojo/selector/_loader":function(){define(["../has",
+"require"],function(f,k){var h=document.createElement("div");f.add("dom-qsa2.1",!!h.querySelectorAll);f.add("dom-qsa3",function(){try{return h.innerHTML="<p class='TEST'></p>",1==h.querySelectorAll(".TEST:empty").length}catch(e){}});var j;return{load:function(e,c,i){var b=k,e="default"==e?f("config-selectorEngine")||"css3":e,e="css2"==e||"lite"==e?"./lite":"css2.1"==e?f("dom-qsa2.1")?"./lite":"./acme":"css3"==e?f("dom-qsa3")?"./lite":"./acme":"acme"==e?"./acme":(b=c)&&e;if("?"==e.charAt(e.length-
+1))var e=e.substring(0,e.length-1),g=!0;if(g&&(f("dom-compliant-qsa")||j))return i(j);b([e],function(a){"./lite"!=e&&(j=a);i(a)})}}})},"dojo/selector/acme":function(){define(["../dom","../sniff","../_base/array","../_base/lang","../_base/window"],function(f,k,h,j,e){var c=j.trim,i=h.forEach,b="BackCompat"==e.doc.compatMode,g=!1,a=function(){return!0},l=function(a){for(var a=0<=">~+".indexOf(a.slice(-1))?a+" * ":a+" ",b=function(b,d){return c(a.slice(b,d))},d=[],e=-1,f=-1,l=-1,i=-1,m=-1,j=-1,h=-1,
+k,o="",n="",p,q=0,t=a.length,r=null,u=null,v=function(){if(0<=j)r.id=b(j,q).replace(/\\/g,""),j=-1;if(0<=h){var a=h==q?null:b(h,q);r[0>">~+".indexOf(a)?"tag":"oper"]=a;h=-1}0<=m&&(r.classes.push(b(m+1,q).replace(/\\/g,"")),m=-1)};o=n,n=a.charAt(q),q<t;q++)if("\\"!=o)if(r||(p=q,r={query:null,pseudos:[],attrs:[],classes:[],tag:null,oper:null,id:null,getTag:function(){return g?this.otag:this.tag}},h=q),k)n==k&&(k=null);else if("'"==n||'"'==n)k=n;else if(0<=e)if("]"==n){u.attr?u.matchFor=b(l||e+1,q):
+u.attr=b(e+1,q);if((e=u.matchFor)&&('"'==e.charAt(0)||"'"==e.charAt(0)))u.matchFor=e.slice(1,-1);if(u.matchFor)u.matchFor=u.matchFor.replace(/\\/g,"");r.attrs.push(u);u=null;e=l=-1}else{if("="==n)l=0<="|~^$*".indexOf(o)?o:"",u.type=l+n,u.attr=b(e+1,q-l.length),l=q+1}else if(0<=f){if(")"==n){if(0<=i)u.value=b(f+1,q);i=f=-1}}else if("#"==n)v(),j=q+1;else if("."==n)v(),m=q;else if(":"==n)v(),i=q;else if("["==n)v(),e=q,u={};else if("("==n)0<=i&&(u={name:b(i+1,q),value:null},r.pseudos.push(u)),f=q;else if(" "==
+n&&o!=n){v();0<=i&&r.pseudos.push({name:b(i+1,q)});r.loops=r.pseudos.length||r.attrs.length||r.classes.length;r.oquery=r.query=b(p,q);r.otag=r.tag=r.oper?null:r.tag||"*";if(r.tag)r.tag=r.tag.toUpperCase();if(d.length&&d[d.length-1].oper)r.infixOper=d.pop(),r.query=r.infixOper.query+" "+r.query;d.push(r);r=null}return d},d=function(a,b){return!a?b:!b?a:function(){return a.apply(window,arguments)&&b.apply(window,arguments)}},p=function(a,b){var d=b||[];a&&d.push(a);return d},m=function(a){return 1==
+a.nodeType},n=function(a,b){return!a?"":"class"==b?a.className||"":"for"==b?a.htmlFor||"":"style"==b?a.style.cssText||"":(g?a.getAttribute(b):a.getAttribute(b,2))||""},o={"*=":function(a,b){return function(d){return 0<=n(d,a).indexOf(b)}},"^=":function(a,b){return function(d){return 0==n(d,a).indexOf(b)}},"$=":function(a,b){return function(d){var d=" "+n(d,a),c=d.lastIndexOf(b);return-1<c&&c==d.length-b.length}},"~=":function(a,b){var d=" "+b+" ";return function(b){return 0<=(" "+n(b,a)+" ").indexOf(d)}},
+"|=":function(a,b){var d=b+"-";return function(c){c=n(c,a);return c==b||0==c.indexOf(d)}},"=":function(a,b){return function(d){return n(d,a)==b}}},r="undefined"==typeof e.doc.firstChild.nextElementSibling,q=!r?"nextElementSibling":"nextSibling",v=!r?"previousElementSibling":"previousSibling",s=r?m:a,t=function(a){for(;a=a[v];)if(s(a))return!1;return!0},u=function(a){for(;a=a[q];)if(s(a))return!1;return!0},y=function(a){var b=a.parentNode,b=7!=b.nodeType?b:b.nextSibling,d=0,c=b.children||b.childNodes,
+g=a._i||a.getAttribute("_i")||-1,e=b._l||("undefined"!==typeof b.getAttribute?b.getAttribute("_l"):-1);if(!c)return-1;c=c.length;if(e==c&&0<=g&&0<=e)return g;k("ie")&&"undefined"!==typeof b.setAttribute?b.setAttribute("_l",c):b._l=c;g=-1;for(b=b.firstElementChild||b.firstChild;b;b=b[q])if(s(b))k("ie")?b.setAttribute("_i",++d):b._i=++d,a===b&&(g=d);return g},z=function(a){return!(y(a)%2)},I=function(a){return y(a)%2},J={checked:function(){return function(a){return!!("checked"in a?a.checked:a.selected)}},
+disabled:function(){return function(a){return a.disabled}},enabled:function(){return function(a){return!a.disabled}},"first-child":function(){return t},"last-child":function(){return u},"only-child":function(){return function(a){return t(a)&&u(a)}},empty:function(){return function(a){for(var b=a.childNodes,a=a.childNodes.length-1;0<=a;a--){var d=b[a].nodeType;if(1===d||3==d)return!1}return!0}},contains:function(a,b){var d=b.charAt(0);if('"'==d||"'"==d)b=b.slice(1,-1);return function(a){return 0<=
+a.innerHTML.indexOf(b)}},not:function(a,b){var d=l(b)[0],c={el:1};if("*"!=d.tag)c.tag=1;if(!d.classes.length)c.classes=1;var g=E(d,c);return function(a){return!g(a)}},"nth-child":function(a,b){var d=parseInt;if("odd"==b)return I;if("even"==b)return z;if(-1!=b.indexOf("n")){var c=b.split("n",2),g=c[0]?"-"==c[0]?-1:d(c[0]):1,e=c[1]?d(c[1]):0,f=0,l=-1;0<g?0>e?e=e%g&&g+e%g:0<e&&(e>=g&&(f=e-e%g),e%=g):0>g&&(g*=-1,0<e&&(l=e,e%=g));if(0<g)return function(a){a=y(a);return a>=f&&(0>l||a<=l)&&a%g==e};b=e}var i=
+d(b);return function(a){return y(a)==i}}},N=k("ie")&&(9>k("ie")||k("quirks"))?function(a){var b=a.toLowerCase();"class"==b&&(a="className");return function(d){return g?d.getAttribute(a):d[a]||d[b]}}:function(a){return function(b){return b&&b.getAttribute&&b.hasAttribute(a)}},E=function(b,c){if(!b)return a;var c=c||{},e=null;"el"in c||(e=d(e,m));"tag"in c||"*"!=b.tag&&(e=d(e,function(a){return a&&(g?a.tagName:a.tagName.toUpperCase())==b.getTag()}));"classes"in c||i(b.classes,function(a,b){var c=RegExp("(?:^|\\s)"+
+a+"(?:\\s|$)");e=d(e,function(a){return c.test(a.className)});e.count=b});"pseudos"in c||i(b.pseudos,function(a){var b=a.name;J[b]&&(e=d(e,J[b](b,a.value)))});"attrs"in c||i(b.attrs,function(a){var b,c=a.attr;a.type&&o[a.type]?b=o[a.type](c,a.matchFor):c.length&&(b=N(c));b&&(e=d(e,b))});"id"in c||b.id&&(e=d(e,function(a){return!!a&&a.id==b.id}));e||"default"in c||(e=a);return e},S=function(a){return function(b,d,c){for(;b=b[q];)if(!r||m(b)){(!c||P(b,c))&&a(b)&&d.push(b);break}return d}},Q=function(a){return function(b,
+d,c){for(b=b[q];b;){if(s(b)){if(c&&!P(b,c))break;a(b)&&d.push(b)}b=b[q]}return d}},B=function(b){b=b||a;return function(a,d,c){for(var g=0,e=a.children||a.childNodes;a=e[g++];)s(a)&&(!c||P(a,c))&&b(a,g)&&d.push(a);return d}},A={},w=function(d){var c=A[d.query];if(c)return c;var g=d.infixOper,g=g?g.oper:"",l=E(d,{el:1}),i="*"==d.tag,m=e.doc.getElementsByClassName;if(g){m={el:1};if(i)m.tag=1;l=E(d,m);"+"==g?c=S(l):"~"==g?c=Q(l):">"==g&&(c=B(l))}else if(d.id)l=!d.loops&&i?a:E(d,{el:1,id:1}),c=function(a,
+b){var c=f.byId(d.id,a.ownerDocument||a);if(c&&l(c)){if(9==a.nodeType)return p(c,b);for(var g=c.parentNode;g&&!(g==a);)g=g.parentNode;if(g)return p(c,b)}};else if(m&&/\{\s*\[native code\]\s*\}/.test(""+m)&&d.classes.length&&!b)var l=E(d,{el:1,classes:1,id:1}),j=d.classes.join(" "),c=function(a,b,d){for(var b=p(0,b),c,g=0,e=a.getElementsByClassName(j);c=e[g++];)l(c,a)&&P(c,d)&&b.push(c);return b};else!i&&!d.loops?c=function(a,b,c){for(var b=p(0,b),g=0,e=d.getTag(),e=e?a.getElementsByTagName(e):[];a=
+e[g++];)P(a,c)&&b.push(a);return b}:(l=E(d,{el:1,tag:1,id:1}),c=function(a,b,c){for(var b=p(0,b),g,e=0,f=(g=d.getTag())?a.getElementsByTagName(g):[];g=f[e++];)l(g,a)&&P(g,c)&&b.push(g);return b});return A[d.query]=c},x={},K={},H=function(a){var b=l(c(a));if(1==b.length){var d=w(b[0]);return function(a){if(a=d(a,[]))a.nozip=!0;return a}}return function(a){for(var a=p(a),d,c,g=b.length,e,f,l=0;l<g;l++){f=[];d=b[l];c=a.length-1;if(0<c)e={},f.nozip=!0;c=w(d);for(var i=0;d=a[i];i++)c(d,f,e);if(!f.length)break;
+a=f}return f}},C=k("ie")?"commentStrip":"nozip",F=!!e.doc.querySelectorAll,O=/\\[>~+]|n\+\d|([^ \\])?([>~+])([^ =])?/g,D=function(a,b,d,c){return d?(b?b+" ":"")+d+(c?" "+c:""):a},L=/([^[]*)([^\]]*])?/g,T=function(a,b,d){return b.replace(O,D)+(d||"")},G=function(a,d){a=a.replace(L,T);if(F){var c=K[a];if(c&&!d)return c}if(c=x[a])return c;var c=a.charAt(0),g=-1==a.indexOf(" ");0<=a.indexOf("#")&&g&&(d=!0);if(F&&!d&&-1==">~+".indexOf(c)&&(!k("ie")||-1==a.indexOf(":"))&&!(b&&0<=a.indexOf("."))&&-1==a.indexOf(":contains")&&
+-1==a.indexOf(":checked")&&-1==a.indexOf("|=")){var e=0<=">~+".indexOf(a.charAt(a.length-1))?a+" *":a;return K[a]=function(b){try{if(!(9==b.nodeType||g))throw"";var d=b.querySelectorAll(e);d[C]=!0;return d}catch(c){return G(a,!0)(b)}}}var f=a.match(/([^\s,](?:"(?:\\.|[^"])+"|'(?:\\.|[^'])+'|[^,])*)/g);return x[a]=2>f.length?H(a):function(a){for(var b=0,d=[],c;c=f[b++];)d=d.concat(H(c)(a));return d}},M=0,X=k("ie")?function(a){return g?a.getAttribute("_uid")||a.setAttribute("_uid",++M)||M:a.uniqueID}:
+function(a){return a._uid||(a._uid=++M)},P=function(a,b){if(!b)return 1;var d=X(a);return!b[d]?b[d]=1:0},Y=function(a){if(a&&a.nozip)return a;var b=[];if(!a||!a.length)return b;a[0]&&b.push(a[0]);if(2>a.length)return b;M++;var d,c;if(k("ie")&&g){var e=M+"";a[0].setAttribute("_zipIdx",e);for(d=1;c=a[d];d++)a[d].getAttribute("_zipIdx")!=e&&b.push(c),c.setAttribute("_zipIdx",e)}else if(k("ie")&&a.commentStrip)try{for(d=1;c=a[d];d++)m(c)&&b.push(c)}catch(f){}else{a[0]&&(a[0]._zipIdx=M);for(d=1;c=a[d];d++)a[d]._zipIdx!=
+M&&b.push(c),c._zipIdx=M}return b},U=function(a,b){b=b||e.doc;g="div"===(b.ownerDocument||b).createElement("div").tagName;var d=G(a)(b);return d&&d.nozip?d:Y(d)};U.filter=function(a,b,d){for(var c=[],g=l(b),g=1==g.length&&!/[^\w#\.]/.test(b)?E(g[0]):function(a){return-1!=h.indexOf(U(b,f.byId(d)),a)},e=0,i;i=a[e];e++)g(i)&&c.push(i);return c};return U})},"dojo/NodeList-dom":function(){define("dojo/NodeList-dom","./_base/kernel,./query,./_base/array,./_base/lang,./dom-class,./dom-construct,./dom-geometry,./dom-attr,./dom-style".split(","),
+function(f,k,h,j,e,c,i,b,g){function a(a){return function(b,d,c){return 2==arguments.length?a["string"==typeof d?"get":"set"](b,d):a.set(b,d,c)}}var l=function(a){return 1==a.length&&"string"==typeof a[0]},d=function(a){var b=a.parentNode;b&&b.removeChild(a)},p=k.NodeList,m=p._adaptWithCondition,n=p._adaptAsForEach,o=p._adaptAsMap;j.extend(p,{_normalize:function(a,b){var d=!0===a.parse;if("string"==typeof a.template)var g=a.templateFunc||f.string&&f.string.substitute,a=g?g(a.template,a):a;g=typeof a;
+"string"==g||"number"==g?(a=c.toDom(a,b&&b.ownerDocument),a=11==a.nodeType?j._toArray(a.childNodes):[a]):j.isArrayLike(a)?j.isArray(a)||(a=j._toArray(a)):a=[a];if(d)a._runParse=!0;return a},_cloneNode:function(a){return a.cloneNode(!0)},_place:function(a,b,d,g){if(!(1!=b.nodeType&&"only"==d))for(var e,l=a.length,i=l-1;0<=i;i--){var m=g?this._cloneNode(a[i]):a[i];if(a._runParse&&f.parser&&f.parser.parse){e||(e=b.ownerDocument.createElement("div"));e.appendChild(m);f.parser.parse(e);for(m=e.firstChild;e.firstChild;)e.removeChild(e.firstChild)}i==
+l-1?c.place(m,b,d):b.parentNode.insertBefore(m,b);b=m}},position:o(i.position),attr:m(a(b),l),style:m(a(g),l),addClass:n(e.add),removeClass:n(e.remove),toggleClass:n(e.toggle),replaceClass:n(e.replace),empty:n(c.empty),removeAttr:n(b.remove),marginBox:o(i.getMarginBox),place:function(a,b){var d=k(a)[0];return this.forEach(function(a){c.place(a,d,b)})},orphan:function(a){return(a?k._filterResult(this,a):this).forEach(d)},adopt:function(a,b){return k(a).place(this[0],b)._stash(this)},query:function(a){if(!a)return this;
+var b=new p;this.map(function(d){k(a,d).forEach(function(a){void 0!==a&&b.push(a)})});return b._stash(this)},filter:function(a){var b=arguments,d=this,c=0;if("string"==typeof a){d=k._filterResult(this,b[0]);if(1==b.length)return d._stash(this);c=1}return this._wrap(h.filter(d,b[c],b[c+1]),this)},addContent:function(a,b){for(var a=this._normalize(a,this[0]),d=0,c;c=this[d];d++)this._place(a,c,b,0<d);return this}});return p})},"dojo/_base/fx":function(){define("./kernel,./config,./lang,../Evented,./Color,./connect,./sniff,../dom,../dom-style".split(","),
+function(f,k,h,j,e,c,i,b,g){var a=h.mixin,l={},d=l._Line=function(a,b){this.start=a;this.end=b};d.prototype.getValue=function(a){return(this.end-this.start)*a+this.start};var p=l.Animation=function(b){a(this,b);if(h.isArray(this.curve))this.curve=new d(this.curve[0],this.curve[1])};p.prototype=new j;h.extend(p,{duration:350,repeat:0,rate:20,_percent:0,_startRepeatCount:0,_getStep:function(){var a=this._percent,b=this.easing;return b?b(a):a},_fire:function(a,b){var d=b||[];if(this[a])if(k.debugAtAllCosts)this[a].apply(this,
+d);else try{this[a].apply(this,d)}catch(c){}return this},play:function(a,b){this._delayTimer&&this._clearTimer();if(b)this._stopTimer(),this._active=this._paused=!1,this._percent=0;else if(this._active&&!this._paused)return this;this._fire("beforeBegin",[this.node]);var d=a||this.delay,c=h.hitch(this,"_play",b);if(0<d)return this._delayTimer=setTimeout(c,d),this;c();return this},_play:function(){this._delayTimer&&this._clearTimer();this._startTime=(new Date).valueOf();this._paused&&(this._startTime-=
this.duration*this._percent);this._active=!0;this._paused=!1;var a=this.curve.getValue(this._getStep());if(!this._percent){if(!this._startRepeatCount)this._startRepeatCount=this.repeat;this._fire("onBegin",[a])}this._fire("onPlay",[a]);this._cycle();return this},pause:function(){this._delayTimer&&this._clearTimer();this._stopTimer();if(!this._active)return this;this._paused=!0;this._fire("onPause",[this.curve.getValue(this._getStep())]);return this},gotoPercent:function(a,b){this._stopTimer();this._active=
this._paused=!0;this._percent=a;b&&this.play();return this},stop:function(a){this._delayTimer&&this._clearTimer();if(!this._timer)return this;this._stopTimer();if(a)this._percent=1;this._fire("onStop",[this.curve.getValue(this._getStep())]);this._active=this._paused=!1;return this},status:function(){return this._active?this._paused?"paused":"playing":"stopped"},_cycle:function(){if(this._active){var a=(new Date).valueOf(),a=0===this.duration?1:(a-this._startTime)/this.duration;1<=a&&(a=1);this._percent=
a;this.easing&&(a=this.easing(a));this._fire("onAnimate",[this.curve.getValue(a)]);if(1>this._percent)this._startTimer();else{this._active=!1;if(0<this.repeat)this.repeat--,this.play(null,!0);else if(-1==this.repeat)this.play(null,!0);else if(this._startRepeatCount)this.repeat=this._startRepeatCount,this._startRepeatCount=0;this._percent=0;this._fire("onEnd",[this.node]);!this.repeat&&this._stopTimer()}}return this},_clearTimer:function(){clearTimeout(this._delayTimer);delete this._delayTimer}});
-var m=0,n=null,o={run:function(){}};i.extend(p,{_startTimer:function(){if(!this._timer)this._timer=g.connect(o,"run",this,"_cycle"),m++;n||(n=setInterval(i.hitch(o,"run"),this.rate))},_stopTimer:function(){if(this._timer)g.disconnect(this._timer),this._timer=null,m--;0>=m&&(clearInterval(n),n=null,m=0)}});var r=h("ie")?function(a){var b=a.style;if(!b.width.length&&"auto"==f.get(a,"width"))b.width="auto"}:function(){};k._fade=function(d){d.node=b.byId(d.node);var c=a({properties:{}},d),d=c.properties.opacity=
-{};d.start=!("start"in c)?function(){return+f.get(c.node,"opacity")||0}:c.start;d.end=c.end;d=k.animateProperty(c);g.connect(d,"beforeBegin",i.partial(r,c.node));return d};k.fadeIn=function(b){return k._fade(a({end:1},b))};k.fadeOut=function(b){return k._fade(a({end:0},b))};k._defaultEasing=function(a){return 0.5+Math.sin((a+1.5)*Math.PI)/2};var q=function(a){this._properties=a;for(var b in a){var d=a[b];if(d.start instanceof c)d.tempColor=new c}};q.prototype.getValue=function(a){var b={},d;for(d in this._properties){var f=
-this._properties[d],g=f.start;g instanceof c?b[d]=c.blendColors(g,f.end,a,f.tempColor).toCss():i.isArray(g)||(b[d]=(f.end-g)*a+g+("opacity"!=d?f.units||"px":0))}return b};k.animateProperty=function(d){var k=d.node=b.byId(d.node);if(!d.easing)d.easing=e._defaultEasing;d=new p(d);g.connect(d,"beforeBegin",d,function(){var b={},d;for(d in this.properties){if("width"==d||"height"==d)this.node.display="block";var g=this.properties[d];i.isFunction(g)&&(g=g(k));g=b[d]=a({},i.isObject(g)?g:{end:g});if(i.isFunction(g.start))g.start=
-g.start(k);if(i.isFunction(g.end))g.end=g.end(k);var e=0<=d.toLowerCase().indexOf("color"),m=function(a,b){var d={height:a.offsetHeight,width:a.offsetWidth}[b];if(void 0!==d)return d;d=f.get(a,b);return"opacity"==b?+d:e?d:parseFloat(d)};if("end"in g){if(!("start"in g))g.start=m(k,d)}else g.end=m(k,d);e?(g.start=new c(g.start),g.end=new c(g.end)):g.start="opacity"==d?+g.start:parseFloat(g.start)}this.curve=new q(b)});g.connect(d,"onAnimate",i.hitch(f,"set",d.node));return d};k.anim=function(a,b,d,
-c,f,g){return k.animateProperty({node:a,duration:d||p.prototype.duration,properties:b,easing:c,onEnd:f}).play(g||0)};a(e,k);e._Animation=p;return k})},"dijit/layout/BorderContainer":function(){define("dojo/_base/array,dojo/cookie,dojo/_base/declare,dojo/dom-class,dojo/dom-construct,dojo/dom-geometry,dojo/dom-style,dojo/_base/event,dojo/keys,dojo/_base/lang,dojo/on,dojo/touch,../_WidgetBase,../_Widget,../_TemplatedMixin,./_LayoutWidget,./utils".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o,r){var q=
-i("dijit.layout._Splitter",[m,n],{live:!0,templateString:'<div class="dijitSplitter" data-dojo-attach-event="onkeypress:_onKeyPress,press:_startDrag,onmouseenter:_onMouse,onmouseleave:_onMouse" tabIndex="0" role="separator"><div class="dijitSplitterThumb"></div></div>',constructor:function(){this._handlers=[]},postMixInProperties:function(){this.inherited(arguments);this.horizontal=/top|bottom/.test(this.region);this._factor=/top|left/.test(this.region)?1:-1;this._cookieName=this.container.id+"_"+
-this.region},buildRendering:function(){this.inherited(arguments);l.add(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V"));if(this.container.persist){var a=j(this._cookieName);a&&(this.child.domNode.style[this.horizontal?"height":"width"]=a)}},_computeMaxSize:function(){var a=this.horizontal?"h":"w",b=g.getMarginBox(this.child.domNode)[a],d=e.filter(this.container.getChildren(),function(a){return"center"==a.region})[0],a=g.getMarginBox(d.domNode)[a];return Math.min(this.child.maxSize,b+a)},_startDrag:function(f){if(!this.cover)this.cover=
-c.place("<div class=dijitSplitterCover></div>",this.child.domNode,"after");l.add(this.cover,"dijitSplitterCoverActive");this.fake&&c.destroy(this.fake);if(!(this._resize=this.live))(this.fake=this.domNode.cloneNode(!0)).removeAttribute("id"),l.add(this.domNode,"dijitSplitterShadow"),c.place(this.fake,this.domNode,"after");l.add(this.domNode,"dijitSplitterActive dijitSplitter"+(this.horizontal?"H":"V")+"Active");this.fake&&l.remove(this.fake,"dijitSplitterHover dijitSplitter"+(this.horizontal?"H":
-"V")+"Hover");var e=this._factor,m=this.horizontal,h=m?"pageY":"pageX",i=f[h],j=this.domNode.style,p=g.getMarginBox(this.child.domNode)[m?"h":"w"],n=this._computeMaxSize(),o=this.child.minSize||20,m=this.region,q="top"==m||"bottom"==m?"top":"left",r=parseInt(j[q],10),v=this._resize,A=a.hitch(this.container,"_layoutChildren",this.child.id),m=this.ownerDocument;this._handlers=this._handlers.concat([k(m,d.move,this._drag=function(a,b){var d=a[h]-i,c=e*d+p,f=Math.max(Math.min(c,n),o);(v||b)&&A(f);j[q]=
-d+r+e*(f-c)+"px"}),k(m,"dragstart",b.stop),k(this.ownerDocumentBody,"selectstart",b.stop),k(m,d.release,a.hitch(this,"_stopDrag"))]);b.stop(f)},_onMouse:function(a){a="mouseover"==a.type||"mouseenter"==a.type;l.toggle(this.domNode,"dijitSplitterHover",a);l.toggle(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V")+"Hover",a)},_stopDrag:function(a){try{this.cover&&l.remove(this.cover,"dijitSplitterCoverActive"),this.fake&&c.destroy(this.fake),l.remove(this.domNode,"dijitSplitterActive dijitSplitter"+
-(this.horizontal?"H":"V")+"Active dijitSplitterShadow"),this._drag(a),this._drag(a,!0)}finally{this._cleanupHandlers(),delete this._drag}this.container.persist&&j(this._cookieName,this.child.domNode.style[this.horizontal?"height":"width"],{expires:365})},_cleanupHandlers:function(){for(var a;a=this._handlers.pop();)a.remove()},_onKeyPress:function(a){this._resize=!0;var d=this.horizontal,c=1;switch(a.charOrCode){case d?f.UP_ARROW:f.LEFT_ARROW:c*=-1;case d?f.DOWN_ARROW:f.RIGHT_ARROW:break;default:return}d=
-g.getMarginSize(this.child.domNode)[d?"h":"w"]+this._factor*c;this.container._layoutChildren(this.child.id,Math.max(Math.min(d,this._computeMaxSize()),this.child.minSize));b.stop(a)},destroy:function(){this._cleanupHandlers();delete this.child;delete this.container;delete this.cover;delete this.fake;this.inherited(arguments)}}),v=i("dijit.layout._Gutter",[m,n],{templateString:'<div class="dijitGutter" role="presentation"></div>',postMixInProperties:function(){this.inherited(arguments);this.horizontal=
-/top|bottom/.test(this.region)},buildRendering:function(){this.inherited(arguments);l.add(this.domNode,"dijitGutter"+(this.horizontal?"H":"V"))}}),i=i("dijit.layout.BorderContainer",o,{design:"headline",gutters:!0,liveSplitters:!0,persist:!1,baseClass:"dijitBorderContainer",_splitterClass:q,postMixInProperties:function(){this.gutters||(this.baseClass+="NoGutter");this.inherited(arguments)},startup:function(){this._started||(e.forEach(this.getChildren(),this._setupChild,this),this.inherited(arguments))},
-_setupChild:function(b){var d=b.region;if(d){this.inherited(arguments);l.add(b.domNode,this.baseClass+"Pane");var f=this.isLeftToRight();"leading"==d&&(d=f?"left":"right");"trailing"==d&&(d=f?"right":"left");if("center"!=d&&(b.splitter||this.gutters)&&!b._splitterWidget)f=b.splitter?this._splitterClass:v,a.isString(f)&&(f=a.getObject(f)),f=new f({id:b.id+"_splitter",container:this,child:b,region:d,live:this.liveSplitters}),f.isSplitter=!0,b._splitterWidget=f,c.place(f.domNode,b.domNode,"after"),f.startup();
-b.region=d}},layout:function(){this._layoutChildren()},addChild:function(a,b){this.inherited(arguments);this._started&&this.layout()},removeChild:function(a){var b=a.region,d=a._splitterWidget;d&&(d.destroy(),delete a._splitterWidget);this.inherited(arguments);this._started&&this._layoutChildren();l.remove(a.domNode,this.baseClass+"Pane");h.set(a.domNode,{top:"auto",bottom:"auto",left:"auto",right:"auto",position:"static"});h.set(a.domNode,"top"==b||"bottom"==b?"width":"height","auto")},getChildren:function(){return e.filter(this.inherited(arguments),
-function(a){return!a.isSplitter})},getSplitter:function(a){return e.filter(this.getChildren(),function(b){return b.region==a})[0]._splitterWidget},resize:function(a,b){if(!this.cs||!this.pe){var d=this.domNode;this.cs=h.getComputedStyle(d);this.pe=g.getPadExtents(d,this.cs);this.pe.r=h.toPixelValue(d,this.cs.paddingRight);this.pe.b=h.toPixelValue(d,this.cs.paddingBottom);h.set(d,"padding","0px")}this.inherited(arguments)},_layoutChildren:function(a,b){if(this._borderBox&&this._borderBox.h){var d=
-e.map(this.getChildren(),function(a,b){return{pane:a,weight:["center"==a.region?Infinity:0,a.layoutPriority,("sidebar"==this.design?1:-1)*(/top|bottom/.test(a.region)?1:-1),b]}},this);d.sort(function(a,b){for(var d=a.weight,c=b.weight,f=0;f<d.length;f++)if(d[f]!=c[f])return d[f]-c[f];return 0});var c=[];e.forEach(d,function(a){a=a.pane;c.push(a);a._splitterWidget&&c.push(a._splitterWidget)});r.layoutChildren(this.domNode,{l:this.pe.l,t:this.pe.t,w:this._borderBox.w-this.pe.w,h:this._borderBox.h-this.pe.h},
-c,a,b)}},destroyRecursive:function(){e.forEach(this.getChildren(),function(a){var b=a._splitterWidget;b&&b.destroy();delete a._splitterWidget});this.inherited(arguments)}});i.ChildWidgetProperties={region:"",layoutPriority:0,splitter:!1,minSize:0,maxSize:Infinity};a.extend(p,i.ChildWidgetProperties);i._Splitter=q;i._Gutter=v;return i})},"dojo/cookie":function(){define("dojo/cookie",["./_base/kernel","./regexp"],function(e,j){e.cookie=function(e,l,c){var g=document.cookie,h;if(1==arguments.length)h=
-(h=g.match(RegExp("(?:^|; )"+j.escapeString(e)+"=([^;]*)")))?decodeURIComponent(h[1]):void 0;else{c=c||{};g=c.expires;if("number"==typeof g){var b=new Date;b.setTime(b.getTime()+864E5*g);g=c.expires=b}if(g&&g.toUTCString)c.expires=g.toUTCString();var l=encodeURIComponent(l),g=e+"="+l,f;for(f in c)g+="; "+f,b=c[f],!0!==b&&(g+="="+b);document.cookie=g}return h};e.cookie.isSupported=function(){if(!("cookieEnabled"in navigator))this("__djCookieTest__","CookiesAllowed"),navigator.cookieEnabled="CookiesAllowed"==
-this("__djCookieTest__"),navigator.cookieEnabled&&this("__djCookieTest__","",{expires:-1});return navigator.cookieEnabled};return e.cookie})},"dojo/regexp":function(){define(["./_base/kernel","./_base/lang"],function(e,j){var i={};j.setObject("dojo.regexp",i);i.escapeString=function(e,c){return e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,function(g){return c&&-1!=c.indexOf(g)?g:"\\"+g})};i.buildGroupRE=function(e,c,g){if(!(e instanceof Array))return c(e);for(var h=[],b=0;b<e.length;b++)h.push(c(e[b]));
-return i.group(h.join("|"),g)};i.group=function(e,c){return"("+(c?"?:":"")+e+")"};return i})},"dojo/touch":function(){define("./_base/kernel,./_base/lang,./aspect,./dom,./on,./has,./mouse,./ready,./_base/window".split(","),function(e,j,i,l,c,g,h,b,f){function a(a){return function(b,d){return c(b,a,d)}}var i=g("touch"),k=!1;g("ios")&&(g=navigator.userAgent.match(/OS ([\d_]+)/)?RegExp.$1:"1",k=5>parseFloat(g.replace(/_/,".").replace(/_/g,"")));var d,p;i&&(b(function(){p=f.body();f.doc.addEventListener("touchstart",
-function(a){var b=p;p=a.target;c.emit(b,"dojotouchout",{target:b,relatedTarget:p,bubbles:!0});c.emit(p,"dojotouchover",{target:p,relatedTarget:b,bubbles:!0})},!0);c(f.doc,"touchmove",function(a){if((a=f.doc.elementFromPoint(a.pageX-(k?0:f.global.pageXOffset),a.pageY-(k?0:f.global.pageYOffset)))&&p!==a)c.emit(p,"dojotouchout",{target:p,relatedTarget:a,bubbles:!0}),c.emit(a,"dojotouchover",{target:a,relatedTarget:p,bubbles:!0}),p=a})}),d=function(a,b){return c(f.doc,"touchmove",function(d){(a===f.doc||
-l.isDescendant(p,a))&&b.call(this,j.mixin({},d,{target:p,touches:d.touches,preventDefault:function(){d.preventDefault()},stopPropagation:function(){d.stopPropagation()}}))})});h={press:a(i?"touchstart":"mousedown"),move:i?d:a("mousemove"),release:a(i?"touchend":"mouseup"),cancel:i?a("touchcancel"):h.leave,over:a(i?"dojotouchover":"mouseover"),out:a(i?"dojotouchout":"mouseout"),enter:h._eventHandler(i?"dojotouchover":"mouseover"),leave:h._eventHandler(i?"dojotouchout":"mouseout")};return e.touch=h})},
-"dijit/_WidgetBase":function(){define("require,dojo/_base/array,dojo/aspect,dojo/_base/config,dojo/_base/connect,dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-class,dojo/dom-construct,dojo/dom-geometry,dojo/dom-style,dojo/has,dojo/_base/kernel,dojo/_base/lang,dojo/on,dojo/ready,dojo/Stateful,dojo/topic,dojo/_base/window,./Destroyable,./registry".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o,r,q,v,s,u,t){function y(a){return function(d){b[d?"set":"remove"](this.domNode,a,d);this._set(a,
-d)}}p.add("dijit-legacy-requires",!m.isAsync);p("dijit-legacy-requires")&&r(0,function(){e(["dijit/_base/manager"])});var z={};return g("dijit._WidgetBase",[q,u],{id:"",_setIdAttr:"domNode",lang:"",_setLangAttr:y("lang"),dir:"",_setDirAttr:y("dir"),textDir:"","class":"",_setClassAttr:{node:"domNode",type:"class"},style:"",title:"",tooltip:"",baseClass:"",srcNodeRef:null,domNode:null,containerNode:null,ownerDocument:null,_setOwnerDocumentAttr:function(a){this._set("ownerDocument",a)},attributeMap:{},
-_blankGif:l.blankGif||e.toUrl("dojo/resources/blank.gif"),postscript:function(a,b){this.create(a,b)},create:function(a,b){this.srcNodeRef=h.byId(b);this._connects=[];this._supportingWidgets=[];if(this.srcNodeRef&&"string"==typeof this.srcNodeRef.id)this.id=this.srcNodeRef.id;if(a)this.params=a,n.mixin(this,a);this.postMixInProperties();if(!this.id)this.id=t.getUniqueId(this.declaredClass.replace(/\./g,"_")),this.params&&delete this.params.id;this.ownerDocument=this.ownerDocument||(this.srcNodeRef?
-this.srcNodeRef.ownerDocument:s.doc);this.ownerDocumentBody=s.body(this.ownerDocument);t.add(this);this.buildRendering();var d;if(this.domNode){this._applyAttributes();var c=this.srcNodeRef;c&&c.parentNode&&this.domNode!==c&&(c.parentNode.replaceChild(this.domNode,c),d=!0);this.domNode.setAttribute("widgetId",this.id)}this.postCreate();d&&delete this.srcNodeRef;this._created=!0},_applyAttributes:function(){var a=this.constructor,b=a._setterAttrs;if(!b){var b=a._setterAttrs=[],d;for(d in this.attributeMap)b.push(d);
-var a=a.prototype,c;for(c in a)c in this.attributeMap||"_set"+c.replace(/^[a-z]|-[a-zA-Z]/g,function(a){return a.charAt(a.length-1).toUpperCase()})+"Attr"in a&&b.push(c)}var f={},g;for(g in this.params||{})f[g]=this[g];j.forEach(b,function(a){a in f||this[a]&&this.set(a,this[a])},this);for(g in f)this.set(g,f[g])},postMixInProperties:function(){},buildRendering:function(){if(!this.domNode)this.domNode=this.srcNodeRef||this.ownerDocument.createElement("div");if(this.baseClass){var a=this.baseClass.split(" ");
-this.isLeftToRight()||(a=a.concat(j.map(a,function(a){return a+"Rtl"})));f.add(this.domNode,a)}},postCreate:function(){},startup:function(){if(!this._started)this._started=!0,j.forEach(this.getChildren(),function(a){if(!a._started&&!a._destroyed&&n.isFunction(a.startup))a.startup(),a._started=!0})},destroyRecursive:function(a){this._beingDestroyed=!0;this.destroyDescendants(a);this.destroy(a)},destroy:function(a){function b(d){d.destroyRecursive?d.destroyRecursive(a):d.destroy&&d.destroy(a)}this._beingDestroyed=
-!0;this.uninitialize();j.forEach(this._connects,n.hitch(this,"disconnect"));j.forEach(this._supportingWidgets,b);this.domNode&&j.forEach(t.findWidgets(this.domNode,this.containerNode),b);this.destroyRendering(a);t.remove(this.id);this._destroyed=!0},destroyRendering:function(d){this.bgIframe&&(this.bgIframe.destroy(d),delete this.bgIframe);this.domNode&&(d?b.remove(this.domNode,"widgetId"):a.destroy(this.domNode),delete this.domNode);this.srcNodeRef&&(d||a.destroy(this.srcNodeRef),delete this.srcNodeRef)},
-destroyDescendants:function(a){j.forEach(this.getChildren(),function(b){b.destroyRecursive&&b.destroyRecursive(a)})},uninitialize:function(){return!1},_setStyleAttr:function(a){var b=this.domNode;n.isObject(a)?d.set(b,a):b.style.cssText=b.style.cssText?b.style.cssText+("; "+a):a;this._set("style",a)},_attrToDom:function(a,d,c){c=3<=arguments.length?c:this.attributeMap[a];j.forEach(n.isArray(c)?c:[c],function(c){var g=this[c.node||c||"domNode"];switch(c.type||"attribute"){case "attribute":n.isFunction(d)&&
-(d=n.hitch(this,d));c=c.attribute?c.attribute:/^on[A-Z][a-zA-Z]*$/.test(a)?a.toLowerCase():a;g.tagName?b.set(g,c,d):g.set(c,d);break;case "innerText":g.innerHTML="";g.appendChild(this.ownerDocument.createTextNode(d));break;case "innerHTML":g.innerHTML=d;break;case "class":f.replace(g,d,this[a])}},this)},get:function(a){var b=this._getAttrNames(a);return this[b.g]?this[b.g]():this[a]},set:function(a,b){if("object"===typeof a){for(var d in a)this.set(d,a[d]);return this}d=this._getAttrNames(a);var c=
-this[d.s];if(n.isFunction(c))var f=c.apply(this,Array.prototype.slice.call(arguments,1));else{var c=this.focusNode&&!n.isFunction(this.focusNode)?"focusNode":"domNode",g=this[c].tagName,e;if(!(e=z[g])){e=this[c];var k={},m;for(m in e)k[m.toLowerCase()]=!0;e=z[g]=k}m=a in this.attributeMap?this.attributeMap[a]:d.s in this?this[d.s]:d.l in e&&"function"!=typeof b||/^aria-|^data-|^role$/.test(a)?c:null;null!=m&&this._attrToDom(a,b,m);this._set(a,b)}return f||this},_attrPairNames:{},_getAttrNames:function(a){var b=
+var m=0,n=null,o={run:function(){}};h.extend(p,{_startTimer:function(){if(!this._timer)this._timer=c.connect(o,"run",this,"_cycle"),m++;n||(n=setInterval(h.hitch(o,"run"),this.rate))},_stopTimer:function(){if(this._timer)c.disconnect(this._timer),this._timer=null,m--;0>=m&&(clearInterval(n),n=null,m=0)}});var r=i("ie")?function(a){var b=a.style;if(!b.width.length&&"auto"==g.get(a,"width"))b.width="auto"}:function(){};l._fade=function(d){d.node=b.byId(d.node);var e=a({properties:{}},d),d=e.properties.opacity=
+{};d.start=!("start"in e)?function(){return+g.get(e.node,"opacity")||0}:e.start;d.end=e.end;d=l.animateProperty(e);c.connect(d,"beforeBegin",h.partial(r,e.node));return d};l.fadeIn=function(b){return l._fade(a({end:1},b))};l.fadeOut=function(b){return l._fade(a({end:0},b))};l._defaultEasing=function(a){return 0.5+Math.sin((a+1.5)*Math.PI)/2};var q=function(a){this._properties=a;for(var b in a){var d=a[b];if(d.start instanceof e)d.tempColor=new e}};q.prototype.getValue=function(a){var b={},d;for(d in this._properties){var c=
+this._properties[d],g=c.start;g instanceof e?b[d]=e.blendColors(g,c.end,a,c.tempColor).toCss():h.isArray(g)||(b[d]=(c.end-g)*a+g+("opacity"!=d?c.units||"px":0))}return b};l.animateProperty=function(d){var l=d.node=b.byId(d.node);if(!d.easing)d.easing=f._defaultEasing;d=new p(d);c.connect(d,"beforeBegin",d,function(){var b={},d;for(d in this.properties){if("width"==d||"height"==d)this.node.display="block";var c=this.properties[d];h.isFunction(c)&&(c=c(l));c=b[d]=a({},h.isObject(c)?c:{end:c});if(h.isFunction(c.start))c.start=
+c.start(l);if(h.isFunction(c.end))c.end=c.end(l);var f=0<=d.toLowerCase().indexOf("color"),i=function(a,b){var d={height:a.offsetHeight,width:a.offsetWidth}[b];if(void 0!==d)return d;d=g.get(a,b);return"opacity"==b?+d:f?d:parseFloat(d)};if("end"in c){if(!("start"in c))c.start=i(l,d)}else c.end=i(l,d);f?(c.start=new e(c.start),c.end=new e(c.end)):c.start="opacity"==d?+c.start:parseFloat(c.start)}this.curve=new q(b)});c.connect(d,"onAnimate",h.hitch(g,"set",d.node));return d};l.anim=function(a,b,d,
+c,g,e){return l.animateProperty({node:a,duration:d||p.prototype.duration,properties:b,easing:c,onEnd:g}).play(e||0)};a(f,l);f._Animation=p;return l})},"dojox/html/entities":function(){define(["dojo/_base/lang"],function(f){var k=f.getObject("dojox.html.entities",!0),h=function(e,c){var f,b;if(c._encCache&&c._encCache.regexp&&c._encCache.mapper&&c.length==c._encCache.length)f=c._encCache.mapper,b=c._encCache.regexp;else{f={};b=["["];var g;for(g=0;g<c.length;g++)f[c[g][0]]="&"+c[g][1]+";",b.push(c[g][0]);
+b.push("]");b=RegExp(b.join(""),"g");c._encCache={mapper:f,regexp:b,length:c.length}}return e=e.replace(b,function(a){return f[a]})},j=function(e,c){var f,b;if(c._decCache&&c._decCache.regexp&&c._decCache.mapper&&c.length==c._decCache.length)f=c._decCache.mapper,b=c._decCache.regexp;else{f={};b=["("];var g;for(g=0;g<c.length;g++){var a="&"+c[g][1]+";";g&&b.push("|");f[a]=c[g][0];b.push(a)}b.push(")");b=RegExp(b.join(""),"g");c._decCache={mapper:f,regexp:b,length:c.length}}return e=e.replace(b,function(a){return f[a]})};
+k.html=[["&","amp"],['"',"quot"],["<","lt"],[">","gt"],["\u00a0","nbsp"]];k.latin=[["\u00a1","iexcl"],["\u00a2","cent"],["\u00a3","pound"],["\u20ac","euro"],["\u00a4","curren"],["\u00a5","yen"],["\u00a6","brvbar"],["\u00a7","sect"],["\u00a8","uml"],["\u00a9","copy"],["\u00aa","ordf"],["\u00ab","laquo"],["\u00ac","not"],["\u00ad","shy"],["\u00ae","reg"],["\u00af","macr"],["\u00b0","deg"],["\u00b1","plusmn"],["\u00b2","sup2"],["\u00b3","sup3"],["\u00b4","acute"],["\u00b5","micro"],["\u00b6","para"],
+["\u00b7","middot"],["\u00b8","cedil"],["\u00b9","sup1"],["\u00ba","ordm"],["\u00bb","raquo"],["\u00bc","frac14"],["\u00bd","frac12"],["\u00be","frac34"],["\u00bf","iquest"],["\u00c0","Agrave"],["\u00c1","Aacute"],["\u00c2","Acirc"],["\u00c3","Atilde"],["\u00c4","Auml"],["\u00c5","Aring"],["\u00c6","AElig"],["\u00c7","Ccedil"],["\u00c8","Egrave"],["\u00c9","Eacute"],["\u00ca","Ecirc"],["\u00cb","Euml"],["\u00cc","Igrave"],["\u00cd","Iacute"],["\u00ce","Icirc"],["\u00cf","Iuml"],["\u00d0","ETH"],["\u00d1",
+"Ntilde"],["\u00d2","Ograve"],["\u00d3","Oacute"],["\u00d4","Ocirc"],["\u00d5","Otilde"],["\u00d6","Ouml"],["\u00d7","times"],["\u00d8","Oslash"],["\u00d9","Ugrave"],["\u00da","Uacute"],["\u00db","Ucirc"],["\u00dc","Uuml"],["\u00dd","Yacute"],["\u00de","THORN"],["\u00df","szlig"],["\u00e0","agrave"],["\u00e1","aacute"],["\u00e2","acirc"],["\u00e3","atilde"],["\u00e4","auml"],["\u00e5","aring"],["\u00e6","aelig"],["\u00e7","ccedil"],["\u00e8","egrave"],["\u00e9","eacute"],["\u00ea","ecirc"],["\u00eb",
+"euml"],["\u00ec","igrave"],["\u00ed","iacute"],["\u00ee","icirc"],["\u00ef","iuml"],["\u00f0","eth"],["\u00f1","ntilde"],["\u00f2","ograve"],["\u00f3","oacute"],["\u00f4","ocirc"],["\u00f5","otilde"],["\u00f6","ouml"],["\u00f7","divide"],["\u00f8","oslash"],["\u00f9","ugrave"],["\u00fa","uacute"],["\u00fb","ucirc"],["\u00fc","uuml"],["\u00fd","yacute"],["\u00fe","thorn"],["\u00ff","yuml"],["\u0192","fnof"],["\u0391","Alpha"],["\u0392","Beta"],["\u0393","Gamma"],["\u0394","Delta"],["\u0395","Epsilon"],
+["\u0396","Zeta"],["\u0397","Eta"],["\u0398","Theta"],["\u0399","Iota"],["\u039a","Kappa"],["\u039b","Lambda"],["\u039c","Mu"],["\u039d","Nu"],["\u039e","Xi"],["\u039f","Omicron"],["\u03a0","Pi"],["\u03a1","Rho"],["\u03a3","Sigma"],["\u03a4","Tau"],["\u03a5","Upsilon"],["\u03a6","Phi"],["\u03a7","Chi"],["\u03a8","Psi"],["\u03a9","Omega"],["\u03b1","alpha"],["\u03b2","beta"],["\u03b3","gamma"],["\u03b4","delta"],["\u03b5","epsilon"],["\u03b6","zeta"],["\u03b7","eta"],["\u03b8","theta"],["\u03b9","iota"],
+["\u03ba","kappa"],["\u03bb","lambda"],["\u03bc","mu"],["\u03bd","nu"],["\u03be","xi"],["\u03bf","omicron"],["\u03c0","pi"],["\u03c1","rho"],["\u03c2","sigmaf"],["\u03c3","sigma"],["\u03c4","tau"],["\u03c5","upsilon"],["\u03c6","phi"],["\u03c7","chi"],["\u03c8","psi"],["\u03c9","omega"],["\u03d1","thetasym"],["\u03d2","upsih"],["\u03d6","piv"],["\u2022","bull"],["\u2026","hellip"],["\u2032","prime"],["\u2033","Prime"],["\u203e","oline"],["\u2044","frasl"],["\u2118","weierp"],["\u2111","image"],["\u211c",
+"real"],["\u2122","trade"],["\u2135","alefsym"],["\u2190","larr"],["\u2191","uarr"],["\u2192","rarr"],["\u2193","darr"],["\u2194","harr"],["\u21b5","crarr"],["\u21d0","lArr"],["\u21d1","uArr"],["\u21d2","rArr"],["\u21d3","dArr"],["\u21d4","hArr"],["\u2200","forall"],["\u2202","part"],["\u2203","exist"],["\u2205","empty"],["\u2207","nabla"],["\u2208","isin"],["\u2209","notin"],["\u220b","ni"],["\u220f","prod"],["\u2211","sum"],["\u2212","minus"],["\u2217","lowast"],["\u221a","radic"],["\u221d","prop"],
+["\u221e","infin"],["\u2220","ang"],["\u2227","and"],["\u2228","or"],["\u2229","cap"],["\u222a","cup"],["\u222b","int"],["\u2234","there4"],["\u223c","sim"],["\u2245","cong"],["\u2248","asymp"],["\u2260","ne"],["\u2261","equiv"],["\u2264","le"],["\u2265","ge"],["\u2282","sub"],["\u2283","sup"],["\u2284","nsub"],["\u2286","sube"],["\u2287","supe"],["\u2295","oplus"],["\u2297","otimes"],["\u22a5","perp"],["\u22c5","sdot"],["\u2308","lceil"],["\u2309","rceil"],["\u230a","lfloor"],["\u230b","rfloor"],
+["\u2329","lang"],["\u232a","rang"],["\u25ca","loz"],["\u2660","spades"],["\u2663","clubs"],["\u2665","hearts"],["\u2666","diams"],["\u0152","Elig"],["\u0153","oelig"],["\u0160","Scaron"],["\u0161","scaron"],["\u0178","Yuml"],["\u02c6","circ"],["\u02dc","tilde"],["\u2002","ensp"],["\u2003","emsp"],["\u2009","thinsp"],["\u200c","zwnj"],["\u200d","zwj"],["\u200e","lrm"],["\u200f","rlm"],["\u2013","ndash"],["\u2014","mdash"],["\u2018","lsquo"],["\u2019","rsquo"],["\u201a","sbquo"],["\u201c","ldquo"],
+["\u201d","rdquo"],["\u201e","bdquo"],["\u2020","dagger"],["\u2021","Dagger"],["\u2030","permil"],["\u2039","lsaquo"],["\u203a","rsaquo"]];k.encode=function(e,c){e&&(c?e=h(e,c):(e=h(e,k.html),e=h(e,k.latin)));return e};k.decode=function(e,c){e&&(c?e=j(e,c):(e=j(e,k.html),e=j(e,k.latin)));return e};return k})},"dijit/layout/BorderContainer":function(){define("dojo/_base/array,dojo/cookie,dojo/_base/declare,dojo/dom-class,dojo/dom-construct,dojo/dom-geometry,dojo/dom-style,dojo/_base/event,dojo/keys,dojo/_base/lang,dojo/on,dojo/touch,../_WidgetBase,../_Widget,../_TemplatedMixin,./_LayoutWidget,./utils".split(","),
+function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o,r){var q=h("dijit.layout._Splitter",[m,n],{live:!0,templateString:'<div class="dijitSplitter" data-dojo-attach-event="onkeypress:_onKeyPress,press:_startDrag,onmouseenter:_onMouse,onmouseleave:_onMouse" tabIndex="0" role="separator"><div class="dijitSplitterThumb"></div></div>',constructor:function(){this._handlers=[]},postMixInProperties:function(){this.inherited(arguments);this.horizontal=/top|bottom/.test(this.region);this._factor=/top|left/.test(this.region)?
+1:-1;this._cookieName=this.container.id+"_"+this.region},buildRendering:function(){this.inherited(arguments);j.add(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V"));if(this.container.persist){var a=k(this._cookieName);a&&(this.child.domNode.style[this.horizontal?"height":"width"]=a)}},_computeMaxSize:function(){var a=this.horizontal?"h":"w",b=c.getMarginBox(this.child.domNode)[a],d=f.filter(this.container.getChildren(),function(a){return"center"==a.region})[0],a=c.getMarginBox(d.domNode)[a];
+return Math.min(this.child.maxSize,b+a)},_startDrag:function(g){if(!this.cover)this.cover=e.place("<div class=dijitSplitterCover></div>",this.child.domNode,"after");j.add(this.cover,"dijitSplitterCoverActive");this.fake&&e.destroy(this.fake);if(!(this._resize=this.live))(this.fake=this.domNode.cloneNode(!0)).removeAttribute("id"),j.add(this.domNode,"dijitSplitterShadow"),e.place(this.fake,this.domNode,"after");j.add(this.domNode,"dijitSplitterActive dijitSplitter"+(this.horizontal?"H":"V")+"Active");
+this.fake&&j.remove(this.fake,"dijitSplitterHover dijitSplitter"+(this.horizontal?"H":"V")+"Hover");var f=this._factor,i=this.horizontal,m=i?"pageY":"pageX",h=g[m],k=this.domNode.style,o=c.getMarginBox(this.child.domNode)[i?"h":"w"],n=this._computeMaxSize(),p=this.child.minSize||20,i=this.region,q="top"==i||"bottom"==i?"top":"left",r=parseInt(k[q],10),v=this._resize,A=a.hitch(this.container,"_layoutChildren",this.child.id),i=this.ownerDocument;this._handlers=this._handlers.concat([l(i,d.move,this._drag=
+function(a,b){var d=a[m]-h,c=f*d+o,g=Math.max(Math.min(c,n),p);(v||b)&&A(g);k[q]=d+r+f*(g-c)+"px"}),l(i,"dragstart",b.stop),l(this.ownerDocumentBody,"selectstart",b.stop),l(i,d.release,a.hitch(this,"_stopDrag"))]);b.stop(g)},_onMouse:function(a){a="mouseover"==a.type||"mouseenter"==a.type;j.toggle(this.domNode,"dijitSplitterHover",a);j.toggle(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V")+"Hover",a)},_stopDrag:function(a){try{this.cover&&j.remove(this.cover,"dijitSplitterCoverActive"),this.fake&&
+e.destroy(this.fake),j.remove(this.domNode,"dijitSplitterActive dijitSplitter"+(this.horizontal?"H":"V")+"Active dijitSplitterShadow"),this._drag(a),this._drag(a,!0)}finally{this._cleanupHandlers(),delete this._drag}this.container.persist&&k(this._cookieName,this.child.domNode.style[this.horizontal?"height":"width"],{expires:365})},_cleanupHandlers:function(){for(var a;a=this._handlers.pop();)a.remove()},_onKeyPress:function(a){this._resize=!0;var d=this.horizontal,e=1;switch(a.charOrCode){case d?
+g.UP_ARROW:g.LEFT_ARROW:e*=-1;case d?g.DOWN_ARROW:g.RIGHT_ARROW:break;default:return}d=c.getMarginSize(this.child.domNode)[d?"h":"w"]+this._factor*e;this.container._layoutChildren(this.child.id,Math.max(Math.min(d,this._computeMaxSize()),this.child.minSize));b.stop(a)},destroy:function(){this._cleanupHandlers();delete this.child;delete this.container;delete this.cover;delete this.fake;this.inherited(arguments)}}),v=h("dijit.layout._Gutter",[m,n],{templateString:'<div class="dijitGutter" role="presentation"></div>',
+postMixInProperties:function(){this.inherited(arguments);this.horizontal=/top|bottom/.test(this.region)},buildRendering:function(){this.inherited(arguments);j.add(this.domNode,"dijitGutter"+(this.horizontal?"H":"V"))}}),h=h("dijit.layout.BorderContainer",o,{design:"headline",gutters:!0,liveSplitters:!0,persist:!1,baseClass:"dijitBorderContainer",_splitterClass:q,postMixInProperties:function(){this.gutters||(this.baseClass+="NoGutter");this.inherited(arguments)},startup:function(){this._started||(f.forEach(this.getChildren(),
+this._setupChild,this),this.inherited(arguments))},_setupChild:function(b){var d=b.region;if(d){this.inherited(arguments);j.add(b.domNode,this.baseClass+"Pane");var c=this.isLeftToRight();"leading"==d&&(d=c?"left":"right");"trailing"==d&&(d=c?"right":"left");if("center"!=d&&(b.splitter||this.gutters)&&!b._splitterWidget)c=b.splitter?this._splitterClass:v,a.isString(c)&&(c=a.getObject(c)),c=new c({id:b.id+"_splitter",container:this,child:b,region:d,live:this.liveSplitters}),c.isSplitter=!0,b._splitterWidget=
+c,e.place(c.domNode,b.domNode,"after"),c.startup();b.region=d}},layout:function(){this._layoutChildren()},addChild:function(a,b){this.inherited(arguments);this._started&&this.layout()},removeChild:function(a){var b=a.region,d=a._splitterWidget;d&&(d.destroy(),delete a._splitterWidget);this.inherited(arguments);this._started&&this._layoutChildren();j.remove(a.domNode,this.baseClass+"Pane");i.set(a.domNode,{top:"auto",bottom:"auto",left:"auto",right:"auto",position:"static"});i.set(a.domNode,"top"==
+b||"bottom"==b?"width":"height","auto")},getChildren:function(){return f.filter(this.inherited(arguments),function(a){return!a.isSplitter})},getSplitter:function(a){return f.filter(this.getChildren(),function(b){return b.region==a})[0]._splitterWidget},resize:function(a,b){if(!this.cs||!this.pe){var d=this.domNode;this.cs=i.getComputedStyle(d);this.pe=c.getPadExtents(d,this.cs);this.pe.r=i.toPixelValue(d,this.cs.paddingRight);this.pe.b=i.toPixelValue(d,this.cs.paddingBottom);i.set(d,"padding","0px")}this.inherited(arguments)},
+_layoutChildren:function(a,b){if(this._borderBox&&this._borderBox.h){var d=f.map(this.getChildren(),function(a,b){return{pane:a,weight:["center"==a.region?Infinity:0,a.layoutPriority,("sidebar"==this.design?1:-1)*(/top|bottom/.test(a.region)?1:-1),b]}},this);d.sort(function(a,b){for(var d=a.weight,c=b.weight,g=0;g<d.length;g++)if(d[g]!=c[g])return d[g]-c[g];return 0});var c=[];f.forEach(d,function(a){a=a.pane;c.push(a);a._splitterWidget&&c.push(a._splitterWidget)});r.layoutChildren(this.domNode,{l:this.pe.l,
+t:this.pe.t,w:this._borderBox.w-this.pe.w,h:this._borderBox.h-this.pe.h},c,a,b)}},destroyRecursive:function(){f.forEach(this.getChildren(),function(a){var b=a._splitterWidget;b&&b.destroy();delete a._splitterWidget});this.inherited(arguments)}});h.ChildWidgetProperties={region:"",layoutPriority:0,splitter:!1,minSize:0,maxSize:Infinity};a.extend(p,h.ChildWidgetProperties);h._Splitter=q;h._Gutter=v;return h})},"dojo/cookie":function(){define("dojo/cookie",["./_base/kernel","./regexp"],function(f,k){f.cookie=
+function(f,j,e){var c=document.cookie,i;if(1==arguments.length)i=(i=c.match(RegExp("(?:^|; )"+k.escapeString(f)+"=([^;]*)")))?decodeURIComponent(i[1]):void 0;else{e=e||{};c=e.expires;if("number"==typeof c){var b=new Date;b.setTime(b.getTime()+864E5*c);c=e.expires=b}if(c&&c.toUTCString)e.expires=c.toUTCString();var j=encodeURIComponent(j),c=f+"="+j,g;for(g in e)c+="; "+g,b=e[g],!0!==b&&(c+="="+b);document.cookie=c}return i};f.cookie.isSupported=function(){if(!("cookieEnabled"in navigator))this("__djCookieTest__",
+"CookiesAllowed"),navigator.cookieEnabled="CookiesAllowed"==this("__djCookieTest__"),navigator.cookieEnabled&&this("__djCookieTest__","",{expires:-1});return navigator.cookieEnabled};return f.cookie})},"dojo/regexp":function(){define(["./_base/kernel","./_base/lang"],function(f,k){var h={};k.setObject("dojo.regexp",h);h.escapeString=function(f,e){return f.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,function(c){return e&&-1!=e.indexOf(c)?c:"\\"+c})};h.buildGroupRE=function(f,e,c){if(!(f instanceof Array))return e(f);
+for(var i=[],b=0;b<f.length;b++)i.push(e(f[b]));return h.group(i.join("|"),c)};h.group=function(f,e){return"("+(e?"?:":"")+f+")"};return h})},"dojo/touch":function(){define("./_base/kernel,./_base/lang,./aspect,./dom,./on,./has,./mouse,./ready,./_base/window".split(","),function(f,k,h,j,e,c,i,b,g){function a(a){return function(b,d){return e(b,a,d)}}var h=c("touch"),l=!1;c("ios")&&(c=navigator.userAgent.match(/OS ([\d_]+)/)?RegExp.$1:"1",l=5>parseFloat(c.replace(/_/,".").replace(/_/g,"")));var d,p;
+h&&(b(function(){p=g.body();g.doc.addEventListener("touchstart",function(a){var b=p;p=a.target;e.emit(b,"dojotouchout",{target:b,relatedTarget:p,bubbles:!0});e.emit(p,"dojotouchover",{target:p,relatedTarget:b,bubbles:!0})},!0);e(g.doc,"touchmove",function(a){if((a=g.doc.elementFromPoint(a.pageX-(l?0:g.global.pageXOffset),a.pageY-(l?0:g.global.pageYOffset)))&&p!==a)e.emit(p,"dojotouchout",{target:p,relatedTarget:a,bubbles:!0}),e.emit(a,"dojotouchover",{target:a,relatedTarget:p,bubbles:!0}),p=a})}),
+d=function(a,b){return e(g.doc,"touchmove",function(d){(a===g.doc||j.isDescendant(p,a))&&b.call(this,k.mixin({},d,{target:p,touches:d.touches,preventDefault:function(){d.preventDefault()},stopPropagation:function(){d.stopPropagation()}}))})});i={press:a(h?"touchstart":"mousedown"),move:h?d:a("mousemove"),release:a(h?"touchend":"mouseup"),cancel:h?a("touchcancel"):i.leave,over:a(h?"dojotouchover":"mouseover"),out:a(h?"dojotouchout":"mouseout"),enter:i._eventHandler(h?"dojotouchover":"mouseover"),leave:i._eventHandler(h?
+"dojotouchout":"mouseout")};return f.touch=i})},"dijit/_WidgetBase":function(){define("require,dojo/_base/array,dojo/aspect,dojo/_base/config,dojo/_base/connect,dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-class,dojo/dom-construct,dojo/dom-geometry,dojo/dom-style,dojo/has,dojo/_base/kernel,dojo/_base/lang,dojo/on,dojo/ready,dojo/Stateful,dojo/topic,dojo/_base/window,./Destroyable,./registry".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o,r,q,v,s,t,u){function y(a){return function(d){b[d?
+"set":"remove"](this.domNode,a,d);this._set(a,d)}}p.add("dijit-legacy-requires",!m.isAsync);p("dijit-legacy-requires")&&r(0,function(){f(["dijit/_base/manager"])});var z={};return c("dijit._WidgetBase",[q,t],{id:"",_setIdAttr:"domNode",lang:"",_setLangAttr:y("lang"),dir:"",_setDirAttr:y("dir"),textDir:"","class":"",_setClassAttr:{node:"domNode",type:"class"},style:"",title:"",tooltip:"",baseClass:"",srcNodeRef:null,domNode:null,containerNode:null,ownerDocument:null,_setOwnerDocumentAttr:function(a){this._set("ownerDocument",
+a)},attributeMap:{},_blankGif:j.blankGif||f.toUrl("dojo/resources/blank.gif"),postscript:function(a,b){this.create(a,b)},create:function(a,b){this.srcNodeRef=i.byId(b);this._connects=[];this._supportingWidgets=[];if(this.srcNodeRef&&"string"==typeof this.srcNodeRef.id)this.id=this.srcNodeRef.id;if(a)this.params=a,n.mixin(this,a);this.postMixInProperties();if(!this.id)this.id=u.getUniqueId(this.declaredClass.replace(/\./g,"_")),this.params&&delete this.params.id;this.ownerDocument=this.ownerDocument||
+(this.srcNodeRef?this.srcNodeRef.ownerDocument:s.doc);this.ownerDocumentBody=s.body(this.ownerDocument);u.add(this);this.buildRendering();var d;if(this.domNode){this._applyAttributes();var c=this.srcNodeRef;c&&c.parentNode&&this.domNode!==c&&(c.parentNode.replaceChild(this.domNode,c),d=!0);this.domNode.setAttribute("widgetId",this.id)}this.postCreate();d&&delete this.srcNodeRef;this._created=!0},_applyAttributes:function(){var a=this.constructor,b=a._setterAttrs;if(!b){var b=a._setterAttrs=[],d;for(d in this.attributeMap)b.push(d);
+var a=a.prototype,c;for(c in a)c in this.attributeMap||"_set"+c.replace(/^[a-z]|-[a-zA-Z]/g,function(a){return a.charAt(a.length-1).toUpperCase()})+"Attr"in a&&b.push(c)}var g={},e;for(e in this.params||{})g[e]=this[e];k.forEach(b,function(a){a in g||this[a]&&this.set(a,this[a])},this);for(e in g)this.set(e,g[e])},postMixInProperties:function(){},buildRendering:function(){if(!this.domNode)this.domNode=this.srcNodeRef||this.ownerDocument.createElement("div");if(this.baseClass){var a=this.baseClass.split(" ");
+this.isLeftToRight()||(a=a.concat(k.map(a,function(a){return a+"Rtl"})));g.add(this.domNode,a)}},postCreate:function(){},startup:function(){if(!this._started)this._started=!0,k.forEach(this.getChildren(),function(a){if(!a._started&&!a._destroyed&&n.isFunction(a.startup))a.startup(),a._started=!0})},destroyRecursive:function(a){this._beingDestroyed=!0;this.destroyDescendants(a);this.destroy(a)},destroy:function(a){function b(d){d.destroyRecursive?d.destroyRecursive(a):d.destroy&&d.destroy(a)}this._beingDestroyed=
+!0;this.uninitialize();k.forEach(this._connects,n.hitch(this,"disconnect"));k.forEach(this._supportingWidgets,b);this.domNode&&k.forEach(u.findWidgets(this.domNode,this.containerNode),b);this.destroyRendering(a);u.remove(this.id);this._destroyed=!0},destroyRendering:function(d){this.bgIframe&&(this.bgIframe.destroy(d),delete this.bgIframe);this.domNode&&(d?b.remove(this.domNode,"widgetId"):a.destroy(this.domNode),delete this.domNode);this.srcNodeRef&&(d||a.destroy(this.srcNodeRef),delete this.srcNodeRef)},
+destroyDescendants:function(a){k.forEach(this.getChildren(),function(b){b.destroyRecursive&&b.destroyRecursive(a)})},uninitialize:function(){return!1},_setStyleAttr:function(a){var b=this.domNode;n.isObject(a)?d.set(b,a):b.style.cssText=b.style.cssText?b.style.cssText+("; "+a):a;this._set("style",a)},_attrToDom:function(a,d,c){c=3<=arguments.length?c:this.attributeMap[a];k.forEach(n.isArray(c)?c:[c],function(c){var e=this[c.node||c||"domNode"];switch(c.type||"attribute"){case "attribute":n.isFunction(d)&&
+(d=n.hitch(this,d));c=c.attribute?c.attribute:/^on[A-Z][a-zA-Z]*$/.test(a)?a.toLowerCase():a;e.tagName?b.set(e,c,d):e.set(c,d);break;case "innerText":e.innerHTML="";e.appendChild(this.ownerDocument.createTextNode(d));break;case "innerHTML":e.innerHTML=d;break;case "class":g.replace(e,d,this[a])}},this)},get:function(a){var b=this._getAttrNames(a);return this[b.g]?this[b.g]():this[a]},set:function(a,b){if("object"===typeof a){for(var d in a)this.set(d,a[d]);return this}d=this._getAttrNames(a);var c=
+this[d.s];if(n.isFunction(c))var g=c.apply(this,Array.prototype.slice.call(arguments,1));else{var c=this.focusNode&&!n.isFunction(this.focusNode)?"focusNode":"domNode",e=this[c].tagName,f;if(!(f=z[e])){f=this[c];var l={},i;for(i in f)l[i.toLowerCase()]=!0;f=z[e]=l}i=a in this.attributeMap?this.attributeMap[a]:d.s in this?this[d.s]:d.l in f&&"function"!=typeof b||/^aria-|^data-|^role$/.test(a)?c:null;null!=i&&this._attrToDom(a,b,i);this._set(a,b)}return g||this},_attrPairNames:{},_getAttrNames:function(a){var b=
this._attrPairNames;if(b[a])return b[a];var d=a.replace(/^[a-z]|-[a-zA-Z]/g,function(a){return a.charAt(a.length-1).toUpperCase()});return b[a]={n:a+"Node",s:"_set"+d+"Attr",g:"_get"+d+"Attr",l:d.toLowerCase()}},_set:function(a,b){var d=this[a];this[a]=b;this._created&&b!==d&&(this._watchCallbacks&&this._watchCallbacks(a,d,b),this.emit("attrmodified-"+a,{detail:{prevValue:d,newValue:b}}))},emit:function(a,b,d){b=b||{};if(void 0===b.bubbles)b.bubbles=!0;if(void 0===b.cancelable)b.cancelable=!0;if(!b.detail)b.detail=
-{};b.detail.widget=this;var c,f=this["on"+a];f&&(c=f.apply(this,d?d:[b]));this._started&&!this._beingDestroyed&&o.emit(this.domNode,a.toLowerCase(),b);return c},on:function(a,b){var d=this._onMap(a);return d?i.after(this,d,b,!0):this.own(o(this.domNode,a,b))[0]},_onMap:function(a){var b=this.constructor,d=b._onMap;if(!d){var d=b._onMap={},c;for(c in b.prototype)/^on/.test(c)&&(d[c.replace(/^on/,"").toLowerCase()]=c)}return d["string"==typeof a&&a.toLowerCase()]},toString:function(){return"[Widget "+
-this.declaredClass+", "+(this.id||"NO ID")+"]"},getChildren:function(){return this.containerNode?t.findWidgets(this.containerNode):[]},getParent:function(){return t.getEnclosingWidget(this.domNode.parentNode)},connect:function(a,b,d){return this.own(c.connect(a,b,this,d))[0]},disconnect:function(a){a.remove()},subscribe:function(a,b){return this.own(v.subscribe(a,n.hitch(this,b)))[0]},unsubscribe:function(a){a.remove()},isLeftToRight:function(){return this.dir?"ltr"==this.dir:k.isBodyLtr(this.ownerDocument)},
-isFocusable:function(){return this.focus&&"none"!=d.get(this.domNode,"display")},placeAt:function(b,d){var c=!b.tagName&&t.byId(b);c&&c.addChild&&(!d||"number"===typeof d)?c.addChild(this,d):(c=c?c.containerNode&&!/after|before|replace/.test(d||"")?c.containerNode:c.domNode:h.byId(b,this.ownerDocument),a.place(this.domNode,c,d),!this._started&&(this.getParent()||{})._started&&this.startup());return this},getTextDir:function(a,b){return b},applyTextDir:function(){},defer:function(a,b){var d=setTimeout(n.hitch(this,
-function(){d=null;this._destroyed||n.hitch(this,a)()}),b||0);return{remove:function(){d&&(clearTimeout(d),d=null);return null}}}})})},"dojo/Stateful":function(){define("dojo/Stateful",["./_base/declare","./_base/lang","./_base/array","dojo/when"],function(e,j,i,l){return e("dojo.Stateful",null,{_attrPairNames:{},_getAttrNames:function(c){var g=this._attrPairNames;return g[c]?g[c]:g[c]={s:"_"+c+"Setter",g:"_"+c+"Getter"}},postscript:function(c){c&&this.set(c)},_get:function(c,g){return"function"===
-typeof this[g.g]?this[g.g]():this[c]},get:function(c){return this._get(c,this._getAttrNames(c))},set:function(c,g){if("object"===typeof c){for(var e in c)c.hasOwnProperty(e)&&"_watchCallbacks"!=e&&this.set(e,c[e]);return this}e=this._getAttrNames(c);var b=this._get(c,e);e=this[e.s];var f;"function"===typeof e?f=e.apply(this,Array.prototype.slice.call(arguments,1)):this[c]=g;if(this._watchCallbacks){var a=this;l(f,function(){a._watchCallbacks(c,b,g)})}return this},_changeAttrValue:function(c,g){var e=
-this.get(c);this[c]=g;this._watchCallbacks&&this._watchCallbacks(c,e,g);return this},watch:function(c,g){var e=this._watchCallbacks;if(!e)var b=this,e=this._watchCallbacks=function(a,d,c,f){var g=function(f){if(f)for(var f=f.slice(),g=0,e=f.length;g<e;g++)f[g].call(b,a,d,c)};g(e["_"+a]);f||g(e["*"])};!g&&"function"===typeof c?(g=c,c="*"):c="_"+c;var f=e[c];"object"!==typeof f&&(f=e[c]=[]);f.push(g);var a={};a.unwatch=a.remove=function(){var a=i.indexOf(f,g);-1<a&&f.splice(a,1)};return a}})})},"dijit/Destroyable":function(){define(["dojo/_base/array",
-"dojo/aspect","dojo/_base/declare"],function(e,j,i){return i("dijit.Destroyable",null,{destroy:function(){this._destroyed=!0},own:function(){e.forEach(arguments,function(e){var c="destroyRecursive"in e?"destroyRecursive":"destroy"in e?"destroy":"remove",g=j.before(this,"destroy",function(g){e[c](g)});j.after(e,c,function(){g.remove()},!0)},this);return arguments}})})},"dijit/registry":function(){define(["dojo/_base/array","dojo/sniff","dojo/_base/unload","dojo/_base/window","./main"],function(e,j,
-i,l,c){var g={},h={},b={length:0,add:function(b){if(h[b.id])throw Error("Tried to register widget with id=="+b.id+" but that id is already registered");h[b.id]=b;this.length++},remove:function(b){h[b]&&(delete h[b],this.length--)},byId:function(b){return"string"==typeof b?h[b]:b},byNode:function(b){return h[b.getAttribute("widgetId")]},toArray:function(){var b=[],a;for(a in h)b.push(h[a]);return b},getUniqueId:function(b){var a;do a=b+"_"+(b in g?++g[b]:g[b]=0);while(h[a]);return"dijit"==c._scopeName?
-a:c._scopeName+"_"+a},findWidgets:function(b,a){function c(b){for(b=b.firstChild;b;b=b.nextSibling)if(1==b.nodeType){var f=b.getAttribute("widgetId");f?(f=h[f])&&d.push(f):b!==a&&c(b)}}var d=[];c(b);return d},_destroyAll:function(){c._curFocus=null;c._prevFocus=null;c._activeStack=[];e.forEach(b.findWidgets(l.body()),function(b){b._destroyed||(b.destroyRecursive?b.destroyRecursive():b.destroy&&b.destroy())})},getEnclosingWidget:function(b){for(;b;){var a=b.getAttribute&&b.getAttribute("widgetId");
-if(a)return h[a];b=b.parentNode}return null},_hash:h};return c.registry=b})},"dijit/main":function(){define(["dojo/_base/kernel"],function(e){return e.dijit})},"dijit/_Widget":function(){define("dojo/aspect,dojo/_base/config,dojo/_base/connect,dojo/_base/declare,dojo/has,dojo/_base/kernel,dojo/_base/lang,dojo/query,dojo/ready,./registry,./_WidgetBase,./_OnDijitClickMixin,./_FocusMixin,dojo/uacss,./hccss".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p){function m(){}function n(a){return function(b,
-d,c,f){return b&&"string"==typeof d&&b[d]==m?b.on(d.substring(2).toLowerCase(),h.hitch(c,f)):a.apply(i,arguments)}}e.around(i,"connect",n);g.connect&&e.around(g,"connect",n);e=l("dijit._Widget",[k,d,p],{onClick:m,onDblClick:m,onKeyDown:m,onKeyPress:m,onKeyUp:m,onMouseDown:m,onMouseMove:m,onMouseOut:m,onMouseOver:m,onMouseLeave:m,onMouseEnter:m,onMouseUp:m,constructor:function(a){this._toConnect={};for(var b in a)this[b]===m&&(this._toConnect[b.replace(/^on/,"").toLowerCase()]=a[b],delete a[b])},postCreate:function(){this.inherited(arguments);
-for(var a in this._toConnect)this.on(a,this._toConnect[a]);delete this._toConnect},on:function(a,b){return this[this._onMap(a)]===m?i.connect(this.domNode,a.toLowerCase(),this,b):this.inherited(arguments)},_setFocusedAttr:function(a){this._focused=a;this._set("focused",a)},setAttribute:function(a,b){g.deprecated(this.declaredClass+"::setAttribute(attr, value) is deprecated. Use set() instead.","","2.0");this.set(a,b)},attr:function(a,b){if(j.isDebug){var d=arguments.callee._ach||(arguments.callee._ach=
-{}),c=(arguments.callee.caller||"unknown caller").toString();d[c]||(g.deprecated(this.declaredClass+"::attr() is deprecated. Use get() or set() instead, called from "+c,"","2.0"),d[c]=!0)}return 2<=arguments.length||"object"===typeof a?this.set.apply(this,arguments):this.get(a)},getDescendants:function(){g.deprecated(this.declaredClass+"::getDescendants() is deprecated. Use getChildren() instead.","","2.0");return this.containerNode?b("[widgetId]",this.containerNode).map(a.byNode):[]},_onShow:function(){this.onShow()},
-onShow:function(){},onHide:function(){},onClose:function(){return!0}});c("dijit-legacy-requires")&&f(0,function(){require(["dijit/_base"])});return e})},"dijit/_OnDijitClickMixin":function(){define("dojo/on,dojo/_base/array,dojo/keys,dojo/_base/declare,dojo/has,dojo/_base/unload,dojo/_base/window,./a11yclick".split(","),function(e,j,i,l,c,g,h,b){e=l("dijit._OnDijitClickMixin",null,{connect:function(c,a,g){return this.inherited(arguments,[c,"ondijitclick"==a?b:a,g])}});e.a11yclick=b;return e})},"dijit/a11yclick":function(){define("dojo/on,dojo/_base/array,dojo/keys,dojo/_base/declare,dojo/has,dojo/_base/unload,dojo/_base/window".split(","),
-function(e,j,i,l,c,g,h){function b(a){return(a.keyCode===i.ENTER||a.keyCode===i.SPACE)&&!a.ctrlKey&&!a.shiftKey&&!a.altKey&&!a.metaKey}var f=null;c("dom-addeventlistener")?h.doc.addEventListener("keydown",function(a){f=a.target},!0):function(){var a=function(a){f=a.srcElement};h.doc.attachEvent("onkeydown",a);g.addOnWindowUnload(function(){h.doc.detachEvent("onkeydown",a)})}();return function(a,g){if(/input|button/i.test(a.nodeName))return e(a,"click",g);var d=[e(a,"keydown",function(a){if(b(a))f=
-a.target,a.preventDefault()}),e(a,"keyup",function(a){b(a)&&a.target==f&&(f=null,e.emit(a.target,"click",{cancelable:!0,bubbles:!0}))}),e(a,"click",function(a){g.call(this,a)})];if(c("touch")){var h;d.push(e(a,"touchend",function(a){var b=a.target;h=setTimeout(function(){h=null;e.emit(b,"click",{cancelable:!0,bubbles:!0})},600)}),e(a,"click",function(){h&&clearTimeout(h)}))}return{remove:function(){j.forEach(d,function(a){a.remove()});h&&(clearTimeout(h),h=null)}}}})},"dijit/_FocusMixin":function(){define(["./focus",
-"./_WidgetBase","dojo/_base/declare","dojo/_base/lang"],function(e,j,i,l){l.extend(j,{focused:!1,onFocus:function(){},onBlur:function(){},_onFocus:function(){this.onFocus()},_onBlur:function(){this.onBlur()}});return i("dijit._FocusMixin",null,{_focusManager:e})})},"dijit/focus":function(){define("dojo/aspect,dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-construct,dojo/Evented,dojo/_base/lang,dojo/on,dojo/ready,dojo/sniff,dojo/Stateful,dojo/_base/unload,dojo/_base/window,dojo/window,./a11y,./registry,./main".split(","),
-function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o,r){var q=new (j([k,g],{curNode:null,activeStack:[],constructor:function(){var a=h.hitch(this,function(a){i.isDescendant(this.curNode,a)&&this.set("curNode",null);i.isDescendant(this.prevNode,a)&&this.set("prevNode",null)});e.before(c,"empty",a);e.before(c,"destroy",a)},registerIframe:function(a){return this.registerWin(a.contentWindow,a)},registerWin:function(b,d){var c=this,f=function(b){c._justMouseDowned=!0;setTimeout(function(){c._justMouseDowned=!1},0);
-if(!a("ie")||!b||!(b.srcElement&&null==b.srcElement.parentNode))c._onTouchNode(d||b.target||b.srcElement,"mouse")},g=a("ie")?b.document.documentElement:b.document;if(g){if(a("ie")){b.document.body.attachEvent("onmousedown",f);var e=function(a){var b=a.srcElement.tagName.toLowerCase();"#document"==b||"body"==b||(n.isTabNavigable(a.srcElement)?c._onFocusNode(d||a.srcElement):c._onTouchNode(d||a.srcElement))};g.attachEvent("onfocusin",e);var k=function(a){c._onBlurNode(d||a.srcElement)};g.attachEvent("onfocusout",
-k);return{remove:function(){b.document.detachEvent("onmousedown",f);g.detachEvent("onfocusin",e);g.detachEvent("onfocusout",k);g=null}}}g.body.addEventListener("mousedown",f,!0);g.body.addEventListener("touchstart",f,!0);var m=function(a){c._onFocusNode(d||a.target)};g.addEventListener("focus",m,!0);var h=function(a){c._onBlurNode(d||a.target)};g.addEventListener("blur",h,!0);return{remove:function(){g.body.removeEventListener("mousedown",f,!0);g.body.removeEventListener("touchstart",f,!0);g.removeEventListener("focus",
-m,!0);g.removeEventListener("blur",h,!0);g=null}}}},_onBlurNode:function(){this._clearFocusTimer&&clearTimeout(this._clearFocusTimer);this._clearFocusTimer=setTimeout(h.hitch(this,function(){this.set("prevNode",this.curNode);this.set("curNode",null)}),0);if(!this._justMouseDowned)this._clearActiveWidgetsTimer&&clearTimeout(this._clearActiveWidgetsTimer),this._clearActiveWidgetsTimer=setTimeout(h.hitch(this,function(){delete this._clearActiveWidgetsTimer;this._setStack([])}),0)},_onTouchNode:function(a,
-b){this._clearActiveWidgetsTimer&&(clearTimeout(this._clearActiveWidgetsTimer),delete this._clearActiveWidgetsTimer);var d=[];try{for(;a;){var c=l.get(a,"dijitPopupParent");if(c)a=o.byId(c).domNode;else if(a.tagName&&"body"==a.tagName.toLowerCase()){if(a===p.body())break;a=m.get(a.ownerDocument).frameElement}else{var f=a.getAttribute&&a.getAttribute("widgetId"),g=f&&o.byId(f);g&&!("mouse"==b&&g.get("disabled"))&&d.unshift(f);a=a.parentNode}}}catch(e){}this._setStack(d,b)},_onFocusNode:function(a){a&&
-9!=a.nodeType&&(this._clearFocusTimer&&(clearTimeout(this._clearFocusTimer),delete this._clearFocusTimer),this._onTouchNode(a),a!=this.curNode&&(this.set("prevNode",this.curNode),this.set("curNode",a)))},_setStack:function(a,b){var d=this.activeStack;this.set("activeStack",a);for(var c=0;c<Math.min(d.length,a.length)&&!(d[c]!=a[c]);c++);for(var f,g=d.length-1;g>=c;g--)if(f=o.byId(d[g]))f._hasBeenBlurred=!0,f.set("focused",!1),f._focusManager==this&&f._onBlur(b),this.emit("widget-blur",f,b);for(g=
-c;g<a.length;g++)if(f=o.byId(a[g]))f.set("focused",!0),f._focusManager==this&&f._onFocus(b),this.emit("widget-focus",f,b)},focus:function(a){if(a)try{a.focus()}catch(b){}}}));f(function(){var b=q.registerWin(m.get(p.doc));a("ie")&&d.addOnWindowUnload(function(){b&&(b.remove(),b=null)})});r.focus=function(a){q.focus(a)};for(var v in q)/^_/.test(v)||(r.focus[v]="function"==typeof q[v]?h.hitch(q,v):q[v]);q.watch(function(a,b,d){r.focus[a]=d});return q})},"dojo/window":function(){define("./_base/lang,./sniff,./_base/window,./dom,./dom-geometry,./dom-style".split(","),
-function(e,j,i,l,c,g){var h={getBox:function(b){var b=b||i.doc,f="BackCompat"==b.compatMode?i.body(b):b.documentElement,a=c.docScroll(b);if(j("touch"))var g=h.get(b),b=g.innerWidth||f.clientWidth,f=g.innerHeight||f.clientHeight;else b=f.clientWidth,f=f.clientHeight;return{l:a.x,t:a.y,w:b,h:f}},get:function(b){if(j("ie")&&h!==document.parentWindow){b.parentWindow.execScript("document._parentWindow = window;","Javascript");var c=b._parentWindow;b._parentWindow=null;return c}return b.parentWindow||b.defaultView},
-scrollIntoView:function(b,f){try{var b=l.byId(b),a=b.ownerDocument||i.doc,e=i.body(a),d=a.documentElement||e.parentNode,h=j("ie"),m=j("webkit");if((!j("mozilla")&&!h&&!m&&!j("opera")||b==e||b==d)&&"undefined"!=typeof b.scrollIntoView)b.scrollIntoView(!1);else{var n="BackCompat"==a.compatMode,o=9<=h&&"frameElement"in b.ownerDocument.parentWindow?0<d.clientHeight&&0<d.clientWidth&&(0==e.clientHeight||0==e.clientWidth||e.clientHeight>d.clientHeight||e.clientWidth>d.clientWidth)?d:e:n?e:d,m=m?e:o,r=o.clientWidth,
-q=o.clientHeight,v=!c.isBodyLtr(a),s=f||c.position(b),u=b.parentNode,a=function(a){return 6>=h||h&&n?!1:"fixed"==g.get(a,"position").toLowerCase()};if(!a(b))for(;u;){u==e&&(u=m);var t=c.position(u),y=a(u);if(u==m){t.w=r;t.h=q;m==d&&h&&v&&(t.x+=m.offsetWidth-t.w);if(0>t.x||!h)t.x=0;if(0>t.y||!h)t.y=0}else{var z=c.getPadBorderExtents(u);t.w-=z.w;t.h-=z.h;t.x+=z.l;t.y+=z.t;var I=u.clientWidth,J=t.w-I;if(0<I&&0<J)t.w=I,t.x+=v&&(h||u.clientLeft>z.l)?J:0;I=u.clientHeight;J=t.h-I;if(0<I&&0<J)t.h=I}if(y){if(0>
-t.y)t.h+=t.y,t.y=0;if(0>t.x)t.w+=t.x,t.x=0;if(t.y+t.h>q)t.h=q-t.y;if(t.x+t.w>r)t.w=r-t.x}var N=s.x-t.x,E=s.y-Math.max(t.y,0),S=N+s.w-t.w,Q=E+s.h-t.h;if(0<S*N){var B=Math[0>N?"max":"min"](N,S);if(v&&(8==h&&!n||9<=h))B=-B;s.x+=u.scrollLeft;u.scrollLeft+=B;s.x-=u.scrollLeft}0<Q*E&&(s.y+=u.scrollTop,u.scrollTop+=Math[0>E?"max":"min"](E,Q),s.y-=u.scrollTop);u=u!=m&&!y&&u.parentNode}}}catch(A){b.scrollIntoView(!1)}}};e.setObject("dojo.window",h);return h})},"dijit/a11y":function(){define("dojo/_base/array,dojo/_base/config,dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-style,dojo/sniff,./main".split(","),
-function(e,j,i,l,c,g,h,b){var f=b._isElementShown=function(a){var b=g.get(a);return"hidden"!=b.visibility&&"collapsed"!=b.visibility&&"none"!=b.display&&"hidden"!=c.get(a,"type")};b.hasDefaultTabStop=function(a){switch(a.nodeName.toLowerCase()){case "a":return c.has(a,"href");case "area":case "button":case "input":case "object":case "select":case "textarea":return!0;case "iframe":var b;try{var f=a.contentDocument;if("designMode"in f&&"on"==f.designMode)return!0;b=f.body}catch(g){try{b=a.contentWindow.document.body}catch(e){return!1}}return b&&
-("true"==b.contentEditable||b.firstChild&&"true"==b.firstChild.contentEditable);default:return"true"==a.contentEditable}};var a=b.isTabNavigable=function(a){return c.get(a,"disabled")?!1:c.has(a,"tabIndex")?0<=c.get(a,"tabIndex"):b.hasDefaultTabStop(a)};b._getTabNavigable=function(b){function d(a){return a&&"input"==a.tagName.toLowerCase()&&a.type&&"radio"==a.type.toLowerCase()&&a.name&&a.name.toLowerCase()}var g,e,l,i,j,q,v={},s=function(b){for(b=b.firstChild;b;b=b.nextSibling)if(!(1!=b.nodeType||
-h("ie")&&"HTML"!==b.scopeName||!f(b))){if(a(b)){var k=+c.get(b,"tabIndex");if(!c.has(b,"tabIndex")||0==k)g||(g=b),e=b;else if(0<k){if(!l||k<i)i=k,l=b;if(!j||k>=q)q=k,j=b}k=d(b);c.get(b,"checked")&&k&&(v[k]=b)}"SELECT"!=b.nodeName.toUpperCase()&&s(b)}};f(b)&&s(b);return{first:v[d(g)]||g,last:v[d(e)]||e,lowest:v[d(l)]||l,highest:v[d(j)]||j}};b.getFirstInTabbingOrder=function(a,d){var c=b._getTabNavigable(l.byId(a,d));return c.lowest?c.lowest:c.first};b.getLastInTabbingOrder=function(a,d){var c=b._getTabNavigable(l.byId(a,
-d));return c.last?c.last:c.highest};return{hasDefaultTabStop:b.hasDefaultTabStop,isTabNavigable:b.isTabNavigable,_getTabNavigable:b._getTabNavigable,getFirstInTabbingOrder:b.getFirstInTabbingOrder,getLastInTabbingOrder:b.getLastInTabbingOrder}})},"dojo/uacss":function(){define(["./dom-geometry","./_base/lang","./ready","./sniff","./_base/window"],function(e,j,i,l,c){var g=c.doc.documentElement,h=l("ie"),b=l("opera"),f=Math.floor,a=l("ff"),c=e.boxModel.replace(/-/,""),h={dj_ie:h,dj_ie6:6==f(h),dj_ie7:7==
-f(h),dj_ie8:8==f(h),dj_ie9:9==f(h),dj_quirks:l("quirks"),dj_iequirks:h&&l("quirks"),dj_opera:b,dj_khtml:l("khtml"),dj_webkit:l("webkit"),dj_safari:l("safari"),dj_chrome:l("chrome"),dj_gecko:l("mozilla"),dj_ff3:3==f(a)};h["dj_"+c]=!0;var k="",d;for(d in h)h[d]&&(k+=d+" ");g.className=j.trim(g.className+" "+k);i(90,function(){if(!e.isBodyLtr()){var a="dj_rtl dijitRtl "+k.replace(/ /g,"-rtl ");g.className=j.trim(g.className+" "+a+"dj_rtl dijitRtl "+k.replace(/ /g,"-rtl "))}});return l})},"dijit/hccss":function(){define(["dojo/dom-class",
-"dojo/hccss","dojo/ready","dojo/_base/window"],function(e,j,i,l){i(90,function(){j("highcontrast")&&e.add(l.body(),"dijit_a11y")});return j})},"dojo/hccss":function(){define("require,./_base/config,./dom-class,./dom-construct,./dom-style,./has,./ready,./_base/window".split(","),function(e,j,i,l,c,g,h,b){g.add("highcontrast",function(){var f=b.doc.createElement("div");f.style.cssText="border: 1px solid; border-color:red green; position: absolute; height: 5px; top: -999px;background-image: url("+(j.blankGif||
-e.toUrl("./resources/blank.gif"))+");";b.body().appendChild(f);var a=c.getComputedStyle(f),g=a.backgroundImage,a=a.borderTopColor==a.borderRightColor||g&&("none"==g||"url(invalid-url:)"==g);l.destroy(f);return a});h(90,function(){g("highcontrast")&&i.add(b.body(),"dj_a11y")});return g})},"dijit/_TemplatedMixin":function(){define("dojo/_base/lang,dojo/touch,./_WidgetBase,dojo/string,dojo/cache,dojo/_base/array,dojo/_base/declare,dojo/dom-construct,dojo/sniff,dojo/_base/unload".split(","),function(e,
-j,i,l,c,g,h,b,f,a){var k=h("dijit._TemplatedMixin",null,{templateString:null,templatePath:null,_skipNodeCache:!1,_earlyTemplatedStartup:!1,constructor:function(){this._attachPoints=[];this._attachEvents=[]},_stringRepl:function(a){var b=this.declaredClass,c=this;return l.substitute(a,this,function(a,d){"!"==d.charAt(0)&&(a=e.getObject(d.substr(1),!1,c));if("undefined"==typeof a)throw Error(b+" template:"+d);return null==a?"":"!"==d.charAt(0)?a:a.toString().replace(/"/g,"&quot;")},this)},buildRendering:function(){if(!this.templateString)this.templateString=
-c(this.templatePath,{sanitize:!0});var a=k.getCachedTemplate(this.templateString,this._skipNodeCache,this.ownerDocument),f;if(e.isString(a)){if(f=b.toDom(this._stringRepl(a),this.ownerDocument),1!=f.nodeType)throw Error("Invalid template: "+a);}else f=a.cloneNode(!0);this.domNode=f;this.inherited(arguments);this._attachTemplateNodes(f,function(a,b){return a.getAttribute(b)});this._beforeFillContent();this._fillContent(this.srcNodeRef)},_beforeFillContent:function(){},_fillContent:function(a){var b=
-this.containerNode;if(a&&b)for(;a.hasChildNodes();)b.appendChild(a.firstChild)},_attachTemplateNodes:function(a,b){for(var c=e.isArray(a)?a:a.all||a.getElementsByTagName("*"),f=e.isArray(a)?0:-1;0>f||c[f];f++){var g=-1==f?a:c[f];if(!this.widgetsInTemplate||!b(g,"dojoType")&&!b(g,"data-dojo-type")){var k=b(g,"dojoAttachPoint")||b(g,"data-dojo-attach-point");if(k)for(var h=k.split(/\s*,\s*/);k=h.shift();)e.isArray(this[k])?this[k].push(g):this[k]=g,this._attachPoints.push(k);if(k=b(g,"dojoAttachEvent")||
-b(g,"data-dojo-attach-event"))for(var h=k.split(/\s*,\s*/),l=e.trim;k=h.shift();)if(k){var i=null;-1!=k.indexOf(":")?(i=k.split(":"),k=l(i[0]),i=l(i[1])):k=l(k);i||(i=k);this._attachEvents.push(this.connect(g,j[k]||k,i))}}}},destroyRendering:function(){g.forEach(this._attachPoints,function(a){delete this[a]},this);this._attachPoints=[];g.forEach(this._attachEvents,this.disconnect,this);this._attachEvents=[];this.inherited(arguments)}});k._templateCache={};k.getCachedTemplate=function(a,c,f){var g=
-k._templateCache,e=a,h=g[e];if(h){try{if(!h.ownerDocument||h.ownerDocument==(f||document))return h}catch(i){}b.destroy(h)}a=l.trim(a);if(c||a.match(/\$\{([^\}]+)\}/g))return g[e]=a;c=b.toDom(a,f);if(1!=c.nodeType)throw Error("Invalid template: "+a);return g[e]=c};f("ie")&&a.addOnWindowUnload(function(){var a=k._templateCache,c;for(c in a){var f=a[c];"object"==typeof f&&b.destroy(f);delete a[c]}});e.extend(i,{dojoAttachEvent:"",dojoAttachPoint:""});return k})},"dojo/string":function(){define(["./_base/kernel",
-"./_base/lang"],function(e,j){var i={};j.setObject("dojo.string",i);i.rep=function(e,c){if(0>=c||!e)return"";for(var g=[];;){c&1&&g.push(e);if(!(c>>=1))break;e+=e}return g.join("")};i.pad=function(e,c,g,h){g||(g="0");e=""+e;c=i.rep(g,Math.ceil((c-e.length)/g.length));return h?e+c:c+e};i.substitute=function(i,c,g,h){h=h||e.global;g=g?j.hitch(h,g):function(b){return b};return i.replace(/\$\{([^\s\:\}]+)(?:\:([^\s\:\}]+))?\}/g,function(b,f,a){b=j.getObject(f,!1,c);a&&(b=j.getObject(a,!1,h).call(h,b,
-f));return g(b,f).toString()})};i.trim=String.prototype.trim?j.trim:function(e){for(var e=e.replace(/^\s+/,""),c=e.length-1;0<=c;c--)if(/\S/.test(e.charAt(c))){e=e.substring(0,c+1);break}return e};return i})},"dojo/cache":function(){define("dojo/cache",["./_base/kernel","./text"],function(e){return e.cache})},"dojo/text":function(){define(["./_base/kernel","require","./has","./_base/xhr"],function(e,j,i,l){var c;c=function(a,b,d){l("GET",{url:a,sync:!!b,load:d,headers:e.config.textPluginHeaders||
-{}})};var g={},h=function(a){if(a){var a=a.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,""),b=a.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);b&&(a=b[1])}else a="";return a},b={},f={};e.cache=function(a,b,d){var f;"string"==typeof a?/\//.test(a)?(f=a,d=b):f=j.toUrl(a.replace(/\./g,"/")+(b?"/"+b:"")):(f=a+"",d=b);a=void 0!=d&&"string"!=typeof d?d.value:d;d=d&&d.sanitize;if("string"==typeof a)return g[f]=a,d?h(a):a;if(null===a)return delete g[f],null;f in g||c(f,!0,function(a){g[f]=
-a});return d?h(g[f]):g[f]};return{dynamic:!0,normalize:function(a,b){var d=a.split("!"),c=d[0];return(/^\./.test(c)?b(c):c)+(d[1]?"!"+d[1]:"")},load:function(a,e,d){var a=a.split("!"),i=1<a.length,m=a[0],l=e.toUrl(a[0]),a="url:"+l,j=b,r=function(a){d(i?h(a):a)};m in g?j=g[m]:a in e.cache?j=e.cache[a]:l in g&&(j=g[l]);if(j===b)if(f[l])f[l].push(r);else{var q=f[l]=[r];c(l,!e.async,function(a){g[m]=g[l]=a;for(var b=0;b<q.length;)q[b++](a);delete f[l]})}else r(j)}}})},"dijit/layout/_LayoutWidget":function(){define("dojo/_base/lang,../_Widget,../_Container,../_Contained,../Viewport,dojo/_base/declare,dojo/dom-class,dojo/dom-geometry,dojo/dom-style".split(","),
-function(e,j,i,l,c,g,h,b,f){return g("dijit.layout._LayoutWidget",[j,i,l],{baseClass:"dijitLayoutContainer",isLayoutContainer:!0,buildRendering:function(){this.inherited(arguments);h.add(this.domNode,"dijitContainer")},startup:function(){if(!this._started){this.inherited(arguments);var a=this.getParent&&this.getParent();if(!a||!a.isLayoutContainer)this.resize(),this.own(c.on("resize",e.hitch(this,"resize")))}},resize:function(a,c){var d=this.domNode;a&&b.setMarginBox(d,a);var g=c||{};e.mixin(g,a||
-{});if(!("h"in g)||!("w"in g))g=e.mixin(b.getMarginBox(d),g);var m=f.getComputedStyle(d),h=b.getMarginExtents(d,m),i=b.getBorderExtents(d,m),g=this._borderBox={w:g.w-(h.w+i.w),h:g.h-(h.h+i.h)},h=b.getPadExtents(d,m);this._contentBox={l:f.toPixelValue(d,m.paddingLeft),t:f.toPixelValue(d,m.paddingTop),w:g.w-h.w,h:g.h-h.h};this.layout()},layout:function(){},_setupChild:function(a){h.add(a.domNode,this.baseClass+"-child "+(a.baseClass?this.baseClass+"-"+a.baseClass:""))},addChild:function(a,b){this.inherited(arguments);
-this._started&&this._setupChild(a)},removeChild:function(a){h.remove(a.domNode,this.baseClass+"-child"+(a.baseClass?" "+this.baseClass+"-"+a.baseClass:""));this.inherited(arguments)}})})},"dijit/_Container":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-construct"],function(e,j,i){return j("dijit._Container",null,{buildRendering:function(){this.inherited(arguments);if(!this.containerNode)this.containerNode=this.domNode},addChild:function(e,c){var g=this.containerNode;if(c&&"number"==
-typeof c){var h=this.getChildren();if(h&&h.length>=c)g=h[c-1].domNode,c="after"}i.place(e.domNode,g,c);this._started&&!e._started&&e.startup()},removeChild:function(e){"number"==typeof e&&(e=this.getChildren()[e]);if(e)(e=e.domNode)&&e.parentNode&&e.parentNode.removeChild(e)},hasChildren:function(){return 0<this.getChildren().length},_getSiblingOfChild:function(i,c){var g=this.getChildren(),h=e.indexOf(this.getChildren(),i);return g[h+c]},getIndexOfChild:function(i){return e.indexOf(this.getChildren(),
-i)}})})},"dijit/_Contained":function(){define(["dojo/_base/declare","./registry"],function(e,j){return e("dijit._Contained",null,{_getSibling:function(e){var l=this.domNode;do l=l[e+"Sibling"];while(l&&1!=l.nodeType);return l&&j.byNode(l)},getPreviousSibling:function(){return this._getSibling("previous")},getNextSibling:function(){return this._getSibling("next")},getIndexInParent:function(){var e=this.getParent();return!e||!e.getIndexOfChild?-1:e.getIndexOfChild(this)}})})},"dijit/Viewport":function(){define("dojo/Evented,dojo/on,dojo/ready,dojo/sniff,dojo/_base/window,dojo/window".split(","),
-function(e,j,i,l,c,g){var h=new e;i(200,function(){var b=g.getBox();h._rlh=j(c.global,"resize",function(){var a=g.getBox();b.h==a.h&&b.w==a.w||(b=a,h.emit("resize"))});if(8==l("ie")){var f=screen.deviceXDPI;setInterval(function(){if(screen.deviceXDPI!=f)f=screen.deviceXDPI,h.emit("resize")},500)}});return h})},"dijit/layout/utils":function(){define("dojo/_base/array,dojo/dom-class,dojo/dom-geometry,dojo/dom-style,dojo/_base/lang,../main".split(","),function(e,j,i,l,c,g){function h(b,f){var a=b.resize?
-b.resize(f):i.setMarginBox(b.domNode,f);a?c.mixin(b,a):(c.mixin(b,i.getMarginBox(b.domNode)),c.mixin(b,f))}g=c.getObject("layout",!0,g);g.marginBox2contentBox=function(b,c){var a=l.getComputedStyle(b),g=i.getMarginExtents(b,a),d=i.getPadBorderExtents(b,a);return{l:l.toPixelValue(b,a.paddingLeft),t:l.toPixelValue(b,a.paddingTop),w:c.w-(g.w+d.w),h:c.h-(g.h+d.h)}};g.layoutChildren=function(b,f,a,g,d){f=c.mixin({},f);j.add(b,"dijitLayoutContainer");a=e.filter(a,function(a){return"center"!=a.region&&"client"!=
-a.layoutAlign}).concat(e.filter(a,function(a){return"center"==a.region||"client"==a.layoutAlign}));e.forEach(a,function(a){var b=a.domNode,c=a.region||a.layoutAlign;if(!c)throw Error("No region setting for "+a.id);var e=b.style;e.left=f.l+"px";e.top=f.t+"px";e.position="absolute";j.add(b,"dijitAlign"+(c.substring(0,1).toUpperCase()+c.substring(1)));b={};g&&g==a.id&&(b["top"==a.region||"bottom"==a.region?"h":"w"]=d);"top"==c||"bottom"==c?(b.w=f.w,h(a,b),f.h-=a.h,"top"==c?f.t+=a.h:e.top=f.t+f.h+"px"):
-"left"==c||"right"==c?(b.h=f.h,h(a,b),f.w-=a.w,"left"==c?f.l+=a.w:e.left=f.l+f.w+"px"):("client"==c||"center"==c)&&h(a,f)})};return{marginBox2contentBox:g.marginBox2contentBox,layoutChildren:g.layoutChildren}})},"dijit/layout/ContentPane":function(){define("dojo/_base/kernel,dojo/_base/lang,../_Widget,../_Container,./_ContentPaneResizeMixin,dojo/string,dojo/html,dojo/i18n!../nls/loading,dojo/_base/array,dojo/_base/declare,dojo/_base/Deferred,dojo/dom,dojo/dom-attr,dojo/_base/xhr,dojo/i18n,dojo/when".split(","),
-function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o){return a("dijit.layout.ContentPane",[i,l,c],{href:"",content:"",extractContent:!1,parseOnLoad:!0,parserScope:e._scopeName,preventCache:!1,preload:!1,refreshOnShow:!1,loadingMessage:"<span class='dijitContentPaneLoading'><span class='dijitInline dijitIconLoading'></span>${loadingState}</span>",errorMessage:"<span class='dijitContentPaneError'><span class='dijitInline dijitIconError'></span>${errorState}</span>",isLoaded:!1,baseClass:"dijitContentPane",ioArgs:{},
-onLoadDeferred:null,_setTitleAttr:null,stopParser:!0,template:!1,create:function(a,b){if((!a||!a.template)&&b&&!("href"in a)&&!("content"in a)){for(var b=d.byId(b),c=b.ownerDocument.createDocumentFragment();b.firstChild;)c.appendChild(b.firstChild);a=j.delegate(a,{content:c})}this.inherited(arguments,[a,b])},postMixInProperties:function(){this.inherited(arguments);var a=n.getLocalization("dijit","loading",this.lang);this.loadingMessage=g.substitute(this.loadingMessage,a);this.errorMessage=g.substitute(this.errorMessage,
-a)},buildRendering:function(){this.inherited(arguments);if(!this.containerNode)this.containerNode=this.domNode;this.domNode.title="";p.get(this.domNode,"role")||this.domNode.setAttribute("role","group")},startup:function(){this.inherited(arguments);this._contentSetter&&f.forEach(this._contentSetter.parseResults,function(a){if(!a._started&&!a._destroyed&&j.isFunction(a.startup))a.startup(),a._started=!0},this)},_startChildren:function(){f.forEach(this.getChildren(),function(a){if(!a._started&&!a._destroyed&&
-j.isFunction(a.startup))a.startup(),a._started=!0});this._contentSetter&&f.forEach(this._contentSetter.parseResults,function(a){if(!a._started&&!a._destroyed&&j.isFunction(a.startup))a.startup(),a._started=!0},this)},setHref:function(a){e.deprecated("dijit.layout.ContentPane.setHref() is deprecated. Use set('href', ...) instead.","","2.0");return this.set("href",a)},_setHrefAttr:function(a){this.cancel();this.onLoadDeferred=new k(j.hitch(this,"cancel"));this.onLoadDeferred.then(j.hitch(this,"onLoad"));
-this._set("href",a);this.preload||this._created&&this._isShown()?this._load():this._hrefChanged=!0;return this.onLoadDeferred},setContent:function(a){e.deprecated("dijit.layout.ContentPane.setContent() is deprecated. Use set('content', ...) instead.","","2.0");this.set("content",a)},_setContentAttr:function(a){this._set("href","");this.cancel();this.onLoadDeferred=new k(j.hitch(this,"cancel"));this._created&&this.onLoadDeferred.then(j.hitch(this,"onLoad"));this._setContent(a||"");this._isDownloaded=
+{};b.detail.widget=this;var c,g=this["on"+a];g&&(c=g.apply(this,d?d:[b]));this._started&&!this._beingDestroyed&&o.emit(this.domNode,a.toLowerCase(),b);return c},on:function(a,b){var d=this._onMap(a);return d?h.after(this,d,b,!0):this.own(o(this.domNode,a,b))[0]},_onMap:function(a){var b=this.constructor,d=b._onMap;if(!d){var d=b._onMap={},c;for(c in b.prototype)/^on/.test(c)&&(d[c.replace(/^on/,"").toLowerCase()]=c)}return d["string"==typeof a&&a.toLowerCase()]},toString:function(){return"[Widget "+
+this.declaredClass+", "+(this.id||"NO ID")+"]"},getChildren:function(){return this.containerNode?u.findWidgets(this.containerNode):[]},getParent:function(){return u.getEnclosingWidget(this.domNode.parentNode)},connect:function(a,b,d){return this.own(e.connect(a,b,this,d))[0]},disconnect:function(a){a.remove()},subscribe:function(a,b){return this.own(v.subscribe(a,n.hitch(this,b)))[0]},unsubscribe:function(a){a.remove()},isLeftToRight:function(){return this.dir?"ltr"==this.dir:l.isBodyLtr(this.ownerDocument)},
+isFocusable:function(){return this.focus&&"none"!=d.get(this.domNode,"display")},placeAt:function(b,d){var c=!b.tagName&&u.byId(b);c&&c.addChild&&(!d||"number"===typeof d)?c.addChild(this,d):(c=c?c.containerNode&&!/after|before|replace/.test(d||"")?c.containerNode:c.domNode:i.byId(b,this.ownerDocument),a.place(this.domNode,c,d),!this._started&&(this.getParent()||{})._started&&this.startup());return this},getTextDir:function(a,b){return b},applyTextDir:function(){},defer:function(a,b){var d=setTimeout(n.hitch(this,
+function(){d=null;this._destroyed||n.hitch(this,a)()}),b||0);return{remove:function(){d&&(clearTimeout(d),d=null);return null}}}})})},"dojo/Stateful":function(){define("dojo/Stateful",["./_base/declare","./_base/lang","./_base/array","dojo/when"],function(f,k,h,j){return f("dojo.Stateful",null,{_attrPairNames:{},_getAttrNames:function(e){var c=this._attrPairNames;return c[e]?c[e]:c[e]={s:"_"+e+"Setter",g:"_"+e+"Getter"}},postscript:function(e){e&&this.set(e)},_get:function(e,c){return"function"===
+typeof this[c.g]?this[c.g]():this[e]},get:function(e){return this._get(e,this._getAttrNames(e))},set:function(e,c){if("object"===typeof e){for(var f in e)e.hasOwnProperty(f)&&"_watchCallbacks"!=f&&this.set(f,e[f]);return this}f=this._getAttrNames(e);var b=this._get(e,f);f=this[f.s];var g;"function"===typeof f?g=f.apply(this,Array.prototype.slice.call(arguments,1)):this[e]=c;if(this._watchCallbacks){var a=this;j(g,function(){a._watchCallbacks(e,b,c)})}return this},_changeAttrValue:function(e,c){var f=
+this.get(e);this[e]=c;this._watchCallbacks&&this._watchCallbacks(e,f,c);return this},watch:function(e,c){var f=this._watchCallbacks;if(!f)var b=this,f=this._watchCallbacks=function(a,d,c,g){var e=function(g){if(g)for(var g=g.slice(),e=0,f=g.length;e<f;e++)g[e].call(b,a,d,c)};e(f["_"+a]);g||e(f["*"])};!c&&"function"===typeof e?(c=e,e="*"):e="_"+e;var g=f[e];"object"!==typeof g&&(g=f[e]=[]);g.push(c);var a={};a.unwatch=a.remove=function(){var a=h.indexOf(g,c);-1<a&&g.splice(a,1)};return a}})})},"dijit/Destroyable":function(){define(["dojo/_base/array",
+"dojo/aspect","dojo/_base/declare"],function(f,k,h){return h("dijit.Destroyable",null,{destroy:function(){this._destroyed=!0},own:function(){f.forEach(arguments,function(f){var e="destroyRecursive"in f?"destroyRecursive":"destroy"in f?"destroy":"remove",c=k.before(this,"destroy",function(c){f[e](c)});k.after(f,e,function(){c.remove()},!0)},this);return arguments}})})},"dijit/registry":function(){define(["dojo/_base/array","dojo/sniff","dojo/_base/unload","dojo/_base/window","./main"],function(f,k,
+h,j,e){var c={},i={},b={length:0,add:function(b){if(i[b.id])throw Error("Tried to register widget with id=="+b.id+" but that id is already registered");i[b.id]=b;this.length++},remove:function(b){i[b]&&(delete i[b],this.length--)},byId:function(b){return"string"==typeof b?i[b]:b},byNode:function(b){return i[b.getAttribute("widgetId")]},toArray:function(){var b=[],a;for(a in i)b.push(i[a]);return b},getUniqueId:function(b){var a;do a=b+"_"+(b in c?++c[b]:c[b]=0);while(i[a]);return"dijit"==e._scopeName?
+a:e._scopeName+"_"+a},findWidgets:function(b,a){function c(b){for(b=b.firstChild;b;b=b.nextSibling)if(1==b.nodeType){var g=b.getAttribute("widgetId");g?(g=i[g])&&d.push(g):b!==a&&c(b)}}var d=[];c(b);return d},_destroyAll:function(){e._curFocus=null;e._prevFocus=null;e._activeStack=[];f.forEach(b.findWidgets(j.body()),function(b){b._destroyed||(b.destroyRecursive?b.destroyRecursive():b.destroy&&b.destroy())})},getEnclosingWidget:function(b){for(;b;){var a=b.getAttribute&&b.getAttribute("widgetId");
+if(a)return i[a];b=b.parentNode}return null},_hash:i};return e.registry=b})},"dijit/main":function(){define(["dojo/_base/kernel"],function(f){return f.dijit})},"dijit/_Widget":function(){define("dojo/aspect,dojo/_base/config,dojo/_base/connect,dojo/_base/declare,dojo/has,dojo/_base/kernel,dojo/_base/lang,dojo/query,dojo/ready,./registry,./_WidgetBase,./_OnDijitClickMixin,./_FocusMixin,dojo/uacss,./hccss".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,p){function m(){}function n(a){return function(b,
+d,c,g){return b&&"string"==typeof d&&b[d]==m?b.on(d.substring(2).toLowerCase(),i.hitch(c,g)):a.apply(h,arguments)}}f.around(h,"connect",n);c.connect&&f.around(c,"connect",n);f=j("dijit._Widget",[l,d,p],{onClick:m,onDblClick:m,onKeyDown:m,onKeyPress:m,onKeyUp:m,onMouseDown:m,onMouseMove:m,onMouseOut:m,onMouseOver:m,onMouseLeave:m,onMouseEnter:m,onMouseUp:m,constructor:function(a){this._toConnect={};for(var b in a)this[b]===m&&(this._toConnect[b.replace(/^on/,"").toLowerCase()]=a[b],delete a[b])},postCreate:function(){this.inherited(arguments);
+for(var a in this._toConnect)this.on(a,this._toConnect[a]);delete this._toConnect},on:function(a,b){return this[this._onMap(a)]===m?h.connect(this.domNode,a.toLowerCase(),this,b):this.inherited(arguments)},_setFocusedAttr:function(a){this._focused=a;this._set("focused",a)},setAttribute:function(a,b){c.deprecated(this.declaredClass+"::setAttribute(attr, value) is deprecated. Use set() instead.","","2.0");this.set(a,b)},attr:function(a,b){if(k.isDebug){var d=arguments.callee._ach||(arguments.callee._ach=
+{}),g=(arguments.callee.caller||"unknown caller").toString();d[g]||(c.deprecated(this.declaredClass+"::attr() is deprecated. Use get() or set() instead, called from "+g,"","2.0"),d[g]=!0)}return 2<=arguments.length||"object"===typeof a?this.set.apply(this,arguments):this.get(a)},getDescendants:function(){c.deprecated(this.declaredClass+"::getDescendants() is deprecated. Use getChildren() instead.","","2.0");return this.containerNode?b("[widgetId]",this.containerNode).map(a.byNode):[]},_onShow:function(){this.onShow()},
+onShow:function(){},onHide:function(){},onClose:function(){return!0}});e("dijit-legacy-requires")&&g(0,function(){require(["dijit/_base"])});return f})},"dijit/_OnDijitClickMixin":function(){define("dojo/on,dojo/_base/array,dojo/keys,dojo/_base/declare,dojo/has,dojo/_base/unload,dojo/_base/window,./a11yclick".split(","),function(f,k,h,j,e,c,i,b){f=j("dijit._OnDijitClickMixin",null,{connect:function(c,a,e){return this.inherited(arguments,[c,"ondijitclick"==a?b:a,e])}});f.a11yclick=b;return f})},"dijit/a11yclick":function(){define("dojo/on,dojo/_base/array,dojo/keys,dojo/_base/declare,dojo/has,dojo/_base/unload,dojo/_base/window".split(","),
+function(f,k,h,j,e,c,i){function b(a){return(a.keyCode===h.ENTER||a.keyCode===h.SPACE)&&!a.ctrlKey&&!a.shiftKey&&!a.altKey&&!a.metaKey}var g=null;e("dom-addeventlistener")?i.doc.addEventListener("keydown",function(a){g=a.target},!0):function(){var a=function(a){g=a.srcElement};i.doc.attachEvent("onkeydown",a);c.addOnWindowUnload(function(){i.doc.detachEvent("onkeydown",a)})}();return function(a,c){if(/input|button/i.test(a.nodeName))return f(a,"click",c);var d=[f(a,"keydown",function(a){if(b(a))g=
+a.target,a.preventDefault()}),f(a,"keyup",function(a){b(a)&&a.target==g&&(g=null,f.emit(a.target,"click",{cancelable:!0,bubbles:!0}))}),f(a,"click",function(a){c.call(this,a)})];if(e("touch")){var i;d.push(f(a,"touchend",function(a){var b=a.target;i=setTimeout(function(){i=null;f.emit(b,"click",{cancelable:!0,bubbles:!0})},600)}),f(a,"click",function(){i&&clearTimeout(i)}))}return{remove:function(){k.forEach(d,function(a){a.remove()});i&&(clearTimeout(i),i=null)}}}})},"dijit/_FocusMixin":function(){define(["./focus",
+"./_WidgetBase","dojo/_base/declare","dojo/_base/lang"],function(f,k,h,j){j.extend(k,{focused:!1,onFocus:function(){},onBlur:function(){},_onFocus:function(){this.onFocus()},_onBlur:function(){this.onBlur()}});return h("dijit._FocusMixin",null,{_focusManager:f})})},"dijit/focus":function(){define("dojo/aspect,dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-construct,dojo/Evented,dojo/_base/lang,dojo/on,dojo/ready,dojo/sniff,dojo/Stateful,dojo/_base/unload,dojo/_base/window,dojo/window,./a11y,./registry,./main".split(","),
+function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o,r){var q=new (k([l,c],{curNode:null,activeStack:[],constructor:function(){var a=i.hitch(this,function(a){h.isDescendant(this.curNode,a)&&this.set("curNode",null);h.isDescendant(this.prevNode,a)&&this.set("prevNode",null)});f.before(e,"empty",a);f.before(e,"destroy",a)},registerIframe:function(a){return this.registerWin(a.contentWindow,a)},registerWin:function(b,d){var c=this,g=function(b){c._justMouseDowned=!0;setTimeout(function(){c._justMouseDowned=!1},0);
+if(!a("ie")||!b||!(b.srcElement&&null==b.srcElement.parentNode))c._onTouchNode(d||b.target||b.srcElement,"mouse")},e=a("ie")?b.document.documentElement:b.document;if(e){if(a("ie")){b.document.body.attachEvent("onmousedown",g);var f=function(a){var b=a.srcElement.tagName.toLowerCase();"#document"==b||"body"==b||(n.isTabNavigable(a.srcElement)?c._onFocusNode(d||a.srcElement):c._onTouchNode(d||a.srcElement))};e.attachEvent("onfocusin",f);var l=function(a){c._onBlurNode(d||a.srcElement)};e.attachEvent("onfocusout",
+l);return{remove:function(){b.document.detachEvent("onmousedown",g);e.detachEvent("onfocusin",f);e.detachEvent("onfocusout",l);e=null}}}e.body.addEventListener("mousedown",g,!0);e.body.addEventListener("touchstart",g,!0);var i=function(a){c._onFocusNode(d||a.target)};e.addEventListener("focus",i,!0);var m=function(a){c._onBlurNode(d||a.target)};e.addEventListener("blur",m,!0);return{remove:function(){e.body.removeEventListener("mousedown",g,!0);e.body.removeEventListener("touchstart",g,!0);e.removeEventListener("focus",
+i,!0);e.removeEventListener("blur",m,!0);e=null}}}},_onBlurNode:function(){this._clearFocusTimer&&clearTimeout(this._clearFocusTimer);this._clearFocusTimer=setTimeout(i.hitch(this,function(){this.set("prevNode",this.curNode);this.set("curNode",null)}),0);if(!this._justMouseDowned)this._clearActiveWidgetsTimer&&clearTimeout(this._clearActiveWidgetsTimer),this._clearActiveWidgetsTimer=setTimeout(i.hitch(this,function(){delete this._clearActiveWidgetsTimer;this._setStack([])}),0)},_onTouchNode:function(a,
+b){this._clearActiveWidgetsTimer&&(clearTimeout(this._clearActiveWidgetsTimer),delete this._clearActiveWidgetsTimer);var d=[];try{for(;a;){var c=j.get(a,"dijitPopupParent");if(c)a=o.byId(c).domNode;else if(a.tagName&&"body"==a.tagName.toLowerCase()){if(a===p.body())break;a=m.get(a.ownerDocument).frameElement}else{var g=a.getAttribute&&a.getAttribute("widgetId"),e=g&&o.byId(g);e&&!("mouse"==b&&e.get("disabled"))&&d.unshift(g);a=a.parentNode}}}catch(f){}this._setStack(d,b)},_onFocusNode:function(a){a&&
+9!=a.nodeType&&(this._clearFocusTimer&&(clearTimeout(this._clearFocusTimer),delete this._clearFocusTimer),this._onTouchNode(a),a!=this.curNode&&(this.set("prevNode",this.curNode),this.set("curNode",a)))},_setStack:function(a,b){var d=this.activeStack;this.set("activeStack",a);for(var c=0;c<Math.min(d.length,a.length)&&!(d[c]!=a[c]);c++);for(var g,e=d.length-1;e>=c;e--)if(g=o.byId(d[e]))g._hasBeenBlurred=!0,g.set("focused",!1),g._focusManager==this&&g._onBlur(b),this.emit("widget-blur",g,b);for(e=
+c;e<a.length;e++)if(g=o.byId(a[e]))g.set("focused",!0),g._focusManager==this&&g._onFocus(b),this.emit("widget-focus",g,b)},focus:function(a){if(a)try{a.focus()}catch(b){}}}));g(function(){var b=q.registerWin(m.get(p.doc));a("ie")&&d.addOnWindowUnload(function(){b&&(b.remove(),b=null)})});r.focus=function(a){q.focus(a)};for(var v in q)/^_/.test(v)||(r.focus[v]="function"==typeof q[v]?i.hitch(q,v):q[v]);q.watch(function(a,b,d){r.focus[a]=d});return q})},"dojo/window":function(){define("./_base/lang,./sniff,./_base/window,./dom,./dom-geometry,./dom-style".split(","),
+function(f,k,h,j,e,c){var i={getBox:function(b){var b=b||h.doc,c="BackCompat"==b.compatMode?h.body(b):b.documentElement,a=e.docScroll(b);if(k("touch"))var f=i.get(b),b=f.innerWidth||c.clientWidth,c=f.innerHeight||c.clientHeight;else b=c.clientWidth,c=c.clientHeight;return{l:a.x,t:a.y,w:b,h:c}},get:function(b){if(k("ie")&&i!==document.parentWindow){b.parentWindow.execScript("document._parentWindow = window;","Javascript");var c=b._parentWindow;b._parentWindow=null;return c}return b.parentWindow||b.defaultView},
+scrollIntoView:function(b,g){try{var b=j.byId(b),a=b.ownerDocument||h.doc,f=h.body(a),d=a.documentElement||f.parentNode,i=k("ie"),m=k("webkit");if((!k("mozilla")&&!i&&!m&&!k("opera")||b==f||b==d)&&"undefined"!=typeof b.scrollIntoView)b.scrollIntoView(!1);else{var n="BackCompat"==a.compatMode,o=9<=i&&"frameElement"in b.ownerDocument.parentWindow?0<d.clientHeight&&0<d.clientWidth&&(0==f.clientHeight||0==f.clientWidth||f.clientHeight>d.clientHeight||f.clientWidth>d.clientWidth)?d:f:n?f:d,m=m?f:o,r=o.clientWidth,
+q=o.clientHeight,v=!e.isBodyLtr(a),s=g||e.position(b),t=b.parentNode,a=function(a){return 6>=i||i&&n?!1:"fixed"==c.get(a,"position").toLowerCase()};if(!a(b))for(;t;){t==f&&(t=m);var u=e.position(t),y=a(t);if(t==m){u.w=r;u.h=q;m==d&&i&&v&&(u.x+=m.offsetWidth-u.w);if(0>u.x||!i)u.x=0;if(0>u.y||!i)u.y=0}else{var z=e.getPadBorderExtents(t);u.w-=z.w;u.h-=z.h;u.x+=z.l;u.y+=z.t;var I=t.clientWidth,J=u.w-I;if(0<I&&0<J)u.w=I,u.x+=v&&(i||t.clientLeft>z.l)?J:0;I=t.clientHeight;J=u.h-I;if(0<I&&0<J)u.h=I}if(y){if(0>
+u.y)u.h+=u.y,u.y=0;if(0>u.x)u.w+=u.x,u.x=0;if(u.y+u.h>q)u.h=q-u.y;if(u.x+u.w>r)u.w=r-u.x}var N=s.x-u.x,E=s.y-Math.max(u.y,0),S=N+s.w-u.w,Q=E+s.h-u.h;if(0<S*N){var B=Math[0>N?"max":"min"](N,S);if(v&&(8==i&&!n||9<=i))B=-B;s.x+=t.scrollLeft;t.scrollLeft+=B;s.x-=t.scrollLeft}0<Q*E&&(s.y+=t.scrollTop,t.scrollTop+=Math[0>E?"max":"min"](E,Q),s.y-=t.scrollTop);t=t!=m&&!y&&t.parentNode}}}catch(A){b.scrollIntoView(!1)}}};f.setObject("dojo.window",i);return i})},"dijit/a11y":function(){define("dojo/_base/array,dojo/_base/config,dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-style,dojo/sniff,./main".split(","),
+function(f,k,h,j,e,c,i,b){var g=b._isElementShown=function(a){var b=c.get(a);return"hidden"!=b.visibility&&"collapsed"!=b.visibility&&"none"!=b.display&&"hidden"!=e.get(a,"type")};b.hasDefaultTabStop=function(a){switch(a.nodeName.toLowerCase()){case "a":return e.has(a,"href");case "area":case "button":case "input":case "object":case "select":case "textarea":return!0;case "iframe":var b;try{var c=a.contentDocument;if("designMode"in c&&"on"==c.designMode)return!0;b=c.body}catch(g){try{b=a.contentWindow.document.body}catch(f){return!1}}return b&&
+("true"==b.contentEditable||b.firstChild&&"true"==b.firstChild.contentEditable);default:return"true"==a.contentEditable}};var a=b.isTabNavigable=function(a){return e.get(a,"disabled")?!1:e.has(a,"tabIndex")?0<=e.get(a,"tabIndex"):b.hasDefaultTabStop(a)};b._getTabNavigable=function(b){function d(a){return a&&"input"==a.tagName.toLowerCase()&&a.type&&"radio"==a.type.toLowerCase()&&a.name&&a.name.toLowerCase()}var c,f,h,j,k,q,v={},s=function(b){for(b=b.firstChild;b;b=b.nextSibling)if(!(1!=b.nodeType||
+i("ie")&&"HTML"!==b.scopeName||!g(b))){if(a(b)){var l=+e.get(b,"tabIndex");if(!e.has(b,"tabIndex")||0==l)c||(c=b),f=b;else if(0<l){if(!h||l<j)j=l,h=b;if(!k||l>=q)q=l,k=b}l=d(b);e.get(b,"checked")&&l&&(v[l]=b)}"SELECT"!=b.nodeName.toUpperCase()&&s(b)}};g(b)&&s(b);return{first:v[d(c)]||c,last:v[d(f)]||f,lowest:v[d(h)]||h,highest:v[d(k)]||k}};b.getFirstInTabbingOrder=function(a,d){var c=b._getTabNavigable(j.byId(a,d));return c.lowest?c.lowest:c.first};b.getLastInTabbingOrder=function(a,d){var c=b._getTabNavigable(j.byId(a,
+d));return c.last?c.last:c.highest};return{hasDefaultTabStop:b.hasDefaultTabStop,isTabNavigable:b.isTabNavigable,_getTabNavigable:b._getTabNavigable,getFirstInTabbingOrder:b.getFirstInTabbingOrder,getLastInTabbingOrder:b.getLastInTabbingOrder}})},"dojo/uacss":function(){define(["./dom-geometry","./_base/lang","./ready","./sniff","./_base/window"],function(f,k,h,j,e){var c=e.doc.documentElement,i=j("ie"),b=j("opera"),g=Math.floor,a=j("ff"),e=f.boxModel.replace(/-/,""),i={dj_ie:i,dj_ie6:6==g(i),dj_ie7:7==
+g(i),dj_ie8:8==g(i),dj_ie9:9==g(i),dj_quirks:j("quirks"),dj_iequirks:i&&j("quirks"),dj_opera:b,dj_khtml:j("khtml"),dj_webkit:j("webkit"),dj_safari:j("safari"),dj_chrome:j("chrome"),dj_gecko:j("mozilla"),dj_ff3:3==g(a)};i["dj_"+e]=!0;var l="",d;for(d in i)i[d]&&(l+=d+" ");c.className=k.trim(c.className+" "+l);h(90,function(){if(!f.isBodyLtr()){var a="dj_rtl dijitRtl "+l.replace(/ /g,"-rtl ");c.className=k.trim(c.className+" "+a+"dj_rtl dijitRtl "+l.replace(/ /g,"-rtl "))}});return j})},"dijit/hccss":function(){define(["dojo/dom-class",
+"dojo/hccss","dojo/ready","dojo/_base/window"],function(f,k,h,j){h(90,function(){k("highcontrast")&&f.add(j.body(),"dijit_a11y")});return k})},"dojo/hccss":function(){define("require,./_base/config,./dom-class,./dom-construct,./dom-style,./has,./ready,./_base/window".split(","),function(f,k,h,j,e,c,i,b){c.add("highcontrast",function(){var c=b.doc.createElement("div");c.style.cssText="border: 1px solid; border-color:red green; position: absolute; height: 5px; top: -999px;background-image: url("+(k.blankGif||
+f.toUrl("./resources/blank.gif"))+");";b.body().appendChild(c);var a=e.getComputedStyle(c),l=a.backgroundImage,a=a.borderTopColor==a.borderRightColor||l&&("none"==l||"url(invalid-url:)"==l);j.destroy(c);return a});i(90,function(){c("highcontrast")&&h.add(b.body(),"dj_a11y")});return c})},"dijit/_TemplatedMixin":function(){define("dojo/_base/lang,dojo/touch,./_WidgetBase,dojo/string,dojo/cache,dojo/_base/array,dojo/_base/declare,dojo/dom-construct,dojo/sniff,dojo/_base/unload".split(","),function(f,
+k,h,j,e,c,i,b,g,a){var l=i("dijit._TemplatedMixin",null,{templateString:null,templatePath:null,_skipNodeCache:!1,_earlyTemplatedStartup:!1,constructor:function(){this._attachPoints=[];this._attachEvents=[]},_stringRepl:function(a){var b=this.declaredClass,c=this;return j.substitute(a,this,function(a,d){"!"==d.charAt(0)&&(a=f.getObject(d.substr(1),!1,c));if("undefined"==typeof a)throw Error(b+" template:"+d);return null==a?"":"!"==d.charAt(0)?a:a.toString().replace(/"/g,"&quot;")},this)},buildRendering:function(){if(!this.templateString)this.templateString=
+e(this.templatePath,{sanitize:!0});var a=l.getCachedTemplate(this.templateString,this._skipNodeCache,this.ownerDocument),c;if(f.isString(a)){if(c=b.toDom(this._stringRepl(a),this.ownerDocument),1!=c.nodeType)throw Error("Invalid template: "+a);}else c=a.cloneNode(!0);this.domNode=c;this.inherited(arguments);this._attachTemplateNodes(c,function(a,b){return a.getAttribute(b)});this._beforeFillContent();this._fillContent(this.srcNodeRef)},_beforeFillContent:function(){},_fillContent:function(a){var b=
+this.containerNode;if(a&&b)for(;a.hasChildNodes();)b.appendChild(a.firstChild)},_attachTemplateNodes:function(a,b){for(var c=f.isArray(a)?a:a.all||a.getElementsByTagName("*"),g=f.isArray(a)?0:-1;0>g||c[g];g++){var e=-1==g?a:c[g];if(!this.widgetsInTemplate||!b(e,"dojoType")&&!b(e,"data-dojo-type")){var l=b(e,"dojoAttachPoint")||b(e,"data-dojo-attach-point");if(l)for(var i=l.split(/\s*,\s*/);l=i.shift();)f.isArray(this[l])?this[l].push(e):this[l]=e,this._attachPoints.push(l);if(l=b(e,"dojoAttachEvent")||
+b(e,"data-dojo-attach-event"))for(var i=l.split(/\s*,\s*/),h=f.trim;l=i.shift();)if(l){var j=null;-1!=l.indexOf(":")?(j=l.split(":"),l=h(j[0]),j=h(j[1])):l=h(l);j||(j=l);this._attachEvents.push(this.connect(e,k[l]||l,j))}}}},destroyRendering:function(){c.forEach(this._attachPoints,function(a){delete this[a]},this);this._attachPoints=[];c.forEach(this._attachEvents,this.disconnect,this);this._attachEvents=[];this.inherited(arguments)}});l._templateCache={};l.getCachedTemplate=function(a,c,g){var e=
+l._templateCache,f=a,i=e[f];if(i){try{if(!i.ownerDocument||i.ownerDocument==(g||document))return i}catch(h){}b.destroy(i)}a=j.trim(a);if(c||a.match(/\$\{([^\}]+)\}/g))return e[f]=a;c=b.toDom(a,g);if(1!=c.nodeType)throw Error("Invalid template: "+a);return e[f]=c};g("ie")&&a.addOnWindowUnload(function(){var a=l._templateCache,c;for(c in a){var g=a[c];"object"==typeof g&&b.destroy(g);delete a[c]}});f.extend(h,{dojoAttachEvent:"",dojoAttachPoint:""});return l})},"dojo/string":function(){define(["./_base/kernel",
+"./_base/lang"],function(f,k){var h={};k.setObject("dojo.string",h);h.rep=function(f,e){if(0>=e||!f)return"";for(var c=[];;){e&1&&c.push(f);if(!(e>>=1))break;f+=f}return c.join("")};h.pad=function(f,e,c,i){c||(c="0");f=""+f;e=h.rep(c,Math.ceil((e-f.length)/c.length));return i?f+e:e+f};h.substitute=function(h,e,c,i){i=i||f.global;c=c?k.hitch(i,c):function(b){return b};return h.replace(/\$\{([^\s\:\}]+)(?:\:([^\s\:\}]+))?\}/g,function(b,g,a){b=k.getObject(g,!1,e);a&&(b=k.getObject(a,!1,i).call(i,b,
+g));return c(b,g).toString()})};h.trim=String.prototype.trim?k.trim:function(f){for(var f=f.replace(/^\s+/,""),e=f.length-1;0<=e;e--)if(/\S/.test(f.charAt(e))){f=f.substring(0,e+1);break}return f};return h})},"dojo/cache":function(){define("dojo/cache",["./_base/kernel","./text"],function(f){return f.cache})},"dojo/text":function(){define(["./_base/kernel","require","./has","./_base/xhr"],function(f,k,h,j){var e;e=function(a,b,d){j("GET",{url:a,sync:!!b,load:d,headers:f.config.textPluginHeaders||
+{}})};var c={},i=function(a){if(a){var a=a.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,""),b=a.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);b&&(a=b[1])}else a="";return a},b={},g={};f.cache=function(a,b,d){var g;"string"==typeof a?/\//.test(a)?(g=a,d=b):g=k.toUrl(a.replace(/\./g,"/")+(b?"/"+b:"")):(g=a+"",d=b);a=void 0!=d&&"string"!=typeof d?d.value:d;d=d&&d.sanitize;if("string"==typeof a)return c[g]=a,d?i(a):a;if(null===a)return delete c[g],null;g in c||e(g,!0,function(a){c[g]=
+a});return d?i(c[g]):c[g]};return{dynamic:!0,normalize:function(a,b){var d=a.split("!"),c=d[0];return(/^\./.test(c)?b(c):c)+(d[1]?"!"+d[1]:"")},load:function(a,f,d){var a=a.split("!"),h=1<a.length,m=a[0],j=f.toUrl(a[0]),a="url:"+j,k=b,r=function(a){d(h?i(a):a)};m in c?k=c[m]:a in f.cache?k=f.cache[a]:j in c&&(k=c[j]);if(k===b)if(g[j])g[j].push(r);else{var q=g[j]=[r];e(j,!f.async,function(a){c[m]=c[j]=a;for(var b=0;b<q.length;)q[b++](a);delete g[j]})}else r(k)}}})},"dijit/layout/_LayoutWidget":function(){define("dojo/_base/lang,../_Widget,../_Container,../_Contained,../Viewport,dojo/_base/declare,dojo/dom-class,dojo/dom-geometry,dojo/dom-style".split(","),
+function(f,k,h,j,e,c,i,b,g){return c("dijit.layout._LayoutWidget",[k,h,j],{baseClass:"dijitLayoutContainer",isLayoutContainer:!0,buildRendering:function(){this.inherited(arguments);i.add(this.domNode,"dijitContainer")},startup:function(){if(!this._started){this.inherited(arguments);var a=this.getParent&&this.getParent();if(!a||!a.isLayoutContainer)this.resize(),this.own(e.on("resize",f.hitch(this,"resize")))}},resize:function(a,c){var d=this.domNode;a&&b.setMarginBox(d,a);var e=c||{};f.mixin(e,a||
+{});if(!("h"in e)||!("w"in e))e=f.mixin(b.getMarginBox(d),e);var i=g.getComputedStyle(d),h=b.getMarginExtents(d,i),j=b.getBorderExtents(d,i),e=this._borderBox={w:e.w-(h.w+j.w),h:e.h-(h.h+j.h)},h=b.getPadExtents(d,i);this._contentBox={l:g.toPixelValue(d,i.paddingLeft),t:g.toPixelValue(d,i.paddingTop),w:e.w-h.w,h:e.h-h.h};this.layout()},layout:function(){},_setupChild:function(a){i.add(a.domNode,this.baseClass+"-child "+(a.baseClass?this.baseClass+"-"+a.baseClass:""))},addChild:function(a,b){this.inherited(arguments);
+this._started&&this._setupChild(a)},removeChild:function(a){i.remove(a.domNode,this.baseClass+"-child"+(a.baseClass?" "+this.baseClass+"-"+a.baseClass:""));this.inherited(arguments)}})})},"dijit/_Container":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-construct"],function(f,k,h){return k("dijit._Container",null,{buildRendering:function(){this.inherited(arguments);if(!this.containerNode)this.containerNode=this.domNode},addChild:function(f,e){var c=this.containerNode;if(e&&"number"==
+typeof e){var i=this.getChildren();if(i&&i.length>=e)c=i[e-1].domNode,e="after"}h.place(f.domNode,c,e);this._started&&!f._started&&f.startup()},removeChild:function(f){"number"==typeof f&&(f=this.getChildren()[f]);if(f)(f=f.domNode)&&f.parentNode&&f.parentNode.removeChild(f)},hasChildren:function(){return 0<this.getChildren().length},_getSiblingOfChild:function(h,e){var c=this.getChildren(),i=f.indexOf(this.getChildren(),h);return c[i+e]},getIndexOfChild:function(h){return f.indexOf(this.getChildren(),
+h)}})})},"dijit/_Contained":function(){define(["dojo/_base/declare","./registry"],function(f,k){return f("dijit._Contained",null,{_getSibling:function(f){var j=this.domNode;do j=j[f+"Sibling"];while(j&&1!=j.nodeType);return j&&k.byNode(j)},getPreviousSibling:function(){return this._getSibling("previous")},getNextSibling:function(){return this._getSibling("next")},getIndexInParent:function(){var f=this.getParent();return!f||!f.getIndexOfChild?-1:f.getIndexOfChild(this)}})})},"dijit/Viewport":function(){define("dojo/Evented,dojo/on,dojo/ready,dojo/sniff,dojo/_base/window,dojo/window".split(","),
+function(f,k,h,j,e,c){var i=new f;h(200,function(){var b=c.getBox();i._rlh=k(e.global,"resize",function(){var a=c.getBox();b.h==a.h&&b.w==a.w||(b=a,i.emit("resize"))});if(8==j("ie")){var g=screen.deviceXDPI;setInterval(function(){if(screen.deviceXDPI!=g)g=screen.deviceXDPI,i.emit("resize")},500)}});return i})},"dijit/layout/utils":function(){define("dojo/_base/array,dojo/dom-class,dojo/dom-geometry,dojo/dom-style,dojo/_base/lang,../main".split(","),function(f,k,h,j,e,c){function i(b,c){var a=b.resize?
+b.resize(c):h.setMarginBox(b.domNode,c);a?e.mixin(b,a):(e.mixin(b,h.getMarginBox(b.domNode)),e.mixin(b,c))}c=e.getObject("layout",!0,c);c.marginBox2contentBox=function(b,c){var a=j.getComputedStyle(b),e=h.getMarginExtents(b,a),d=h.getPadBorderExtents(b,a);return{l:j.toPixelValue(b,a.paddingLeft),t:j.toPixelValue(b,a.paddingTop),w:c.w-(e.w+d.w),h:c.h-(e.h+d.h)}};c.layoutChildren=function(b,c,a,l,d){c=e.mixin({},c);k.add(b,"dijitLayoutContainer");a=f.filter(a,function(a){return"center"!=a.region&&"client"!=
+a.layoutAlign}).concat(f.filter(a,function(a){return"center"==a.region||"client"==a.layoutAlign}));f.forEach(a,function(a){var b=a.domNode,e=a.region||a.layoutAlign;if(!e)throw Error("No region setting for "+a.id);var f=b.style;f.left=c.l+"px";f.top=c.t+"px";f.position="absolute";k.add(b,"dijitAlign"+(e.substring(0,1).toUpperCase()+e.substring(1)));b={};l&&l==a.id&&(b["top"==a.region||"bottom"==a.region?"h":"w"]=d);"top"==e||"bottom"==e?(b.w=c.w,i(a,b),c.h-=a.h,"top"==e?c.t+=a.h:f.top=c.t+c.h+"px"):
+"left"==e||"right"==e?(b.h=c.h,i(a,b),c.w-=a.w,"left"==e?c.l+=a.w:f.left=c.l+c.w+"px"):("client"==e||"center"==e)&&i(a,c)})};return{marginBox2contentBox:c.marginBox2contentBox,layoutChildren:c.layoutChildren}})},"dijit/layout/ContentPane":function(){define("dojo/_base/kernel,dojo/_base/lang,../_Widget,../_Container,./_ContentPaneResizeMixin,dojo/string,dojo/html,dojo/i18n!../nls/loading,dojo/_base/array,dojo/_base/declare,dojo/_base/Deferred,dojo/dom,dojo/dom-attr,dojo/_base/xhr,dojo/i18n,dojo/when".split(","),
+function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o){return a("dijit.layout.ContentPane",[h,j,e],{href:"",content:"",extractContent:!1,parseOnLoad:!0,parserScope:f._scopeName,preventCache:!1,preload:!1,refreshOnShow:!1,loadingMessage:"<span class='dijitContentPaneLoading'><span class='dijitInline dijitIconLoading'></span>${loadingState}</span>",errorMessage:"<span class='dijitContentPaneError'><span class='dijitInline dijitIconError'></span>${errorState}</span>",isLoaded:!1,baseClass:"dijitContentPane",ioArgs:{},
+onLoadDeferred:null,_setTitleAttr:null,stopParser:!0,template:!1,create:function(a,b){if((!a||!a.template)&&b&&!("href"in a)&&!("content"in a)){for(var b=d.byId(b),c=b.ownerDocument.createDocumentFragment();b.firstChild;)c.appendChild(b.firstChild);a=k.delegate(a,{content:c})}this.inherited(arguments,[a,b])},postMixInProperties:function(){this.inherited(arguments);var a=n.getLocalization("dijit","loading",this.lang);this.loadingMessage=c.substitute(this.loadingMessage,a);this.errorMessage=c.substitute(this.errorMessage,
+a)},buildRendering:function(){this.inherited(arguments);if(!this.containerNode)this.containerNode=this.domNode;this.domNode.title="";p.get(this.domNode,"role")||this.domNode.setAttribute("role","group")},startup:function(){this.inherited(arguments);this._contentSetter&&g.forEach(this._contentSetter.parseResults,function(a){if(!a._started&&!a._destroyed&&k.isFunction(a.startup))a.startup(),a._started=!0},this)},_startChildren:function(){g.forEach(this.getChildren(),function(a){if(!a._started&&!a._destroyed&&
+k.isFunction(a.startup))a.startup(),a._started=!0});this._contentSetter&&g.forEach(this._contentSetter.parseResults,function(a){if(!a._started&&!a._destroyed&&k.isFunction(a.startup))a.startup(),a._started=!0},this)},setHref:function(a){f.deprecated("dijit.layout.ContentPane.setHref() is deprecated. Use set('href', ...) instead.","","2.0");return this.set("href",a)},_setHrefAttr:function(a){this.cancel();this.onLoadDeferred=new l(k.hitch(this,"cancel"));this.onLoadDeferred.then(k.hitch(this,"onLoad"));
+this._set("href",a);this.preload||this._created&&this._isShown()?this._load():this._hrefChanged=!0;return this.onLoadDeferred},setContent:function(a){f.deprecated("dijit.layout.ContentPane.setContent() is deprecated. Use set('content', ...) instead.","","2.0");this.set("content",a)},_setContentAttr:function(a){this._set("href","");this.cancel();this.onLoadDeferred=new l(k.hitch(this,"cancel"));this._created&&this.onLoadDeferred.then(k.hitch(this,"onLoad"));this._setContent(a||"");this._isDownloaded=
!1;return this.onLoadDeferred},_getContentAttr:function(){return this.containerNode.innerHTML},cancel:function(){this._xhrDfd&&-1==this._xhrDfd.fired&&this._xhrDfd.cancel();delete this._xhrDfd;this.onLoadDeferred=null},destroy:function(){this.cancel();this.inherited(arguments)},destroyRecursive:function(a){this._beingDestroyed||this.inherited(arguments)},_onShow:function(){this.inherited(arguments);if(this.href&&!this._xhrDfd&&(!this.isLoaded||this._hrefChanged||this.refreshOnShow))return this.refresh()},
-refresh:function(){this.cancel();this.onLoadDeferred=new k(j.hitch(this,"cancel"));this.onLoadDeferred.then(j.hitch(this,"onLoad"));this._load();return this.onLoadDeferred},_load:function(){this._setContent(this.onDownloadStart(),!0);var a=this,b={preventCache:this.preventCache||this.refreshOnShow,url:this.href,handleAs:"text"};j.isObject(this.ioArgs)&&j.mixin(b,this.ioArgs);var d=this._xhrDfd=(this.ioMethod||m.get)(b),c;d.then(function(b){c=b;try{return a._isDownloaded=!0,a._setContent(b,!1)}catch(d){a._onError("Content",
-d)}},function(b){d.canceled||a._onError("Download",b);delete a._xhrDfd;return b}).then(function(){a.onDownloadEnd();delete a._xhrDfd;return c});delete this._hrefChanged},_onLoadHandler:function(a){this._set("isLoaded",!0);try{this.onLoadDeferred.resolve(a)}catch(b){}},_onUnloadHandler:function(){this._set("isLoaded",!1);try{this.onUnload()}catch(a){}},destroyDescendants:function(a){this.isLoaded&&this._onUnloadHandler();var b=this._contentSetter;f.forEach(this.getChildren(),function(b){b.destroyRecursive?
-b.destroyRecursive(a):b.destroy&&b.destroy(a);b._destroyed=!0});b&&(f.forEach(b.parseResults,function(b){if(!b._destroyed)b.destroyRecursive?b.destroyRecursive(a):b.destroy&&b.destroy(a),b._destroyed=!0}),delete b.parseResults);a||h._emptyNode(this.containerNode);delete this._singleChild},_setContent:function(a,b){this.destroyDescendants();var d=this._contentSetter;if(!(d&&d instanceof h._ContentSetter))d=this._contentSetter=new h._ContentSetter({node:this.containerNode,_onError:j.hitch(this,this._onError),
-onContentError:j.hitch(this,function(a){a=this.onContentError(a);try{this.containerNode.innerHTML=a}catch(b){}})});var c=j.mixin({cleanContent:this.cleanContent,extractContent:this.extractContent,parseContent:!a.domNode&&this.parseOnLoad,parserScope:this.parserScope,startup:!1,dir:this.dir,lang:this.lang,textDir:this.textDir},this._contentSetterParams||{}),c=d.set(j.isObject(a)&&a.domNode?a.domNode:a,c),f=this;return o(c&&c.then?c:d.parseDeferred,function(){delete f._contentSetterParams;b||(f._started&&
-(f._startChildren(),f._scheduleLayout()),f._onLoadHandler(a))})},_onError:function(a,b,d){this.onLoadDeferred.reject(b);a=this["on"+a+"Error"].call(this,b);d||a&&this._setContent(a,!0)},onLoad:function(){},onUnload:function(){},onDownloadStart:function(){return this.loadingMessage},onContentError:function(){},onDownloadError:function(){return this.errorMessage},onDownloadEnd:function(){}})})},"dijit/layout/_ContentPaneResizeMixin":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom-class,dojo/dom-geometry,dojo/dom-style,dojo/_base/lang,dojo/query,dojo/sniff,../registry,../Viewport,./utils".split(","),
-function(e,j,i,l,c,g,h,b,f,a,k){return j("dijit.layout._ContentPaneResizeMixin",null,{doLayout:!0,isLayoutContainer:!0,startup:function(){if(!this._started){var b=this.getParent();this._childOfLayoutWidget=b&&b.isLayoutContainer;this._needLayout=!this._childOfLayoutWidget;this.inherited(arguments);this._isShown()&&this._onShow();this._childOfLayoutWidget||this.own(a.on("resize",g.hitch(this,"resize")))}},_checkIfSingleChild:function(){var a=[],b=!1;h("> *",this.containerNode).some(function(c){var g=
-f.byNode(c);g&&g.resize?a.push(g):c.offsetHeight&&(b=!0)});this._singleChild=1==a.length&&!b?a[0]:null;i.toggle(this.containerNode,this.baseClass+"SingleChild",!!this._singleChild)},resize:function(a,b){this._resizeCalled=!0;this._scheduleLayout(a,b)},_scheduleLayout:function(a,b){this._isShown()?this._layout(a,b):(this._needLayout=!0,this._changeSize=a,this._resultSize=b)},_layout:function(a,b){delete this._needLayout;!this._wasShown&&!1!==this.open&&this._onShow();a&&l.setMarginBox(this.domNode,
-a);var c=this.containerNode;if(c===this.domNode){var f=b||{};g.mixin(f,a||{});if(!("h"in f)||!("w"in f))f=g.mixin(l.getMarginBox(c),f);this._contentBox=k.marginBox2contentBox(c,f)}else this._contentBox=l.getContentBox(c);this._layoutChildren()},_layoutChildren:function(){this.doLayout&&this._checkIfSingleChild();if(this._singleChild&&this._singleChild.resize){var a=this._contentBox||l.getContentBox(this.containerNode);this._singleChild.resize({w:a.w,h:a.h})}else e.forEach(this.getChildren(),function(a){a.resize&&
-a.resize()})},_isShown:function(){if(this._childOfLayoutWidget)return this._resizeCalled&&"open"in this?this.open:this._resizeCalled;if("open"in this)return this.open;var a=this.domNode,b=this.domNode.parentNode;return"none"!=a.style.display&&"hidden"!=a.style.visibility&&!i.contains(a,"dijitHidden")&&b&&b.style&&"none"!=b.style.display},_onShow:function(){this._wasShown=!0;this._needLayout&&this._layout(this._changeSize,this._resultSize);this.inherited(arguments)}})})},"dojo/html":function(){define("./_base/kernel,./_base/lang,./_base/array,./_base/declare,./dom,./dom-construct,./parser".split(","),
-function(e,j,i,l,c,g,h){var b={};j.setObject("dojo.html",b);var f=0;b._secureForInnerHtml=function(a){return a.replace(/(?:\s*<!DOCTYPE\s[^>]+>|<title[^>]*>[\s\S]*?<\/title>)/ig,"")};b._emptyNode=g.empty;b._setNodeContent=function(a,b){g.empty(a);if(b)if("string"==typeof b&&(b=g.toDom(b,a.ownerDocument)),!b.nodeType&&j.isArrayLike(b))for(var d=b.length,c=0;c<b.length;c=d==b.length?c+1:0)g.place(b[c],a,"last");else g.place(b,a,"last");return a};b._ContentSetter=l("dojo.html._ContentSetter",null,{node:"",
-content:"",id:"",cleanContent:!1,extractContent:!1,parseContent:!1,parserScope:e._scopeName,startup:!0,constructor:function(a,b){j.mixin(this,a||{});b=this.node=c.byId(this.node||b);if(!this.id)this.id=["Setter",b?b.id||b.tagName:"",f++].join("_")},set:function(a,b){if(void 0!==a)this.content=a;b&&this._mixin(b);this.onBegin();this.setContent();var d=this.onEnd();return d&&d.then?d:this.node},setContent:function(){var a=this.node;if(!a)throw Error(this.declaredClass+": setContent given no node");
-try{a=b._setNodeContent(a,this.content)}catch(c){var d=this.onContentError(c);try{a.innerHTML=d}catch(f){}}this.node=a},empty:function(){this.parseDeferred&&(this.parseDeferred.isResolved()||this.parseDeferred.cancel(),delete this.parseDeferred);this.parseResults&&this.parseResults.length&&(i.forEach(this.parseResults,function(a){a.destroy&&a.destroy()}),delete this.parseResults);b._emptyNode(this.node)},onBegin:function(){var a=this.content;if(j.isString(a)&&(this.cleanContent&&(a=b._secureForInnerHtml(a)),
-this.extractContent)){var c=a.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);c&&(a=c[1])}this.empty();this.content=a;return this.node},onEnd:function(){this.parseContent&&this._parse();return this.node},tearDown:function(){delete this.parseResults;delete this.parseDeferred;delete this.node;delete this.content},onContentError:function(a){return"Error occurred setting content: "+a},onExecError:function(a){return"Error occurred executing scripts: "+a},_mixin:function(a){var b={},d;for(d in a)d in b||
-(this[d]=a[d])},_parse:function(){var a=this.node;try{var b={};i.forEach(["dir","lang","textDir"],function(a){this[a]&&(b[a]=this[a])},this);var d=this;this.parseDeferred=h.parse({rootNode:a,noStart:!this.startup,inherited:b,scope:this.parserScope}).then(function(a){return d.parseResults=a})}catch(c){this._onError("Content",c,"Error parsing in _ContentSetter#"+this.id)}},_onError:function(a,c,d){a=this["on"+a+"Error"].call(this,c);d||a&&b._setNodeContent(this.node,a,!0)}});b.set=function(a,c,d){void 0==
-c&&(c="");return d?(new b._ContentSetter(j.mixin(d,{content:c,node:a}))).set():b._setNodeContent(a,c,!0)};return b})},"dojo/parser":function(){define("require,./_base/kernel,./_base/lang,./_base/array,./_base/config,./_base/html,./_base/window,./_base/url,./_base/json,./aspect,./date/stamp,./Deferred,./has,./query,./on,./ready".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o){function r(a){var b=a._nameCaseMap,d=a.prototype;if(!b||b._extendCnt<v){var b=a._nameCaseMap={},c;for(c in d)"_"!==c.charAt(0)&&
-(b[c.toLowerCase()]=c);b._extendCnt=v}return b}function q(a){var b=a.join();if(!s[b]){for(var d=[],c=0,f=a.length;c<f;c++){var g=a[c];d[d.length]=s[g]=s[g]||i.getObject(g)||~g.indexOf("/")&&e(g)}a=d.shift();s[b]=d.length?a.createSubclass?a.createSubclass(d):a.extend.apply(a,d):a}return s[b]}var v=0;a.after(i,"extend",function(){v++},!0);var s={},u={_clearCache:function(){v++;s={}},_functionFromScript:function(a,b){var d="",c="",f=a.getAttribute(b+"args")||a.getAttribute("args"),g=a.getAttribute("with"),
-f=(f||"").split(/\s*,\s*/);g&&g.length&&l.forEach(g.split(/\s*,\s*/),function(a){d+="with("+a+"){";c+="}"});return new Function(f,d+a.innerHTML+c)},instantiate:function(a,b,d){var b=b||{},d=d||{},c=(d.scope||j._scopeName)+"Type",f="data-"+(d.scope||j._scopeName)+"-",g=f+"type",e=f+"mixins",k=[];l.forEach(a,function(a){var d=c in b?b[c]:a.getAttribute(g)||a.getAttribute(c);if(d){var f=a.getAttribute(e),d=f?[d].concat(f.split(/\s*,\s*/)):[d];k.push({node:a,types:d})}});return this._instantiate(k,b,
-d)},_instantiate:function(a,b,d){a=l.map(a,function(a){var c=a.ctor||q(a.types);if(!c)throw Error("Unable to resolve constructor for: '"+a.types.join()+"'");return this.construct(c,a.node,b,d,a.scripts,a.inherited)},this);!b._started&&!d.noStart&&l.forEach(a,function(a){"function"===typeof a.startup&&!a._started&&a.startup()});return a},construct:function(d,c,g,e,h,o){var t;var q=d&&d.prototype,e=e||{},u={};e.defaults&&i.mixin(u,e.defaults);o&&i.mixin(u,o);var v;p("dom-attributes-explicit")?v=c.attributes:
-p("dom-attributes-specified-flag")?v=l.filter(c.attributes,function(a){return a.specified}):(o=(/^input$|^img$/i.test(c.nodeName)?c:c.cloneNode(!1)).outerHTML.replace(/=[^\s"']+|="[^"]*"|='[^']*'/g,"").replace(/^\s*<[a-zA-Z0-9]*\s*/,"").replace(/\s*>.*$/,""),v=l.map(o.split(/\s+/),function(a){var b=a.toLowerCase();return{name:a,value:"LI"==c.nodeName&&"value"==a||"enctype"==b?c.getAttribute(b):c.getAttributeNode(b).value}}));var s=e.scope||j._scopeName,o="data-"+s+"-",A={};"dojo"!==s&&(A[o+"props"]=
-"data-dojo-props",A[o+"type"]="data-dojo-type",A[o+"mixins"]="data-dojo-mixins",A[s+"type"]="dojoType",A[o+"id"]="data-dojo-id");for(var s=0,w,x=[],K,H;w=v[s++];){var C=w.name,F=C.toLowerCase();w=w.value;switch(A[F]||F){case "data-dojo-type":case "dojotype":case "data-dojo-mixins":break;case "data-dojo-props":H=w;break;case "data-dojo-id":case "jsid":K=w;break;case "data-dojo-attach-point":case "dojoattachpoint":u.dojoAttachPoint=w;break;case "data-dojo-attach-event":case "dojoattachevent":u.dojoAttachEvent=
-w;break;case "class":u["class"]=c.className;break;case "style":u.style=c.style&&c.style.cssText;break;default:if(C in q||(C=r(d)[F]||C),C in q)switch(typeof q[C]){case "string":u[C]=w;break;case "number":u[C]=w.length?Number(w):NaN;break;case "boolean":u[C]="false"!=w.toLowerCase();break;case "function":u[C]=""===w||-1!=w.search(/[^\w\.]+/i)?new Function(w):i.getObject(w,!1)||new Function(w);x.push(C);break;default:F=q[C],u[C]=F&&"length"in F?w?w.split(/\s*,\s*/):[]:F instanceof Date?""==w?new Date(""):
-"now"==w?new Date:k.fromISOString(w):F instanceof b?j.baseUrl+w:f.fromJson(w)}else u[C]=w}}for(s=0;s<x.length;s++)v=x[s].toLowerCase(),c.removeAttribute(v),c[v]=null;if(H)try{H=f.fromJson.call(e.propsThis,"{"+H+"}"),i.mixin(u,H)}catch(O){throw Error(O.toString()+" in data-dojo-props='"+H+"'");}i.mixin(u,g);h||(h=d&&(d._noScript||q._noScript)?[]:m("> script[type^='dojo/']",c));g=[];e=[];H=[];x=[];if(h)for(s=0;s<h.length;s++){var D=h[s];c.removeChild(D);v=D.getAttribute(o+"event")||D.getAttribute("event");
-A=D.getAttribute(o+"prop");C=D.getAttribute(o+"method");F=D.getAttribute(o+"advice");w=D.getAttribute("type");D=this._functionFromScript(D,o);v?"dojo/connect"==w?g.push({method:v,func:D}):"dojo/on"==w?x.push({event:v,func:D}):u[v]=D:"dojo/aspect"==w?g.push({method:C,advice:F,func:D}):"dojo/watch"==w?H.push({prop:A,func:D}):e.push(D)}t=(h=d.markupFactory||q.markupFactory)?h(u,c,d):new d(u,c),d=t;K&&i.setObject(K,d);for(s=0;s<g.length;s++)a[g[s].advice||"after"](d,g[s].method,i.hitch(d,g[s].func),!0);
-for(s=0;s<e.length;s++)e[s].call(d);for(s=0;s<H.length;s++)d.watch(H[s].prop,H[s].func);for(s=0;s<x.length;s++)n(d,x[s].event,x[s].func);return d},scan:function(a,b){function c(a){if(!a.inherited){a.inherited={};var b=a.node,d=c(a.parent),b={dir:b.getAttribute("dir")||d.dir,lang:b.getAttribute("lang")||d.lang,textDir:b.getAttribute(o)||d.textDir},f;for(f in b)b[f]&&(a.inherited[f]=b[f])}return a.inherited}var f=[],g=[],k={},m=(b.scope||j._scopeName)+"Type",h="data-"+(b.scope||j._scopeName)+"-",i=
-h+"type",o=h+"textdir",h=h+"mixins",n=a.firstChild,u=b.inherited;if(!u){var r=function(a,b){return a.getAttribute&&a.getAttribute(b)||a.parentNode&&r(a.parentNode,b)},u={dir:r(a,"dir"),lang:r(a,"lang"),textDir:r(a,o)},v;for(v in u)u[v]||delete u[v]}for(var u={inherited:u},s,C;;)if(n)if(1!=n.nodeType)n=n.nextSibling;else if(s&&"script"==n.nodeName.toLowerCase())(F=n.getAttribute("type"))&&/^dojo\/\w/i.test(F)&&s.push(n),n=n.nextSibling;else if(C)n=n.nextSibling;else{var F=n.getAttribute(i)||n.getAttribute(m);
-v=n.firstChild;if(!F&&(!v||3==v.nodeType&&!v.nextSibling))n=n.nextSibling;else{C=null;if(F){var O=n.getAttribute(h);s=O?[F].concat(O.split(/\s*,\s*/)):[F];try{C=q(s)}catch(D){}C||l.forEach(s,function(a){~a.indexOf("/")&&!k[a]&&(k[a]=!0,g[g.length]=a)});O=C&&!C.prototype._noScript?[]:null;u={types:s,ctor:C,parent:u,node:n,scripts:O};u.inherited=c(u);f.push(u)}else u={node:n,scripts:s,parent:u};n=v;s=O;C=C&&C.prototype.stopParser&&!b.template}}else{if(!u||!u.node)break;n=u.node.nextSibling;C=!1;u=u.parent;
-s=u.scripts}var L=new d;g.length?(p("dojo-debug-messages"),e(g,function(){L.resolve(l.filter(f,function(a){if(!a.ctor)try{a.ctor=q(a.types)}catch(d){}for(var c=a.parent;c&&!c.types;)c=c.parent;var f=a.ctor&&a.ctor.prototype;a.instantiateChildren=!(f&&f.stopParser&&!b.template);a.instantiate=!c||c.instantiate&&c.instantiateChildren;return a.instantiate}))})):L.resolve(f);return L.promise},_require:function(a){var a=f.fromJson("{"+a.innerHTML+"}"),b=[],c=[],g=new d,k;for(k in a)b.push(k),c.push(a[k]);
-e(c,function(){for(var a=0;a<b.length;a++)i.setObject(b[a],arguments[a]);g.resolve(arguments)});return g.promise},_scanAmd:function(a){var b=new d,c=b.promise;b.resolve(!0);var f=this;m("script[type='dojo/require']",a).forEach(function(a){c=c.then(function(){return f._require(a)});a.parentNode.removeChild(a)});return c},parse:function(a,b){var d;!b&&a&&a.rootNode?(b=a,d=b.rootNode):a&&i.isObject(a)&&!("nodeType"in a)?b=a:d=a;d=d?g.byId(d):h.body();var b=b||{},c=b.template?{template:!0}:{},f=[],e=
-this,k=this._scanAmd(d,b).then(function(){return e.scan(d,b)}).then(function(a){return f=f.concat(e._instantiate(a,c,b))}).otherwise(function(a){throw a;});i.mixin(f,k);return f}};j.parser=u;c.parseOnLoad&&o(100,u,"parse");return u})},"dojo/_base/url":function(){define(["./kernel"],function(e){var j=/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/,i=/^((([^\[:]+):)?([^@]+)@)?(\[([^\]]+)\]|([^\[:]*))(:([0-9]+))?$/,l=function(){for(var c=arguments,g=[c[0]],e=1;e<c.length;e++)if(c[e]){var b=
-new l(c[e]+""),g=new l(g[0]+"");if(""==b.path&&!b.scheme&&!b.authority&&!b.query){if(null!=b.fragment)g.fragment=b.fragment;b=g}else if(!b.scheme&&(b.scheme=g.scheme,!b.authority&&(b.authority=g.authority,"/"!=b.path.charAt(0)))){for(var g=(g.path.substring(0,g.path.lastIndexOf("/")+1)+b.path).split("/"),f=0;f<g.length;f++)"."==g[f]?f==g.length-1?g[f]="":(g.splice(f,1),f--):0<f&&!(1==f&&""==g[0])&&".."==g[f]&&".."!=g[f-1]&&(f==g.length-1?(g.splice(f,1),g[f-1]=""):(g.splice(f-1,2),f-=2));b.path=g.join("/")}g=
-[];b.scheme&&g.push(b.scheme,":");b.authority&&g.push("//",b.authority);g.push(b.path);b.query&&g.push("?",b.query);b.fragment&&g.push("#",b.fragment)}this.uri=g.join("");c=this.uri.match(j);this.scheme=c[2]||(c[1]?"":null);this.authority=c[4]||(c[3]?"":null);this.path=c[5];this.query=c[7]||(c[6]?"":null);this.fragment=c[9]||(c[8]?"":null);if(null!=this.authority)c=this.authority.match(i),this.user=c[3]||null,this.password=c[4]||null,this.host=c[6]||c[7],this.port=c[9]||null};l.prototype.toString=
-function(){return this.uri};return e._Url=l})},"dojo/date/stamp":function(){define(["../_base/lang","../_base/array"],function(e,j){var i={};e.setObject("dojo.date.stamp",i);i.fromISOString=function(e,c){if(!i._isoRegExp)i._isoRegExp=/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(.\d+)?)?((?:[+-](\d{2}):(\d{2}))|Z)?)?$/;var g=i._isoRegExp.exec(e),h=null;if(g){g.shift();g[1]&&g[1]--;g[6]&&(g[6]*=1E3);c&&(c=new Date(c),j.forEach(j.map("FullYear,Month,Date,Hours,Minutes,Seconds,Milliseconds".split(","),
-function(a){return c["get"+a]()}),function(a,b){g[b]=g[b]||a}));h=new Date(g[0]||1970,g[1]||0,g[2]||1,g[3]||0,g[4]||0,g[5]||0,g[6]||0);100>g[0]&&h.setFullYear(g[0]||1970);var b=0,f=g[7]&&g[7].charAt(0);"Z"!=f&&(b=60*(g[8]||0)+(Number(g[9])||0),"-"!=f&&(b*=-1));f&&(b-=h.getTimezoneOffset());b&&h.setTime(h.getTime()+6E4*b)}return h};i.toISOString=function(e,c){var g=function(a){return 10>a?"0"+a:a},c=c||{},h=[],b=c.zulu?"getUTC":"get",f="";"time"!=c.selector&&(f=e[b+"FullYear"](),f=["0000".substr((f+
-"").length)+f,g(e[b+"Month"]()+1),g(e[b+"Date"]())].join("-"));h.push(f);if("date"!=c.selector){f=[g(e[b+"Hours"]()),g(e[b+"Minutes"]()),g(e[b+"Seconds"]())].join(":");b=e[b+"Milliseconds"]();c.milliseconds&&(f+="."+(100>b?"0":"")+g(b));if(c.zulu)f+="Z";else if("time"!=c.selector)var b=e.getTimezoneOffset(),a=Math.abs(b),f=f+((0<b?"-":"+")+g(Math.floor(a/60))+":"+g(a%60));h.push(f)}return h.join("T")};return i})},"dojox/layout/ExpandoPane":function(){define("dojo/_base/kernel,dojo/_base/lang,dojo/_base/declare,dojo/_base/array,dojo/_base/connect,dojo/_base/event,dojo/_base/fx,dojo/dom-style,dojo/dom-class,dojo/dom-geometry,dojo/text!./resources/ExpandoPane.html,dijit/layout/ContentPane,dijit/_TemplatedMixin,dijit/_Contained,dijit/_Container".split(","),
-function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n){e.experimental("dojox.layout.ExpandoPane");return i("dojox.layout.ExpandoPane",[d,p,m,n],{attributeMap:j.delegate(d.prototype.attributeMap,{title:{node:"titleNode",type:"innerHTML"}}),templateString:k,easeOut:"dojo._DefaultEasing",easeIn:"dojo._DefaultEasing",duration:420,startExpanded:!0,previewOpacity:0.75,previewOnDblClick:!1,tabIndex:"0",_setTabIndexAttr:"iconNode",baseClass:"dijitExpandoPane",postCreate:function(){this.inherited(arguments);this._animConnects=
-[];this._isHorizontal=!0;if(j.isString(this.easeOut))this.easeOut=j.getObject(this.easeOut);if(j.isString(this.easeIn))this.easeIn=j.getObject(this.easeIn);var a="",d=!this.isLeftToRight();if(this.region){switch(this.region){case "trailing":case "right":a=d?"Left":"Right";this._needsPosition="left";break;case "leading":case "left":a=d?"Right":"Left";break;case "top":a="Top";break;case "bottom":this._needsPosition="top",a="Bottom"}f.add(this.domNode,"dojoxExpando"+a);f.add(this.iconNode,"dojoxExpandoIcon"+
-a);this._isHorizontal=/top|bottom/.test(this.region)}b.set(this.domNode,{overflow:"hidden",padding:0});this.connect(this.domNode,"ondblclick",this.previewOnDblClick?"preview":"toggle");this.iconNode.setAttribute("aria-controls",this.id);this.previewOnDblClick&&this.connect(this.getParent(),"_layoutChildren",j.hitch(this,function(){this._isonlypreview=!1}))},_startupSizes:function(){this._container=this.getParent();this._closedSize=this._titleHeight=a.getMarginBox(this.titleWrapper).h;if(this.splitter){var b=
-this.id;l.forEach(dijit.registry.toArray(),function(a){a&&a.child&&a.child.id==b&&this.connect(a,"_stopDrag","_afterResize")},this)}this._currentSize=a.getContentBox(this.domNode);this._showSize=this._currentSize[this._isHorizontal?"h":"w"];this._setupAnims();this.startExpanded?this._showing=!0:(this._showing=!1,this._hideWrapper(),this._hideAnim.gotoPercent(99,!0));this.domNode.setAttribute("aria-expanded",this._showing);this._hasSizes=!0},_afterResize:function(){var b=this._currentSize;this._currentSize=
-a.getMarginBox(this.domNode);var d=this._currentSize[this._isHorizontal?"h":"w"];if(d>this._titleHeight){if(!this._showing)this._showing=!this._showing,this._showEnd();this._showSize=d;this._setupAnims()}else this._showSize=b[this._isHorizontal?"h":"w"],this._showing=!1,this._hideWrapper(),this._hideAnim.gotoPercent(89,!0)},_setupAnims:function(){l.forEach(this._animConnects,c.disconnect);var a={node:this.domNode,duration:this.duration},b={},d=this._showSize,f=this._closedSize,g={},e=this._isHorizontal?
-"height":"width",k=this._needsPosition;b[e]={end:d};g[e]={end:f};k&&(b[k]={end:function(a){return parseInt(a.style[k],10)-d+f}},g[k]={end:function(a){return parseInt(a.style[k],10)+d-f}});this._showAnim=h.animateProperty(j.mixin(a,{easing:this.easeIn,properties:b}));this._hideAnim=h.animateProperty(j.mixin(a,{easing:this.easeOut,properties:g}));this._animConnects=[c.connect(this._showAnim,"onEnd",this,"_showEnd"),c.connect(this._hideAnim,"onEnd",this,"_hideEnd")]},preview:function(){if(!this._showing)this._isonlypreview=
-!this._isonlypreview;this.toggle()},toggle:function(){this._showing?(this._hideWrapper(),this._showAnim&&this._showAnim.stop(),this._hideAnim.play()):(this._hideAnim&&this._hideAnim.stop(),this._showAnim.play());this._showing=!this._showing;this.domNode.setAttribute("aria-expanded",this._showing)},_hideWrapper:function(){f.add(this.domNode,"dojoxExpandoClosed");b.set(this.cwrapper,{visibility:"hidden",opacity:"0",overflow:"hidden"})},_showEnd:function(){b.set(this.cwrapper,{opacity:0,visibility:"visible"});
-h.anim(this.cwrapper,{opacity:this._isonlypreview?this.previewOpacity:1},227);f.remove(this.domNode,"dojoxExpandoClosed");this._isonlypreview?(this._previewShowing=!0,this.resize()):setTimeout(j.hitch(this._container,"layout"),15)},_hideEnd:function(){this._isonlypreview?this._previewShowing=!1:setTimeout(j.hitch(this._container,"layout"),25);this._isonlypreview=!1},resize:function(d){this._hasSizes||this._startupSizes(d);var c=a.getMarginBox(this.domNode);this._contentBox={w:d&&"w"in d?d.w:c.w,h:(d&&
-"h"in d?d.h:c.h)-this._titleHeight};b.set(this.containerNode,"height",this._contentBox.h+"px");d&&a.setMarginBox(this.domNode,d);this._layoutChildren();this._setupAnims()},_trap:function(a){g.stop(a)}})})},"url:dojox/layout/resources/ExpandoPane.html":'<div class="dojoxExpandoPane">\n\t<div dojoAttachPoint="titleWrapper" class="dojoxExpandoTitle">\n\t\t<div class="dojoxExpandoIcon" dojoAttachPoint="iconNode" dojoAttachEvent="ondijitclick:toggle"><span class="a11yNode">X</span></div>\n\t\t<span class="dojoxExpandoTitleNode" dojoAttachPoint="titleNode">${title}</span>\n\t</div>\n\t<div class="dojoxExpandoWrapper" dojoAttachPoint="cwrapper" dojoAttachEvent="ondblclick:_trap">\n\t\t<div class="dojoxExpandoContent" dojoAttachPoint="containerNode"></div>\n\t</div>\n</div>\n',
-"dijit/form/Form":function(){define("dojo/_base/declare,dojo/dom-attr,dojo/_base/event,dojo/_base/kernel,dojo/sniff,../_Widget,../_TemplatedMixin,./_FormMixin,../layout/_ContentPaneResizeMixin".split(","),function(e,j,i,l,c,g,h,b,f){return e("dijit.form.Form",[g,h,b,f],{name:"",action:"",method:"",encType:"","accept-charset":"",accept:"",target:"",templateString:"<form data-dojo-attach-point='containerNode' data-dojo-attach-event='onreset:_onReset,onsubmit:_onSubmit' ${!nameAttrSetting}></form>",
-postMixInProperties:function(){this.nameAttrSetting=this.name?"name='"+this.name+"'":"";this.inherited(arguments)},execute:function(){},onExecute:function(){},_setEncTypeAttr:function(a){this.encType=a;j.set(this.domNode,"encType",a);if(c("ie"))this.domNode.encoding=a},reset:function(a){var b={returnValue:!0,preventDefault:function(){this.returnValue=!1},stopPropagation:function(){},currentTarget:a?a.target:this.domNode,target:a?a.target:this.domNode};!1!==this.onReset(b)&&b.returnValue&&this.inherited(arguments,
-[])},onReset:function(){return!0},_onReset:function(a){this.reset(a);i.stop(a);return!1},_onSubmit:function(a){var b=this.constructor.prototype;if(this.execute!=b.execute||this.onExecute!=b.onExecute)l.deprecated("dijit.form.Form:execute()/onExecute() are deprecated. Use onSubmit() instead.","","2.0"),this.onExecute(),this.execute(this.getValues());!1===this.onSubmit(a)&&i.stop(a)},onSubmit:function(){return this.isValid()},submit:function(){!1!==this.onSubmit()&&this.containerNode.submit()}})})},
-"dijit/form/_FormMixin":function(){define("dojo/_base/array,dojo/_base/declare,dojo/_base/kernel,dojo/_base/lang,dojo/on,dojo/window".split(","),function(e,j,i,l,c,g){return j("dijit.form._FormMixin",null,{state:"",_getDescendantFormWidgets:function(c){var b=[];e.forEach(c||this.getChildren(),function(c){"value"in c?b.push(c):b=b.concat(this._getDescendantFormWidgets(c.getChildren()))},this);return b},reset:function(){e.forEach(this._getDescendantFormWidgets(),function(c){c.reset&&c.reset()})},validate:function(){var c=
-!1;return e.every(e.map(this._getDescendantFormWidgets(),function(b){b._hasBeenBlurred=!0;var f=b.disabled||!b.validate||b.validate();!f&&!c&&(g.scrollIntoView(b.containerNode||b.domNode),b.focus(),c=!0);return f}),function(b){return b})},setValues:function(c){i.deprecated(this.declaredClass+"::setValues() is deprecated. Use set('value', val) instead.","","2.0");return this.set("value",c)},_setValueAttr:function(c){var b={};e.forEach(this._getDescendantFormWidgets(),function(a){a.name&&(b[a.name]||
-(b[a.name]=[])).push(a)});for(var f in b)if(b.hasOwnProperty(f)){var a=b[f],g=l.getObject(f,!1,c);void 0!==g&&(l.isArray(g)||(g=[g]),"boolean"==typeof a[0].checked?e.forEach(a,function(a){a.set("value",-1!=e.indexOf(g,a.value))}):a[0].multiple?a[0].set("value",g):e.forEach(a,function(a,b){a.set("value",g[b])}))}},getValues:function(){i.deprecated(this.declaredClass+"::getValues() is deprecated. Use get('value') instead.","","2.0");return this.get("value")},_getValueAttr:function(){var c={};e.forEach(this._getDescendantFormWidgets(),
-function(b){var f=b.name;if(f&&!b.disabled){var a=b.get("value");"boolean"==typeof b.checked?/Radio/.test(b.declaredClass)?!1!==a?l.setObject(f,a,c):(a=l.getObject(f,!1,c),void 0===a&&l.setObject(f,null,c)):(b=l.getObject(f,!1,c),b||(b=[],l.setObject(f,b,c)),!1!==a&&b.push(a)):(b=l.getObject(f,!1,c),"undefined"!=typeof b?l.isArray(b)?b.push(a):l.setObject(f,[b,a],c):l.setObject(f,a,c))}});return c},isValid:function(){return""==this.state},onValidStateChange:function(){},_getState:function(){var c=
-e.map(this._descendants,function(b){return b.get("state")||""});return 0<=e.indexOf(c,"Error")?"Error":0<=e.indexOf(c,"Incomplete")?"Incomplete":""},disconnectChildren:function(){},connectChildren:function(c){this._descendants=this._getDescendantFormWidgets();e.forEach(this._descendants,function(b){b._started||b.startup()});c||this._onChildChange()},_onChildChange:function(c){(!c||"state"==c||"disabled"==c)&&this._set("state",this._getState());if(!c||"value"==c||"disabled"==c||"checked"==c)this._onChangeDelayTimer&&
-this._onChangeDelayTimer.remove(),this._onChangeDelayTimer=this.defer(function(){delete this._onChangeDelayTimer;this._set("value",this.get("value"))},10)},startup:function(){this.inherited(arguments);this._descendants=this._getDescendantFormWidgets();this.value=this.get("value");this.state=this._getState();var g=this;this.own(c(this.containerNode,"attrmodified-state, attrmodified-disabled, attrmodified-value, attrmodified-checked",function(b){b.target!=g.domNode&&g._onChildChange(b.type.replace("attrmodified-",
-""))}));this.watch("state",function(b,c,a){this.onValidStateChange(""==a)})},destroy:function(){this.inherited(arguments)}})})},"dijit/form/TextBox":function(){define("dojo/_base/declare,dojo/dom-construct,dojo/dom-style,dojo/_base/kernel,dojo/_base/lang,dojo/sniff,./_FormValueWidget,./_TextBoxMixin,dojo/text!./templates/TextBox.html,../main".split(","),function(e,j,i,l,c,g,h,b,f,a){e=e("dijit.form.TextBox",[h,b],{templateString:f,_singleNodeTemplate:'<input class="dijit dijitReset dijitLeft dijitInputField" data-dojo-attach-point="textbox,focusNode" autocomplete="off" type="${type}" ${!nameAttrSetting} />',
-_buttonInputDisabled:g("ie")?"disabled":"",baseClass:"dijitTextBox",postMixInProperties:function(){var a=this.type.toLowerCase();if(this.templateString&&"input"==this.templateString.toLowerCase()||("hidden"==a||"file"==a)&&this.templateString==this.constructor.prototype.templateString)this.templateString=this._singleNodeTemplate;this.inherited(arguments)},postCreate:function(){this.inherited(arguments);9>g("ie")&&this.defer(function(){try{var a=i.getComputedStyle(this.domNode);if(a){var b=a.fontFamily;
-if(b){var c=this.domNode.getElementsByTagName("INPUT");if(c)for(a=0;a<c.length;a++)c[a].style.fontFamily=b}}}catch(f){}})},_onInput:function(a){this.inherited(arguments);this.intermediateChanges&&this.defer(function(){this._handleOnChange(this.get("value"),!1)})},_setPlaceHolderAttr:function(a){this._set("placeHolder",a);if(!this._phspan)this._attachPoints.push("_phspan"),this._phspan=j.create("span",{onmousedown:function(a){a.preventDefault()},className:"dijitPlaceHolder dijitInputField"},this.textbox,
-"after");this._phspan.innerHTML="";this._phspan.appendChild(this._phspan.ownerDocument.createTextNode(a));this._updatePlaceHolder()},_updatePlaceHolder:function(){if(this._phspan)this._phspan.style.display=this.placeHolder&&!this.focused&&!this.textbox.value?"":"none"},_setValueAttr:function(a,b,c){this.inherited(arguments);this._updatePlaceHolder()},getDisplayedValue:function(){l.deprecated(this.declaredClass+"::getDisplayedValue() is deprecated. Use get('displayedValue') instead.","","2.0");return this.get("displayedValue")},
-setDisplayedValue:function(a){l.deprecated(this.declaredClass+"::setDisplayedValue() is deprecated. Use set('displayedValue', ...) instead.","","2.0");this.set("displayedValue",a)},_onBlur:function(a){if(!this.disabled&&(this.inherited(arguments),this._updatePlaceHolder(),g("mozilla")&&this.selectOnClick))this.textbox.selectionStart=this.textbox.selectionEnd=void 0},_onFocus:function(a){!this.disabled&&!this.readOnly&&(this.inherited(arguments),this._updatePlaceHolder())}});if(g("ie"))e.prototype._isTextSelected=
-function(){var a=this.ownerDocument.selection.createRange();return a.parentElement()==this.textbox&&0<a.text.length},a._setSelectionRange=b._setSelectionRange=function(a,b,c){a.createTextRange&&(a=a.createTextRange(),a.collapse(!0),a.moveStart("character",-99999),a.moveStart("character",b),a.moveEnd("character",c-b),a.select())};return e})},"dijit/form/_FormValueWidget":function(){define(["dojo/_base/declare","dojo/sniff","./_FormWidget","./_FormValueMixin"],function(e,j,i,l){return e("dijit.form._FormValueWidget",
-[i,l],{_layoutHackIE7:function(){if(7==j("ie"))for(var c=this.domNode,g=c.parentNode,e=c.firstChild||c,b=e.style.filter,f=this;g&&0==g.clientHeight;)(function(){var a=f.connect(g,"onscroll",function(){f.disconnect(a);e.style.filter=(new Date).getMilliseconds();f.defer(function(){e.style.filter=b})})})(),g=g.parentNode}})})},"dijit/form/_FormWidget":function(){define("dojo/_base/declare,dojo/has,dojo/_base/kernel,dojo/ready,../_Widget,../_CssStateMixin,../_TemplatedMixin,./_FormWidgetMixin".split(","),
-function(e,j,i,l,c,g,h,b){j("dijit-legacy-requires")&&l(0,function(){require(["dijit/form/_FormValueWidget"])});return e("dijit.form._FormWidget",[c,h,g,b],{setDisabled:function(b){i.deprecated("setDisabled("+b+") is deprecated. Use set('disabled',"+b+") instead.","","2.0");this.set("disabled",b)},setValue:function(b){i.deprecated("dijit.form._FormWidget:setValue("+b+") is deprecated. Use set('value',"+b+") instead.","","2.0");this.set("value",b)},getValue:function(){i.deprecated(this.declaredClass+
-"::getValue() is deprecated. Use get('value') instead.","","2.0");return this.get("value")},postMixInProperties:function(){this.nameAttrSetting=this.name?'name="'+this.name.replace(/"/g,"&quot;")+'"':"";this.inherited(arguments)},_setTypeAttr:null})})},"dijit/_CssStateMixin":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom,dojo/dom-class,dojo/has,dojo/_base/lang,dojo/on,dojo/ready,dojo/_base/window,./registry".split(","),function(e,j,i,l,c,g,h,b,f,a){j=j("dijit._CssStateMixin",[],{cssStateNodes:{},
-hovering:!1,active:!1,_applyAttributes:function(){this.inherited(arguments);e.forEach("disabled,readOnly,checked,selected,focused,state,hovering,active,_opened".split(","),function(a){this.watch(a,g.hitch(this,"_setStateClass"))},this);for(var a in this.cssStateNodes)this._trackMouseState(this[a],this.cssStateNodes[a]);this._trackMouseState(this.domNode,this.baseClass);this._setStateClass()},_cssMouseEvent:function(a){if(!this.disabled)switch(a.type){case "mouseover":this._set("hovering",!0);this._set("active",
-this._mouseDown);break;case "mouseout":this._set("hovering",!1);this._set("active",!1);break;case "mousedown":case "touchstart":this._set("active",!0);break;case "mouseup":case "touchend":this._set("active",!1)}},_setStateClass:function(){function a(c){b=b.concat(e.map(b,function(a){return a+c}),"dijit"+c)}var b=this.baseClass.split(" ");this.isLeftToRight()||a("Rtl");var c="mixed"==this.checked?"Mixed":this.checked?"Checked":"";this.checked&&a(c);this.state&&a(this.state);this.selected&&a("Selected");
-this._opened&&a("Opened");this.disabled?a("Disabled"):this.readOnly?a("ReadOnly"):this.active?a("Active"):this.hovering&&a("Hover");this.focused&&a("Focused");var c=this.stateNode||this.domNode,f={};e.forEach(c.className.split(" "),function(a){f[a]=!0});"_stateClasses"in this&&e.forEach(this._stateClasses,function(a){delete f[a]});e.forEach(b,function(a){f[a]=!0});var g=[],h;for(h in f)g.push(h);c.className=g.join(" ");this._stateClasses=b},_subnodeCssMouseEvent:function(a,b,c){function f(c){l.toggle(a,
-b+"Active",c)}if(!this.disabled&&!this.readOnly)switch(c.type){case "mouseover":l.toggle(a,b+"Hover",!0);break;case "mouseout":l.toggle(a,b+"Hover",!1);f(!1);break;case "mousedown":case "touchstart":f(!0);break;case "mouseup":case "touchend":f(!1);break;case "focus":case "focusin":l.toggle(a,b+"Focused",!0);break;case "blur":case "focusout":l.toggle(a,b+"Focused",!1)}},_trackMouseState:function(a,b){a._cssState=b}});b(function(){function b(d){if(!i.isDescendant(d.relatedTarget,d.target))for(var c=
-d.target;c&&c!=d.relatedTarget;c=c.parentNode)if(c._cssState){var f=a.getEnclosingWidget(c);f&&(c==f.domNode?f._cssMouseEvent(d):f._subnodeCssMouseEvent(c,c._cssState,d))}}function d(a){a.target=a.srcElement;b(a)}var g=f.body(),m=(c("touch")?[]:["mouseover","mouseout"]).concat(["mousedown","touchstart","mouseup","touchend"]);e.forEach(m,function(a){g.addEventListener?g.addEventListener(a,b,!0):g.attachEvent("on"+a,d)});h(g,"focusin, focusout",function(b){var d=b.target;d._cssState&&!d.getAttribute("widgetId")&&
-a.getEnclosingWidget(d)._subnodeCssMouseEvent(d,d._cssState,b)})});return j})},"dijit/form/_FormWidgetMixin":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom-attr,dojo/dom-style,dojo/_base/lang,dojo/mouse,dojo/sniff,dojo/window,../a11y".split(","),function(e,j,i,l,c,g,h,b,f){return j("dijit.form._FormWidgetMixin",null,{name:"",alt:"",value:"",type:"text",tabIndex:"0",_setTabIndexAttr:"focusNode",disabled:!1,intermediateChanges:!1,scrollOnFocus:!0,_setIdAttr:"focusNode",_setDisabledAttr:function(a){this._set("disabled",
-a);i.set(this.focusNode,"disabled",a);this.valueNode&&i.set(this.valueNode,"disabled",a);this.focusNode.setAttribute("aria-disabled",a?"true":"false");a?(this._set("hovering",!1),this._set("active",!1),a="tabIndex"in this.attributeMap?this.attributeMap.tabIndex:"_setTabIndexAttr"in this?this._setTabIndexAttr:"focusNode",e.forEach(c.isArray(a)?a:[a],function(a){a=this[a];h("webkit")||f.hasDefaultTabStop(a)?a.setAttribute("tabIndex","-1"):a.removeAttribute("tabIndex")},this)):""!=this.tabIndex&&this.set("tabIndex",
-this.tabIndex)},_onFocus:function(a){if("mouse"==a&&this.isFocusable())var c=this.connect(this.focusNode,"onfocus",function(){this.disconnect(d);this.disconnect(c)}),d=this.connect(this.ownerDocumentBody,"onmouseup",function(){this.disconnect(d);this.disconnect(c);this.focused&&this.focus()});this.scrollOnFocus&&this.defer(function(){b.scrollIntoView(this.domNode)});this.inherited(arguments)},isFocusable:function(){return!this.disabled&&this.focusNode&&"none"!=l.get(this.domNode,"display")},focus:function(){if(!this.disabled&&
-this.focusNode.focus)try{this.focusNode.focus()}catch(a){}},compare:function(a,b){return"number"==typeof a&&"number"==typeof b?isNaN(a)&&isNaN(b)?0:a-b:a>b?1:a<b?-1:0},onChange:function(){},_onChangeActive:!1,_handleOnChange:function(a,b){if(void 0==this._lastValueReported&&(null===b||!this._onChangeActive))this._resetValue=this._lastValueReported=a;this._pendingOnChange=this._pendingOnChange||typeof a!=typeof this._lastValueReported||0!=this.compare(a,this._lastValueReported);if((this.intermediateChanges||
-b||void 0===b)&&this._pendingOnChange)if(this._lastValueReported=a,this._pendingOnChange=!1,this._onChangeActive)this._onChangeHandle&&this._onChangeHandle.remove(),this._onChangeHandle=this.defer(function(){this._onChangeHandle=null;this.onChange(a)})},create:function(){this.inherited(arguments);this._onChangeActive=!0},destroy:function(){this._onChangeHandle&&(this._onChangeHandle.remove(),this.onChange(this._lastValueReported));this.inherited(arguments)}})})},"dijit/form/_FormValueMixin":function(){define(["dojo/_base/declare",
-"dojo/dom-attr","dojo/keys","dojo/sniff","./_FormWidgetMixin"],function(e,j,i,l,c){return e("dijit.form._FormValueMixin",c,{readOnly:!1,_setReadOnlyAttr:function(c){j.set(this.focusNode,"readOnly",c);this.focusNode.setAttribute("aria-readonly",c);this._set("readOnly",c)},postCreate:function(){this.inherited(arguments);l("ie")&&this.connect(this.focusNode||this.domNode,"onkeydown",this._onKeyDown);if(void 0===this._resetValue)this._lastValueReported=this._resetValue=this.value},_setValueAttr:function(c,
-e){this._handleOnChange(c,e)},_handleOnChange:function(c,e){this._set("value",c);this.inherited(arguments)},undo:function(){this._setValueAttr(this._lastValueReported,!1)},reset:function(){this._hasBeenBlurred=!1;this._setValueAttr(this._resetValue,!0)},_onKeyDown:function(c){if(c.keyCode==i.ESCAPE&&!c.ctrlKey&&!c.altKey&&!c.metaKey&&(9>l("ie")||l("ie")&&l("quirks"))){c.preventDefault();var e=c.srcElement,b=e.ownerDocument.createEventObject();b.keyCode=i.ESCAPE;b.shiftKey=c.shiftKey;e.fireEvent("onkeypress",
-b)}}})})},"dijit/form/_TextBoxMixin":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom,dojo/_base/event,dojo/keys,dojo/_base/lang,dojo/on,../main".split(","),function(e,j,i,l,c,g,h,b){var f=j("dijit.form._TextBoxMixin",null,{trim:!1,uppercase:!1,lowercase:!1,propercase:!1,maxLength:"",selectOnClick:!1,placeHolder:"",_getValueAttr:function(){return this.parse(this.get("displayedValue"),this.constraints)},_setValueAttr:function(a,b,d){var c;void 0!==a&&(c=this.filter(a),"string"!=typeof d&&
-(d=null!==c&&("number"!=typeof c||!isNaN(c))?this.filter(this.format(c,this.constraints)):""));if(null!=d&&("number"!=typeof d||!isNaN(d))&&this.textbox.value!=d)this.textbox.value=d,this._set("displayedValue",this.get("displayedValue"));"auto"==this.textDir&&this.applyTextDir(this.focusNode,d);this.inherited(arguments,[c,b])},displayedValue:"",_getDisplayedValueAttr:function(){return this.filter(this.textbox.value)},_setDisplayedValueAttr:function(a){null==a?a="":"string"!=typeof a&&(a=""+a);this.textbox.value=
-a;this._setValueAttr(this.get("value"),void 0);this._set("displayedValue",this.get("displayedValue"));"auto"==this.textDir&&this.applyTextDir(this.focusNode,a)},format:function(a){return null==a?"":a.toString?a.toString():a},parse:function(a){return a},_refreshState:function(){},onInput:function(){},__skipInputEvent:!1,_onInput:function(a){"auto"==this.textDir&&this.applyTextDir(this.focusNode,this.focusNode.value);this._processInput(a)},_processInput:function(){this._refreshState();this._set("displayedValue",
-this.get("displayedValue"))},postCreate:function(){this.textbox.setAttribute("value",this.textbox.value);this.inherited(arguments);this.own(h(this.textbox,"keydown, keypress, paste, cut, input, compositionend",g.hitch(this,function(a){var b;if("keydown"==a.type){b=a.keyCode;switch(b){case c.SHIFT:case c.ALT:case c.CTRL:case c.META:case c.CAPS_LOCK:case c.NUM_LOCK:case c.SCROLL_LOCK:return}if(!a.ctrlKey&&!a.metaKey&&!a.altKey){switch(b){case c.NUMPAD_0:case c.NUMPAD_1:case c.NUMPAD_2:case c.NUMPAD_3:case c.NUMPAD_4:case c.NUMPAD_5:case c.NUMPAD_6:case c.NUMPAD_7:case c.NUMPAD_8:case c.NUMPAD_9:case c.NUMPAD_MULTIPLY:case c.NUMPAD_PLUS:case c.NUMPAD_ENTER:case c.NUMPAD_MINUS:case c.NUMPAD_PERIOD:case c.NUMPAD_DIVIDE:return}if(65<=
-b&&90>=b||48<=b&&57>=b||b==c.SPACE)return;b=!1;for(var d in c)if(c[d]===a.keyCode){b=!0;break}if(!b)return}}(b=32<=a.charCode?String.fromCharCode(a.charCode):a.charCode)||(b=65<=a.keyCode&&90>=a.keyCode||48<=a.keyCode&&57>=a.keyCode||a.keyCode==c.SPACE?String.fromCharCode(a.keyCode):a.keyCode);b||(b=229);if("keypress"==a.type){if("string"!=typeof b)return;if("a"<=b&&"z">=b||"A"<=b&&"Z">=b||"0"<=b&&"9">=b||" "===b)if(a.ctrlKey||a.metaKey||a.altKey)return}if("input"==a.type){if(this.__skipInputEvent){this.__skipInputEvent=
-!1;return}}else this.__skipInputEvent=!0;var f={faux:!0},e;for(e in a)"layerX"!=e&&"layerY"!=e&&(d=a[e],"function"!=typeof d&&"undefined"!=typeof d&&(f[e]=d));g.mixin(f,{charOrCode:b,_wasConsumed:!1,preventDefault:function(){f._wasConsumed=!0;a.preventDefault()},stopPropagation:function(){a.stopPropagation()}});!1===this.onInput(f)&&(f.preventDefault(),f.stopPropagation());f._wasConsumed||this.defer(function(){this._onInput(f)})})))},_blankValue:"",filter:function(a){if(null===a)return this._blankValue;
-if("string"!=typeof a)return a;this.trim&&(a=g.trim(a));this.uppercase&&(a=a.toUpperCase());this.lowercase&&(a=a.toLowerCase());this.propercase&&(a=a.replace(/[^\s]+/g,function(a){return a.substring(0,1).toUpperCase()+a.substring(1)}));return a},_setBlurValue:function(){this._setValueAttr(this.get("value"),!0)},_onBlur:function(a){this.disabled||(this._setBlurValue(),this.inherited(arguments))},_isTextSelected:function(){return this.textbox.selectionStart!=this.textbox.selectionEnd},_onFocus:function(a){if(!this.disabled&&
-!this.readOnly){if(this.selectOnClick&&"mouse"==a)this._selectOnClickHandle=this.connect(this.domNode,"onmouseup",function(){this.disconnect(this._selectOnClickHandle);this._selectOnClickHandle=null;this._isTextSelected()||f.selectInputText(this.textbox)}),this.defer(function(){if(this._selectOnClickHandle)this.disconnect(this._selectOnClickHandle),this._selectOnClickHandle=null},500);this.inherited(arguments);this._refreshState()}},reset:function(){this.textbox.value="";this.inherited(arguments)},
-_setTextDirAttr:function(a){if(!this._created||this.textDir!=a)this._set("textDir",a),this.applyTextDir(this.focusNode,this.focusNode.value)}});f._setSelectionRange=b._setSelectionRange=function(a,b,d){a.setSelectionRange&&a.setSelectionRange(b,d)};f.selectInputText=b.selectInputText=function(a,b,d){a=i.byId(a);isNaN(b)&&(b=0);isNaN(d)&&(d=a.value?a.value.length:0);try{a.focus(),f._setSelectionRange(a,b,d)}catch(c){}};return f})},"url:dijit/form/templates/TextBox.html":'<div class="dijit dijitReset dijitInline dijitLeft" id="widget_${id}" role="presentation"\n\t><div class="dijitReset dijitInputField dijitInputContainer"\n\t\t><input class="dijitReset dijitInputInner" data-dojo-attach-point=\'textbox,focusNode\' autocomplete="off"\n\t\t\t${!nameAttrSetting} type=\'${type}\'\n\t/></div\n></div>\n',
-"dijit/form/Button":function(){define("require,dojo/_base/declare,dojo/dom-class,dojo/has,dojo/_base/kernel,dojo/_base/lang,dojo/ready,./_FormWidget,./_ButtonMixin,dojo/text!./templates/Button.html".split(","),function(e,j,i,l,c,g,h,b,f,a){l("dijit-legacy-requires")&&h(0,function(){e(["dijit/form/DropDownButton","dijit/form/ComboButton","dijit/form/ToggleButton"])});return j("dijit.form.Button",[b,f],{showLabel:!0,iconClass:"dijitNoIcon",_setIconClassAttr:{node:"iconNode",type:"class"},baseClass:"dijitButton",
-templateString:a,_setValueAttr:"valueNode",_onClick:function(a){var b=this.inherited(arguments);b&&this.valueNode&&(this.valueNode.click(),a.preventDefault(),a.stopPropagation());return b},_fillContent:function(a){if(a&&(!this.params||!("label"in this.params)))if(a=g.trim(a.innerHTML))this.label=a},_setShowLabelAttr:function(a){this.containerNode&&i.toggle(this.containerNode,"dijitDisplayNone",!a);this._set("showLabel",a)},setLabel:function(a){c.deprecated("dijit.form.Button.setLabel() is deprecated. Use set('label', ...) instead.",
-"","2.0");this.set("label",a)},_setLabelAttr:function(a){this.inherited(arguments);if(!this.showLabel&&!("title"in this.params))this.titleNode.title=g.trim(this.containerNode.innerText||this.containerNode.textContent||"")}})})},"dijit/form/_ButtonMixin":function(){define(["dojo/_base/declare","dojo/dom","dojo/_base/event","../registry"],function(e,j,i,l){return e("dijit.form._ButtonMixin",null,{label:"",type:"button",_onClick:function(c){if(this.disabled)return i.stop(c),!1;var g=!1===this.onClick(c);
-if(!g&&"submit"==this.type&&!(this.valueNode||this.focusNode).form)for(var e=this.domNode;e.parentNode;e=e.parentNode){var b=l.byNode(e);if(b&&"function"==typeof b._onSubmit){b._onSubmit(c);g=!0;break}}g&&c.preventDefault();return!g},postCreate:function(){this.inherited(arguments);j.setSelectable(this.focusNode,!1)},onClick:function(){return!0},_setLabelAttr:function(c){this._set("label",c);(this.containerNode||this.focusNode).innerHTML=c}})})},"url:dijit/form/templates/Button.html":'<span class="dijit dijitReset dijitInline" role="presentation"\n\t><span class="dijitReset dijitInline dijitButtonNode"\n\t\tdata-dojo-attach-event="ondijitclick:_onClick" role="presentation"\n\t\t><span class="dijitReset dijitStretch dijitButtonContents"\n\t\t\tdata-dojo-attach-point="titleNode,focusNode"\n\t\t\trole="button" aria-labelledby="${id}_label"\n\t\t\t><span class="dijitReset dijitInline dijitIcon" data-dojo-attach-point="iconNode"></span\n\t\t\t><span class="dijitReset dijitToggleButtonIconChar">&#x25CF;</span\n\t\t\t><span class="dijitReset dijitInline dijitButtonText"\n\t\t\t\tid="${id}_label"\n\t\t\t\tdata-dojo-attach-point="containerNode"\n\t\t\t></span\n\t\t></span\n\t></span\n\t><input ${!nameAttrSetting} type="${type}" value="${value}" class="dijitOffScreen"\n\t\ttabIndex="-1" role="presentation" data-dojo-attach-point="valueNode"\n/></span>\n',
-"dijit/MenuBar":function(){define(["dojo/_base/declare","dojo/_base/event","dojo/keys","./_MenuBase","dojo/text!./templates/MenuBar.html"],function(e,j,i,l,c){return e("dijit.MenuBar",l,{templateString:c,baseClass:"dijitMenuBar",_isMenuBar:!0,postCreate:function(){this.inherited(arguments);var c=this.isLeftToRight();this.connectKeyNavHandlers(c?[i.LEFT_ARROW]:[i.RIGHT_ARROW],c?[i.RIGHT_ARROW]:[i.LEFT_ARROW]);this._orient=["below"]},_moveToPopup:function(c){if(this.focusedChild&&this.focusedChild.popup&&
-!this.focusedChild.disabled)this.onItemClick(this.focusedChild,c)},focusChild:function(c){var e=this.focusedChild,e=e&&e.popup&&e.popup.isShowingNow;this.inherited(arguments);e&&c.popup&&!c.disabled&&this._openPopup(!0)},_onKeyPress:function(c){if(!c.ctrlKey&&!c.altKey)switch(c.charOrCode){case i.DOWN_ARROW:this._moveToPopup(c),j.stop(c)}},onItemClick:function(c,e){if(c.popup&&c.popup.isShowingNow&&("keypress"!==e.type||e.keyCode!==i.DOWN_ARROW))c.popup.onCancel();else this.inherited(arguments)}})})},
-"dijit/_MenuBase":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-class,dojo/_base/lang,dojo/mouse,dojo/on,dojo/window,./a11yclick,./popup,./registry,./_Widget,./_KeyNavContainer,./_TemplatedMixin".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n){return j("dijit._MenuBase",[p,n,m],{parentMenu:null,popupDelay:500,autoFocus:!1,postCreate:function(){var f=this,g=function(a){return c.contains(a,"dijitMenuItem")};this.own(b(this.containerNode,b.selector(g,h.enter),
-function(){f.onItemHover(d.byNode(this))}),b(this.containerNode,b.selector(g,h.leave),function(){f.onItemUnhover(d.byNode(this))}),b(this.containerNode,b.selector(g,a),function(a){f.onItemClick(d.byNode(this),a);a.stopPropagation();a.preventDefault()}));this.inherited(arguments)},onExecute:function(){},onCancel:function(){},_moveToPopup:function(a){if(this.focusedChild&&this.focusedChild.popup&&!this.focusedChild.disabled)this.onItemClick(this.focusedChild,a);else(a=this._getTopMenu())&&a._isMenuBar&&
+refresh:function(){this.cancel();this.onLoadDeferred=new l(k.hitch(this,"cancel"));this.onLoadDeferred.then(k.hitch(this,"onLoad"));this._load();return this.onLoadDeferred},_load:function(){this._setContent(this.onDownloadStart(),!0);var a=this,b={preventCache:this.preventCache||this.refreshOnShow,url:this.href,handleAs:"text"};k.isObject(this.ioArgs)&&k.mixin(b,this.ioArgs);var d=this._xhrDfd=(this.ioMethod||m.get)(b),c;d.then(function(b){c=b;try{return a._isDownloaded=!0,a._setContent(b,!1)}catch(d){a._onError("Content",
+d)}},function(b){d.canceled||a._onError("Download",b);delete a._xhrDfd;return b}).then(function(){a.onDownloadEnd();delete a._xhrDfd;return c});delete this._hrefChanged},_onLoadHandler:function(a){this._set("isLoaded",!0);try{this.onLoadDeferred.resolve(a)}catch(b){}},_onUnloadHandler:function(){this._set("isLoaded",!1);try{this.onUnload()}catch(a){}},destroyDescendants:function(a){this.isLoaded&&this._onUnloadHandler();var b=this._contentSetter;g.forEach(this.getChildren(),function(b){b.destroyRecursive?
+b.destroyRecursive(a):b.destroy&&b.destroy(a);b._destroyed=!0});b&&(g.forEach(b.parseResults,function(b){if(!b._destroyed)b.destroyRecursive?b.destroyRecursive(a):b.destroy&&b.destroy(a),b._destroyed=!0}),delete b.parseResults);a||i._emptyNode(this.containerNode);delete this._singleChild},_setContent:function(a,b){this.destroyDescendants();var d=this._contentSetter;if(!(d&&d instanceof i._ContentSetter))d=this._contentSetter=new i._ContentSetter({node:this.containerNode,_onError:k.hitch(this,this._onError),
+onContentError:k.hitch(this,function(a){a=this.onContentError(a);try{this.containerNode.innerHTML=a}catch(b){}})});var c=k.mixin({cleanContent:this.cleanContent,extractContent:this.extractContent,parseContent:!a.domNode&&this.parseOnLoad,parserScope:this.parserScope,startup:!1,dir:this.dir,lang:this.lang,textDir:this.textDir},this._contentSetterParams||{}),c=d.set(k.isObject(a)&&a.domNode?a.domNode:a,c),g=this;return o(c&&c.then?c:d.parseDeferred,function(){delete g._contentSetterParams;b||(g._started&&
+(g._startChildren(),g._scheduleLayout()),g._onLoadHandler(a))})},_onError:function(a,b,d){this.onLoadDeferred.reject(b);a=this["on"+a+"Error"].call(this,b);d||a&&this._setContent(a,!0)},onLoad:function(){},onUnload:function(){},onDownloadStart:function(){return this.loadingMessage},onContentError:function(){},onDownloadError:function(){return this.errorMessage},onDownloadEnd:function(){}})})},"dijit/layout/_ContentPaneResizeMixin":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom-class,dojo/dom-geometry,dojo/dom-style,dojo/_base/lang,dojo/query,dojo/sniff,../registry,../Viewport,./utils".split(","),
+function(f,k,h,j,e,c,i,b,g,a,l){return k("dijit.layout._ContentPaneResizeMixin",null,{doLayout:!0,isLayoutContainer:!0,startup:function(){if(!this._started){var b=this.getParent();this._childOfLayoutWidget=b&&b.isLayoutContainer;this._needLayout=!this._childOfLayoutWidget;this.inherited(arguments);this._isShown()&&this._onShow();this._childOfLayoutWidget||this.own(a.on("resize",c.hitch(this,"resize")))}},_checkIfSingleChild:function(){var a=[],b=!1;i("> *",this.containerNode).some(function(c){var e=
+g.byNode(c);e&&e.resize?a.push(e):c.offsetHeight&&(b=!0)});this._singleChild=1==a.length&&!b?a[0]:null;h.toggle(this.containerNode,this.baseClass+"SingleChild",!!this._singleChild)},resize:function(a,b){this._resizeCalled=!0;this._scheduleLayout(a,b)},_scheduleLayout:function(a,b){this._isShown()?this._layout(a,b):(this._needLayout=!0,this._changeSize=a,this._resultSize=b)},_layout:function(a,b){delete this._needLayout;!this._wasShown&&!1!==this.open&&this._onShow();a&&j.setMarginBox(this.domNode,
+a);var g=this.containerNode;if(g===this.domNode){var e=b||{};c.mixin(e,a||{});if(!("h"in e)||!("w"in e))e=c.mixin(j.getMarginBox(g),e);this._contentBox=l.marginBox2contentBox(g,e)}else this._contentBox=j.getContentBox(g);this._layoutChildren()},_layoutChildren:function(){this.doLayout&&this._checkIfSingleChild();if(this._singleChild&&this._singleChild.resize){var a=this._contentBox||j.getContentBox(this.containerNode);this._singleChild.resize({w:a.w,h:a.h})}else f.forEach(this.getChildren(),function(a){a.resize&&
+a.resize()})},_isShown:function(){if(this._childOfLayoutWidget)return this._resizeCalled&&"open"in this?this.open:this._resizeCalled;if("open"in this)return this.open;var a=this.domNode,b=this.domNode.parentNode;return"none"!=a.style.display&&"hidden"!=a.style.visibility&&!h.contains(a,"dijitHidden")&&b&&b.style&&"none"!=b.style.display},_onShow:function(){this._wasShown=!0;this._needLayout&&this._layout(this._changeSize,this._resultSize);this.inherited(arguments)}})})},"dojo/html":function(){define("./_base/kernel,./_base/lang,./_base/array,./_base/declare,./dom,./dom-construct,./parser".split(","),
+function(f,k,h,j,e,c,i){var b={};k.setObject("dojo.html",b);var g=0;b._secureForInnerHtml=function(a){return a.replace(/(?:\s*<!DOCTYPE\s[^>]+>|<title[^>]*>[\s\S]*?<\/title>)/ig,"")};b._emptyNode=c.empty;b._setNodeContent=function(a,b){c.empty(a);if(b)if("string"==typeof b&&(b=c.toDom(b,a.ownerDocument)),!b.nodeType&&k.isArrayLike(b))for(var d=b.length,g=0;g<b.length;g=d==b.length?g+1:0)c.place(b[g],a,"last");else c.place(b,a,"last");return a};b._ContentSetter=j("dojo.html._ContentSetter",null,{node:"",
+content:"",id:"",cleanContent:!1,extractContent:!1,parseContent:!1,parserScope:f._scopeName,startup:!0,constructor:function(a,b){k.mixin(this,a||{});b=this.node=e.byId(this.node||b);if(!this.id)this.id=["Setter",b?b.id||b.tagName:"",g++].join("_")},set:function(a,b){if(void 0!==a)this.content=a;b&&this._mixin(b);this.onBegin();this.setContent();var c=this.onEnd();return c&&c.then?c:this.node},setContent:function(){var a=this.node;if(!a)throw Error(this.declaredClass+": setContent given no node");
+try{a=b._setNodeContent(a,this.content)}catch(c){var d=this.onContentError(c);try{a.innerHTML=d}catch(g){}}this.node=a},empty:function(){this.parseDeferred&&(this.parseDeferred.isResolved()||this.parseDeferred.cancel(),delete this.parseDeferred);this.parseResults&&this.parseResults.length&&(h.forEach(this.parseResults,function(a){a.destroy&&a.destroy()}),delete this.parseResults);b._emptyNode(this.node)},onBegin:function(){var a=this.content;if(k.isString(a)&&(this.cleanContent&&(a=b._secureForInnerHtml(a)),
+this.extractContent)){var c=a.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);c&&(a=c[1])}this.empty();this.content=a;return this.node},onEnd:function(){this.parseContent&&this._parse();return this.node},tearDown:function(){delete this.parseResults;delete this.parseDeferred;delete this.node;delete this.content},onContentError:function(a){return"Error occurred setting content: "+a},onExecError:function(a){return"Error occurred executing scripts: "+a},_mixin:function(a){var b={},c;for(c in a)c in b||
+(this[c]=a[c])},_parse:function(){var a=this.node;try{var b={};h.forEach(["dir","lang","textDir"],function(a){this[a]&&(b[a]=this[a])},this);var c=this;this.parseDeferred=i.parse({rootNode:a,noStart:!this.startup,inherited:b,scope:this.parserScope}).then(function(a){return c.parseResults=a})}catch(g){this._onError("Content",g,"Error parsing in _ContentSetter#"+this.id)}},_onError:function(a,c,d){a=this["on"+a+"Error"].call(this,c);d||a&&b._setNodeContent(this.node,a,!0)}});b.set=function(a,c,d){void 0==
+c&&(c="");return d?(new b._ContentSetter(k.mixin(d,{content:c,node:a}))).set():b._setNodeContent(a,c,!0)};return b})},"dojo/parser":function(){define("require,./_base/kernel,./_base/lang,./_base/array,./_base/config,./_base/html,./_base/window,./_base/url,./_base/json,./aspect,./date/stamp,./Deferred,./has,./query,./on,./ready".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o){function r(a){var b=a._nameCaseMap,c=a.prototype;if(!b||b._extendCnt<v){var b=a._nameCaseMap={},d;for(d in c)"_"!==d.charAt(0)&&
+(b[d.toLowerCase()]=d);b._extendCnt=v}return b}function q(a){var b=a.join();if(!s[b]){for(var c=[],d=0,g=a.length;d<g;d++){var e=a[d];c[c.length]=s[e]=s[e]||h.getObject(e)||~e.indexOf("/")&&f(e)}a=c.shift();s[b]=c.length?a.createSubclass?a.createSubclass(c):a.extend.apply(a,c):a}return s[b]}var v=0;a.after(h,"extend",function(){v++},!0);var s={},t={_clearCache:function(){v++;s={}},_functionFromScript:function(a,b){var c="",d="",g=a.getAttribute(b+"args")||a.getAttribute("args"),e=a.getAttribute("with"),
+g=(g||"").split(/\s*,\s*/);e&&e.length&&j.forEach(e.split(/\s*,\s*/),function(a){c+="with("+a+"){";d+="}"});return new Function(g,c+a.innerHTML+d)},instantiate:function(a,b,c){var b=b||{},c=c||{},d=(c.scope||k._scopeName)+"Type",g="data-"+(c.scope||k._scopeName)+"-",e=g+"type",f=g+"mixins",l=[];j.forEach(a,function(a){var c=d in b?b[d]:a.getAttribute(e)||a.getAttribute(d);if(c){var g=a.getAttribute(f),c=g?[c].concat(g.split(/\s*,\s*/)):[c];l.push({node:a,types:c})}});return this._instantiate(l,b,
+c)},_instantiate:function(a,b,c){a=j.map(a,function(a){var d=a.ctor||q(a.types);if(!d)throw Error("Unable to resolve constructor for: '"+a.types.join()+"'");return this.construct(d,a.node,b,c,a.scripts,a.inherited)},this);!b._started&&!c.noStart&&j.forEach(a,function(a){"function"===typeof a.startup&&!a._started&&a.startup()});return a},construct:function(c,d,e,f,i,o){var u;var q=c&&c.prototype,f=f||{},t={};f.defaults&&h.mixin(t,f.defaults);o&&h.mixin(t,o);var v;p("dom-attributes-explicit")?v=d.attributes:
+p("dom-attributes-specified-flag")?v=j.filter(d.attributes,function(a){return a.specified}):(o=(/^input$|^img$/i.test(d.nodeName)?d:d.cloneNode(!1)).outerHTML.replace(/=[^\s"']+|="[^"]*"|='[^']*'/g,"").replace(/^\s*<[a-zA-Z0-9]*\s*/,"").replace(/\s*>.*$/,""),v=j.map(o.split(/\s+/),function(a){var b=a.toLowerCase();return{name:a,value:"LI"==d.nodeName&&"value"==a||"enctype"==b?d.getAttribute(b):d.getAttributeNode(b).value}}));var s=f.scope||k._scopeName,o="data-"+s+"-",A={};"dojo"!==s&&(A[o+"props"]=
+"data-dojo-props",A[o+"type"]="data-dojo-type",A[o+"mixins"]="data-dojo-mixins",A[s+"type"]="dojoType",A[o+"id"]="data-dojo-id");for(var s=0,w,x=[],K,H;w=v[s++];){var C=w.name,F=C.toLowerCase();w=w.value;switch(A[F]||F){case "data-dojo-type":case "dojotype":case "data-dojo-mixins":break;case "data-dojo-props":H=w;break;case "data-dojo-id":case "jsid":K=w;break;case "data-dojo-attach-point":case "dojoattachpoint":t.dojoAttachPoint=w;break;case "data-dojo-attach-event":case "dojoattachevent":t.dojoAttachEvent=
+w;break;case "class":t["class"]=d.className;break;case "style":t.style=d.style&&d.style.cssText;break;default:if(C in q||(C=r(c)[F]||C),C in q)switch(typeof q[C]){case "string":t[C]=w;break;case "number":t[C]=w.length?Number(w):NaN;break;case "boolean":t[C]="false"!=w.toLowerCase();break;case "function":t[C]=""===w||-1!=w.search(/[^\w\.]+/i)?new Function(w):h.getObject(w,!1)||new Function(w);x.push(C);break;default:F=q[C],t[C]=F&&"length"in F?w?w.split(/\s*,\s*/):[]:F instanceof Date?""==w?new Date(""):
+"now"==w?new Date:l.fromISOString(w):F instanceof b?k.baseUrl+w:g.fromJson(w)}else t[C]=w}}for(s=0;s<x.length;s++)v=x[s].toLowerCase(),d.removeAttribute(v),d[v]=null;if(H)try{H=g.fromJson.call(f.propsThis,"{"+H+"}"),h.mixin(t,H)}catch(O){throw Error(O.toString()+" in data-dojo-props='"+H+"'");}h.mixin(t,e);i||(i=c&&(c._noScript||q._noScript)?[]:m("> script[type^='dojo/']",d));e=[];f=[];H=[];x=[];if(i)for(s=0;s<i.length;s++){var D=i[s];d.removeChild(D);v=D.getAttribute(o+"event")||D.getAttribute("event");
+A=D.getAttribute(o+"prop");C=D.getAttribute(o+"method");F=D.getAttribute(o+"advice");w=D.getAttribute("type");D=this._functionFromScript(D,o);v?"dojo/connect"==w?e.push({method:v,func:D}):"dojo/on"==w?x.push({event:v,func:D}):t[v]=D:"dojo/aspect"==w?e.push({method:C,advice:F,func:D}):"dojo/watch"==w?H.push({prop:A,func:D}):f.push(D)}u=(i=c.markupFactory||q.markupFactory)?i(t,d,c):new c(t,d),c=u;K&&h.setObject(K,c);for(s=0;s<e.length;s++)a[e[s].advice||"after"](c,e[s].method,h.hitch(c,e[s].func),!0);
+for(s=0;s<f.length;s++)f[s].call(c);for(s=0;s<H.length;s++)c.watch(H[s].prop,H[s].func);for(s=0;s<x.length;s++)n(c,x[s].event,x[s].func);return c},scan:function(a,b){function c(a){if(!a.inherited){a.inherited={};var b=a.node,d=c(a.parent),b={dir:b.getAttribute("dir")||d.dir,lang:b.getAttribute("lang")||d.lang,textDir:b.getAttribute(o)||d.textDir},g;for(g in b)b[g]&&(a.inherited[g]=b[g])}return a.inherited}var g=[],e=[],l={},i=(b.scope||k._scopeName)+"Type",h="data-"+(b.scope||k._scopeName)+"-",m=
+h+"type",o=h+"textdir",h=h+"mixins",n=a.firstChild,t=b.inherited;if(!t){var r=function(a,b){return a.getAttribute&&a.getAttribute(b)||a.parentNode&&r(a.parentNode,b)},t={dir:r(a,"dir"),lang:r(a,"lang"),textDir:r(a,o)},v;for(v in t)t[v]||delete t[v]}for(var t={inherited:t},s,C;;)if(n)if(1!=n.nodeType)n=n.nextSibling;else if(s&&"script"==n.nodeName.toLowerCase())(F=n.getAttribute("type"))&&/^dojo\/\w/i.test(F)&&s.push(n),n=n.nextSibling;else if(C)n=n.nextSibling;else{var F=n.getAttribute(m)||n.getAttribute(i);
+v=n.firstChild;if(!F&&(!v||3==v.nodeType&&!v.nextSibling))n=n.nextSibling;else{C=null;if(F){var O=n.getAttribute(h);s=O?[F].concat(O.split(/\s*,\s*/)):[F];try{C=q(s)}catch(D){}C||j.forEach(s,function(a){~a.indexOf("/")&&!l[a]&&(l[a]=!0,e[e.length]=a)});O=C&&!C.prototype._noScript?[]:null;t={types:s,ctor:C,parent:t,node:n,scripts:O};t.inherited=c(t);g.push(t)}else t={node:n,scripts:s,parent:t};n=v;s=O;C=C&&C.prototype.stopParser&&!b.template}}else{if(!t||!t.node)break;n=t.node.nextSibling;C=!1;t=t.parent;
+s=t.scripts}var L=new d;e.length?(p("dojo-debug-messages"),f(e,function(){L.resolve(j.filter(g,function(a){if(!a.ctor)try{a.ctor=q(a.types)}catch(c){}for(var d=a.parent;d&&!d.types;)d=d.parent;var g=a.ctor&&a.ctor.prototype;a.instantiateChildren=!(g&&g.stopParser&&!b.template);a.instantiate=!d||d.instantiate&&d.instantiateChildren;return a.instantiate}))})):L.resolve(g);return L.promise},_require:function(a){var a=g.fromJson("{"+a.innerHTML+"}"),b=[],c=[],e=new d,l;for(l in a)b.push(l),c.push(a[l]);
+f(c,function(){for(var a=0;a<b.length;a++)h.setObject(b[a],arguments[a]);e.resolve(arguments)});return e.promise},_scanAmd:function(a){var b=new d,c=b.promise;b.resolve(!0);var g=this;m("script[type='dojo/require']",a).forEach(function(a){c=c.then(function(){return g._require(a)});a.parentNode.removeChild(a)});return c},parse:function(a,b){var d;!b&&a&&a.rootNode?(b=a,d=b.rootNode):a&&h.isObject(a)&&!("nodeType"in a)?b=a:d=a;d=d?c.byId(d):i.body();var b=b||{},g=b.template?{template:!0}:{},e=[],f=
+this,l=this._scanAmd(d,b).then(function(){return f.scan(d,b)}).then(function(a){return e=e.concat(f._instantiate(a,g,b))}).otherwise(function(a){throw a;});h.mixin(e,l);return e}};k.parser=t;e.parseOnLoad&&o(100,t,"parse");return t})},"dojo/_base/url":function(){define(["./kernel"],function(f){var k=/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/,h=/^((([^\[:]+):)?([^@]+)@)?(\[([^\]]+)\]|([^\[:]*))(:([0-9]+))?$/,j=function(){for(var e=arguments,c=[e[0]],f=1;f<e.length;f++)if(e[f]){var b=
+new j(e[f]+""),c=new j(c[0]+"");if(""==b.path&&!b.scheme&&!b.authority&&!b.query){if(null!=b.fragment)c.fragment=b.fragment;b=c}else if(!b.scheme&&(b.scheme=c.scheme,!b.authority&&(b.authority=c.authority,"/"!=b.path.charAt(0)))){for(var c=(c.path.substring(0,c.path.lastIndexOf("/")+1)+b.path).split("/"),g=0;g<c.length;g++)"."==c[g]?g==c.length-1?c[g]="":(c.splice(g,1),g--):0<g&&!(1==g&&""==c[0])&&".."==c[g]&&".."!=c[g-1]&&(g==c.length-1?(c.splice(g,1),c[g-1]=""):(c.splice(g-1,2),g-=2));b.path=c.join("/")}c=
+[];b.scheme&&c.push(b.scheme,":");b.authority&&c.push("//",b.authority);c.push(b.path);b.query&&c.push("?",b.query);b.fragment&&c.push("#",b.fragment)}this.uri=c.join("");e=this.uri.match(k);this.scheme=e[2]||(e[1]?"":null);this.authority=e[4]||(e[3]?"":null);this.path=e[5];this.query=e[7]||(e[6]?"":null);this.fragment=e[9]||(e[8]?"":null);if(null!=this.authority)e=this.authority.match(h),this.user=e[3]||null,this.password=e[4]||null,this.host=e[6]||e[7],this.port=e[9]||null};j.prototype.toString=
+function(){return this.uri};return f._Url=j})},"dojo/date/stamp":function(){define(["../_base/lang","../_base/array"],function(f,k){var h={};f.setObject("dojo.date.stamp",h);h.fromISOString=function(f,e){if(!h._isoRegExp)h._isoRegExp=/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(.\d+)?)?((?:[+-](\d{2}):(\d{2}))|Z)?)?$/;var c=h._isoRegExp.exec(f),i=null;if(c){c.shift();c[1]&&c[1]--;c[6]&&(c[6]*=1E3);e&&(e=new Date(e),k.forEach(k.map("FullYear,Month,Date,Hours,Minutes,Seconds,Milliseconds".split(","),
+function(a){return e["get"+a]()}),function(a,b){c[b]=c[b]||a}));i=new Date(c[0]||1970,c[1]||0,c[2]||1,c[3]||0,c[4]||0,c[5]||0,c[6]||0);100>c[0]&&i.setFullYear(c[0]||1970);var b=0,g=c[7]&&c[7].charAt(0);"Z"!=g&&(b=60*(c[8]||0)+(Number(c[9])||0),"-"!=g&&(b*=-1));g&&(b-=i.getTimezoneOffset());b&&i.setTime(i.getTime()+6E4*b)}return i};h.toISOString=function(f,e){var c=function(a){return 10>a?"0"+a:a},e=e||{},i=[],b=e.zulu?"getUTC":"get",g="";"time"!=e.selector&&(g=f[b+"FullYear"](),g=["0000".substr((g+
+"").length)+g,c(f[b+"Month"]()+1),c(f[b+"Date"]())].join("-"));i.push(g);if("date"!=e.selector){g=[c(f[b+"Hours"]()),c(f[b+"Minutes"]()),c(f[b+"Seconds"]())].join(":");b=f[b+"Milliseconds"]();e.milliseconds&&(g+="."+(100>b?"0":"")+c(b));if(e.zulu)g+="Z";else if("time"!=e.selector)var b=f.getTimezoneOffset(),a=Math.abs(b),g=g+((0<b?"-":"+")+c(Math.floor(a/60))+":"+c(a%60));i.push(g)}return i.join("T")};return h})},"dojox/layout/ExpandoPane":function(){define("dojo/_base/kernel,dojo/_base/lang,dojo/_base/declare,dojo/_base/array,dojo/_base/connect,dojo/_base/event,dojo/_base/fx,dojo/dom-style,dojo/dom-class,dojo/dom-geometry,dojo/text!./resources/ExpandoPane.html,dijit/layout/ContentPane,dijit/_TemplatedMixin,dijit/_Contained,dijit/_Container".split(","),
+function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n){f.experimental("dojox.layout.ExpandoPane");return h("dojox.layout.ExpandoPane",[d,p,m,n],{attributeMap:k.delegate(d.prototype.attributeMap,{title:{node:"titleNode",type:"innerHTML"}}),templateString:l,easeOut:"dojo._DefaultEasing",easeIn:"dojo._DefaultEasing",duration:420,startExpanded:!0,previewOpacity:0.75,previewOnDblClick:!1,tabIndex:"0",_setTabIndexAttr:"iconNode",baseClass:"dijitExpandoPane",postCreate:function(){this.inherited(arguments);this._animConnects=
+[];this._isHorizontal=!0;if(k.isString(this.easeOut))this.easeOut=k.getObject(this.easeOut);if(k.isString(this.easeIn))this.easeIn=k.getObject(this.easeIn);var a="",c=!this.isLeftToRight();if(this.region){switch(this.region){case "trailing":case "right":a=c?"Left":"Right";this._needsPosition="left";break;case "leading":case "left":a=c?"Right":"Left";break;case "top":a="Top";break;case "bottom":this._needsPosition="top",a="Bottom"}g.add(this.domNode,"dojoxExpando"+a);g.add(this.iconNode,"dojoxExpandoIcon"+
+a);this._isHorizontal=/top|bottom/.test(this.region)}b.set(this.domNode,{overflow:"hidden",padding:0});this.connect(this.domNode,"ondblclick",this.previewOnDblClick?"preview":"toggle");this.iconNode.setAttribute("aria-controls",this.id);this.previewOnDblClick&&this.connect(this.getParent(),"_layoutChildren",k.hitch(this,function(){this._isonlypreview=!1}))},_startupSizes:function(){this._container=this.getParent();this._closedSize=this._titleHeight=a.getMarginBox(this.titleWrapper).h;if(this.splitter){var b=
+this.id;j.forEach(dijit.registry.toArray(),function(a){a&&a.child&&a.child.id==b&&this.connect(a,"_stopDrag","_afterResize")},this)}this._currentSize=a.getContentBox(this.domNode);this._showSize=this._currentSize[this._isHorizontal?"h":"w"];this._setupAnims();this.startExpanded?this._showing=!0:(this._showing=!1,this._hideWrapper(),this._hideAnim.gotoPercent(99,!0));this.domNode.setAttribute("aria-expanded",this._showing);this._hasSizes=!0},_afterResize:function(){var b=this._currentSize;this._currentSize=
+a.getMarginBox(this.domNode);var c=this._currentSize[this._isHorizontal?"h":"w"];if(c>this._titleHeight){if(!this._showing)this._showing=!this._showing,this._showEnd();this._showSize=c;this._setupAnims()}else this._showSize=b[this._isHorizontal?"h":"w"],this._showing=!1,this._hideWrapper(),this._hideAnim.gotoPercent(89,!0)},_setupAnims:function(){j.forEach(this._animConnects,e.disconnect);var a={node:this.domNode,duration:this.duration},b={},c=this._showSize,d=this._closedSize,g={},f=this._isHorizontal?
+"height":"width",l=this._needsPosition;b[f]={end:c};g[f]={end:d};l&&(b[l]={end:function(a){return parseInt(a.style[l],10)-c+d}},g[l]={end:function(a){return parseInt(a.style[l],10)+c-d}});this._showAnim=i.animateProperty(k.mixin(a,{easing:this.easeIn,properties:b}));this._hideAnim=i.animateProperty(k.mixin(a,{easing:this.easeOut,properties:g}));this._animConnects=[e.connect(this._showAnim,"onEnd",this,"_showEnd"),e.connect(this._hideAnim,"onEnd",this,"_hideEnd")]},preview:function(){if(!this._showing)this._isonlypreview=
+!this._isonlypreview;this.toggle()},toggle:function(){this._showing?(this._hideWrapper(),this._showAnim&&this._showAnim.stop(),this._hideAnim.play()):(this._hideAnim&&this._hideAnim.stop(),this._showAnim.play());this._showing=!this._showing;this.domNode.setAttribute("aria-expanded",this._showing)},_hideWrapper:function(){g.add(this.domNode,"dojoxExpandoClosed");b.set(this.cwrapper,{visibility:"hidden",opacity:"0",overflow:"hidden"})},_showEnd:function(){b.set(this.cwrapper,{opacity:0,visibility:"visible"});
+i.anim(this.cwrapper,{opacity:this._isonlypreview?this.previewOpacity:1},227);g.remove(this.domNode,"dojoxExpandoClosed");this._isonlypreview?(this._previewShowing=!0,this.resize()):setTimeout(k.hitch(this._container,"layout"),15)},_hideEnd:function(){this._isonlypreview?this._previewShowing=!1:setTimeout(k.hitch(this._container,"layout"),25);this._isonlypreview=!1},resize:function(c){this._hasSizes||this._startupSizes(c);var d=a.getMarginBox(this.domNode);this._contentBox={w:c&&"w"in c?c.w:d.w,h:(c&&
+"h"in c?c.h:d.h)-this._titleHeight};b.set(this.containerNode,"height",this._contentBox.h+"px");c&&a.setMarginBox(this.domNode,c);this._layoutChildren();this._setupAnims()},_trap:function(a){c.stop(a)}})})},"url:dojox/layout/resources/ExpandoPane.html":'<div class="dojoxExpandoPane">\n\t<div dojoAttachPoint="titleWrapper" class="dojoxExpandoTitle">\n\t\t<div class="dojoxExpandoIcon" dojoAttachPoint="iconNode" dojoAttachEvent="ondijitclick:toggle"><span class="a11yNode">X</span></div>\n\t\t<span class="dojoxExpandoTitleNode" dojoAttachPoint="titleNode">${title}</span>\n\t</div>\n\t<div class="dojoxExpandoWrapper" dojoAttachPoint="cwrapper" dojoAttachEvent="ondblclick:_trap">\n\t\t<div class="dojoxExpandoContent" dojoAttachPoint="containerNode"></div>\n\t</div>\n</div>\n',
+"dijit/layout/LayoutContainer":function(){define("dojo/_base/kernel,dojo/_base/lang,dojo/_base/declare,../_WidgetBase,./_LayoutWidget,./utils".split(","),function(f,k,h,j,e,c){h=h("dijit.layout.LayoutContainer",e,{baseClass:"dijitLayoutContainer",constructor:function(){f.deprecated("dijit.layout.LayoutContainer is deprecated","use BorderContainer instead",2)},layout:function(){c.layoutChildren(this.domNode,this._contentBox,this.getChildren())},addChild:function(e,b){this.inherited(arguments);this._started&&
+c.layoutChildren(this.domNode,this._contentBox,this.getChildren())},removeChild:function(e){this.inherited(arguments);this._started&&c.layoutChildren(this.domNode,this._contentBox,this.getChildren())}});h.ChildWidgetProperties={layoutAlign:"none"};k.extend(j,h.ChildWidgetProperties);return h})},"dijit/form/Form":function(){define("dojo/_base/declare,dojo/dom-attr,dojo/_base/event,dojo/_base/kernel,dojo/sniff,../_Widget,../_TemplatedMixin,./_FormMixin,../layout/_ContentPaneResizeMixin".split(","),
+function(f,k,h,j,e,c,i,b,g){return f("dijit.form.Form",[c,i,b,g],{name:"",action:"",method:"",encType:"","accept-charset":"",accept:"",target:"",templateString:"<form data-dojo-attach-point='containerNode' data-dojo-attach-event='onreset:_onReset,onsubmit:_onSubmit' ${!nameAttrSetting}></form>",postMixInProperties:function(){this.nameAttrSetting=this.name?"name='"+this.name+"'":"";this.inherited(arguments)},execute:function(){},onExecute:function(){},_setEncTypeAttr:function(a){this.encType=a;k.set(this.domNode,
+"encType",a);if(e("ie"))this.domNode.encoding=a},reset:function(a){var b={returnValue:!0,preventDefault:function(){this.returnValue=!1},stopPropagation:function(){},currentTarget:a?a.target:this.domNode,target:a?a.target:this.domNode};!1!==this.onReset(b)&&b.returnValue&&this.inherited(arguments,[])},onReset:function(){return!0},_onReset:function(a){this.reset(a);h.stop(a);return!1},_onSubmit:function(a){var b=this.constructor.prototype;if(this.execute!=b.execute||this.onExecute!=b.onExecute)j.deprecated("dijit.form.Form:execute()/onExecute() are deprecated. Use onSubmit() instead.",
+"","2.0"),this.onExecute(),this.execute(this.getValues());!1===this.onSubmit(a)&&h.stop(a)},onSubmit:function(){return this.isValid()},submit:function(){!1!==this.onSubmit()&&this.containerNode.submit()}})})},"dijit/form/_FormMixin":function(){define("dojo/_base/array,dojo/_base/declare,dojo/_base/kernel,dojo/_base/lang,dojo/on,dojo/window".split(","),function(f,k,h,j,e,c){return k("dijit.form._FormMixin",null,{state:"",_getDescendantFormWidgets:function(c){var b=[];f.forEach(c||this.getChildren(),
+function(c){"value"in c?b.push(c):b=b.concat(this._getDescendantFormWidgets(c.getChildren()))},this);return b},reset:function(){f.forEach(this._getDescendantFormWidgets(),function(c){c.reset&&c.reset()})},validate:function(){var e=!1;return f.every(f.map(this._getDescendantFormWidgets(),function(b){b._hasBeenBlurred=!0;var g=b.disabled||!b.validate||b.validate();!g&&!e&&(c.scrollIntoView(b.containerNode||b.domNode),b.focus(),e=!0);return g}),function(b){return b})},setValues:function(c){h.deprecated(this.declaredClass+
+"::setValues() is deprecated. Use set('value', val) instead.","","2.0");return this.set("value",c)},_setValueAttr:function(c){var b={};f.forEach(this._getDescendantFormWidgets(),function(a){a.name&&(b[a.name]||(b[a.name]=[])).push(a)});for(var g in b)if(b.hasOwnProperty(g)){var a=b[g],e=j.getObject(g,!1,c);void 0!==e&&(j.isArray(e)||(e=[e]),"boolean"==typeof a[0].checked?f.forEach(a,function(a){a.set("value",-1!=f.indexOf(e,a.value))}):a[0].multiple?a[0].set("value",e):f.forEach(a,function(a,b){a.set("value",
+e[b])}))}},getValues:function(){h.deprecated(this.declaredClass+"::getValues() is deprecated. Use get('value') instead.","","2.0");return this.get("value")},_getValueAttr:function(){var c={};f.forEach(this._getDescendantFormWidgets(),function(b){var g=b.name;if(g&&!b.disabled){var a=b.get("value");"boolean"==typeof b.checked?/Radio/.test(b.declaredClass)?!1!==a?j.setObject(g,a,c):(a=j.getObject(g,!1,c),void 0===a&&j.setObject(g,null,c)):(b=j.getObject(g,!1,c),b||(b=[],j.setObject(g,b,c)),!1!==a&&
+b.push(a)):(b=j.getObject(g,!1,c),"undefined"!=typeof b?j.isArray(b)?b.push(a):j.setObject(g,[b,a],c):j.setObject(g,a,c))}});return c},isValid:function(){return""==this.state},onValidStateChange:function(){},_getState:function(){var c=f.map(this._descendants,function(b){return b.get("state")||""});return 0<=f.indexOf(c,"Error")?"Error":0<=f.indexOf(c,"Incomplete")?"Incomplete":""},disconnectChildren:function(){},connectChildren:function(c){this._descendants=this._getDescendantFormWidgets();f.forEach(this._descendants,
+function(b){b._started||b.startup()});c||this._onChildChange()},_onChildChange:function(c){(!c||"state"==c||"disabled"==c)&&this._set("state",this._getState());if(!c||"value"==c||"disabled"==c||"checked"==c)this._onChangeDelayTimer&&this._onChangeDelayTimer.remove(),this._onChangeDelayTimer=this.defer(function(){delete this._onChangeDelayTimer;this._set("value",this.get("value"))},10)},startup:function(){this.inherited(arguments);this._descendants=this._getDescendantFormWidgets();this.value=this.get("value");
+this.state=this._getState();var c=this;this.own(e(this.containerNode,"attrmodified-state, attrmodified-disabled, attrmodified-value, attrmodified-checked",function(b){b.target!=c.domNode&&c._onChildChange(b.type.replace("attrmodified-",""))}));this.watch("state",function(b,c,a){this.onValidStateChange(""==a)})},destroy:function(){this.inherited(arguments)}})})},"dijit/form/TextBox":function(){define("dojo/_base/declare,dojo/dom-construct,dojo/dom-style,dojo/_base/kernel,dojo/_base/lang,dojo/sniff,./_FormValueWidget,./_TextBoxMixin,dojo/text!./templates/TextBox.html,../main".split(","),
+function(f,k,h,j,e,c,i,b,g,a){f=f("dijit.form.TextBox",[i,b],{templateString:g,_singleNodeTemplate:'<input class="dijit dijitReset dijitLeft dijitInputField" data-dojo-attach-point="textbox,focusNode" autocomplete="off" type="${type}" ${!nameAttrSetting} />',_buttonInputDisabled:c("ie")?"disabled":"",baseClass:"dijitTextBox",postMixInProperties:function(){var a=this.type.toLowerCase();if(this.templateString&&"input"==this.templateString.toLowerCase()||("hidden"==a||"file"==a)&&this.templateString==
+this.constructor.prototype.templateString)this.templateString=this._singleNodeTemplate;this.inherited(arguments)},postCreate:function(){this.inherited(arguments);9>c("ie")&&this.defer(function(){try{var a=h.getComputedStyle(this.domNode);if(a){var b=a.fontFamily;if(b){var c=this.domNode.getElementsByTagName("INPUT");if(c)for(a=0;a<c.length;a++)c[a].style.fontFamily=b}}}catch(g){}})},_onInput:function(a){this.inherited(arguments);this.intermediateChanges&&this.defer(function(){this._handleOnChange(this.get("value"),
+!1)})},_setPlaceHolderAttr:function(a){this._set("placeHolder",a);if(!this._phspan)this._attachPoints.push("_phspan"),this._phspan=k.create("span",{onmousedown:function(a){a.preventDefault()},className:"dijitPlaceHolder dijitInputField"},this.textbox,"after");this._phspan.innerHTML="";this._phspan.appendChild(this._phspan.ownerDocument.createTextNode(a));this._updatePlaceHolder()},_updatePlaceHolder:function(){if(this._phspan)this._phspan.style.display=this.placeHolder&&!this.focused&&!this.textbox.value?
+"":"none"},_setValueAttr:function(a,b,c){this.inherited(arguments);this._updatePlaceHolder()},getDisplayedValue:function(){j.deprecated(this.declaredClass+"::getDisplayedValue() is deprecated. Use get('displayedValue') instead.","","2.0");return this.get("displayedValue")},setDisplayedValue:function(a){j.deprecated(this.declaredClass+"::setDisplayedValue() is deprecated. Use set('displayedValue', ...) instead.","","2.0");this.set("displayedValue",a)},_onBlur:function(a){if(!this.disabled&&(this.inherited(arguments),
+this._updatePlaceHolder(),c("mozilla")&&this.selectOnClick))this.textbox.selectionStart=this.textbox.selectionEnd=void 0},_onFocus:function(a){!this.disabled&&!this.readOnly&&(this.inherited(arguments),this._updatePlaceHolder())}});if(c("ie"))f.prototype._isTextSelected=function(){var a=this.ownerDocument.selection.createRange();return a.parentElement()==this.textbox&&0<a.text.length},a._setSelectionRange=b._setSelectionRange=function(a,b,c){a.createTextRange&&(a=a.createTextRange(),a.collapse(!0),
+a.moveStart("character",-99999),a.moveStart("character",b),a.moveEnd("character",c-b),a.select())};return f})},"dijit/form/_FormValueWidget":function(){define(["dojo/_base/declare","dojo/sniff","./_FormWidget","./_FormValueMixin"],function(f,k,h,j){return f("dijit.form._FormValueWidget",[h,j],{_layoutHackIE7:function(){if(7==k("ie"))for(var e=this.domNode,c=e.parentNode,f=e.firstChild||e,b=f.style.filter,g=this;c&&0==c.clientHeight;)(function(){var a=g.connect(c,"onscroll",function(){g.disconnect(a);
+f.style.filter=(new Date).getMilliseconds();g.defer(function(){f.style.filter=b})})})(),c=c.parentNode}})})},"dijit/form/_FormWidget":function(){define("dojo/_base/declare,dojo/has,dojo/_base/kernel,dojo/ready,../_Widget,../_CssStateMixin,../_TemplatedMixin,./_FormWidgetMixin".split(","),function(f,k,h,j,e,c,i,b){k("dijit-legacy-requires")&&j(0,function(){require(["dijit/form/_FormValueWidget"])});return f("dijit.form._FormWidget",[e,i,c,b],{setDisabled:function(b){h.deprecated("setDisabled("+b+") is deprecated. Use set('disabled',"+
+b+") instead.","","2.0");this.set("disabled",b)},setValue:function(b){h.deprecated("dijit.form._FormWidget:setValue("+b+") is deprecated. Use set('value',"+b+") instead.","","2.0");this.set("value",b)},getValue:function(){h.deprecated(this.declaredClass+"::getValue() is deprecated. Use get('value') instead.","","2.0");return this.get("value")},postMixInProperties:function(){this.nameAttrSetting=this.name?'name="'+this.name.replace(/"/g,"&quot;")+'"':"";this.inherited(arguments)},_setTypeAttr:null})})},
+"dijit/_CssStateMixin":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom,dojo/dom-class,dojo/has,dojo/_base/lang,dojo/on,dojo/ready,dojo/_base/window,./registry".split(","),function(f,k,h,j,e,c,i,b,g,a){k=k("dijit._CssStateMixin",[],{cssStateNodes:{},hovering:!1,active:!1,_applyAttributes:function(){this.inherited(arguments);f.forEach("disabled,readOnly,checked,selected,focused,state,hovering,active,_opened".split(","),function(a){this.watch(a,c.hitch(this,"_setStateClass"))},this);
+for(var a in this.cssStateNodes)this._trackMouseState(this[a],this.cssStateNodes[a]);this._trackMouseState(this.domNode,this.baseClass);this._setStateClass()},_cssMouseEvent:function(a){if(!this.disabled)switch(a.type){case "mouseover":this._set("hovering",!0);this._set("active",this._mouseDown);break;case "mouseout":this._set("hovering",!1);this._set("active",!1);break;case "mousedown":case "touchstart":this._set("active",!0);break;case "mouseup":case "touchend":this._set("active",!1)}},_setStateClass:function(){function a(c){b=
+b.concat(f.map(b,function(a){return a+c}),"dijit"+c)}var b=this.baseClass.split(" ");this.isLeftToRight()||a("Rtl");var c="mixed"==this.checked?"Mixed":this.checked?"Checked":"";this.checked&&a(c);this.state&&a(this.state);this.selected&&a("Selected");this._opened&&a("Opened");this.disabled?a("Disabled"):this.readOnly?a("ReadOnly"):this.active?a("Active"):this.hovering&&a("Hover");this.focused&&a("Focused");var c=this.stateNode||this.domNode,g={};f.forEach(c.className.split(" "),function(a){g[a]=
+!0});"_stateClasses"in this&&f.forEach(this._stateClasses,function(a){delete g[a]});f.forEach(b,function(a){g[a]=!0});var e=[],i;for(i in g)e.push(i);c.className=e.join(" ");this._stateClasses=b},_subnodeCssMouseEvent:function(a,b,c){function g(c){j.toggle(a,b+"Active",c)}if(!this.disabled&&!this.readOnly)switch(c.type){case "mouseover":j.toggle(a,b+"Hover",!0);break;case "mouseout":j.toggle(a,b+"Hover",!1);g(!1);break;case "mousedown":case "touchstart":g(!0);break;case "mouseup":case "touchend":g(!1);
+break;case "focus":case "focusin":j.toggle(a,b+"Focused",!0);break;case "blur":case "focusout":j.toggle(a,b+"Focused",!1)}},_trackMouseState:function(a,b){a._cssState=b}});b(function(){function b(c){if(!h.isDescendant(c.relatedTarget,c.target))for(var d=c.target;d&&d!=c.relatedTarget;d=d.parentNode)if(d._cssState){var g=a.getEnclosingWidget(d);g&&(d==g.domNode?g._cssMouseEvent(c):g._subnodeCssMouseEvent(d,d._cssState,c))}}function c(a){a.target=a.srcElement;b(a)}var j=g.body(),m=(e("touch")?[]:["mouseover",
+"mouseout"]).concat(["mousedown","touchstart","mouseup","touchend"]);f.forEach(m,function(a){j.addEventListener?j.addEventListener(a,b,!0):j.attachEvent("on"+a,c)});i(j,"focusin, focusout",function(b){var c=b.target;c._cssState&&!c.getAttribute("widgetId")&&a.getEnclosingWidget(c)._subnodeCssMouseEvent(c,c._cssState,b)})});return k})},"dijit/form/_FormWidgetMixin":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom-attr,dojo/dom-style,dojo/_base/lang,dojo/mouse,dojo/sniff,dojo/window,../a11y".split(","),
+function(f,k,h,j,e,c,i,b,g){return k("dijit.form._FormWidgetMixin",null,{name:"",alt:"",value:"",type:"text",tabIndex:"0",_setTabIndexAttr:"focusNode",disabled:!1,intermediateChanges:!1,scrollOnFocus:!0,_setIdAttr:"focusNode",_setDisabledAttr:function(a){this._set("disabled",a);h.set(this.focusNode,"disabled",a);this.valueNode&&h.set(this.valueNode,"disabled",a);this.focusNode.setAttribute("aria-disabled",a?"true":"false");a?(this._set("hovering",!1),this._set("active",!1),a="tabIndex"in this.attributeMap?
+this.attributeMap.tabIndex:"_setTabIndexAttr"in this?this._setTabIndexAttr:"focusNode",f.forEach(e.isArray(a)?a:[a],function(a){a=this[a];i("webkit")||g.hasDefaultTabStop(a)?a.setAttribute("tabIndex","-1"):a.removeAttribute("tabIndex")},this)):""!=this.tabIndex&&this.set("tabIndex",this.tabIndex)},_onFocus:function(a){if("mouse"==a&&this.isFocusable())var c=this.connect(this.focusNode,"onfocus",function(){this.disconnect(d);this.disconnect(c)}),d=this.connect(this.ownerDocumentBody,"onmouseup",function(){this.disconnect(d);
+this.disconnect(c);this.focused&&this.focus()});this.scrollOnFocus&&this.defer(function(){b.scrollIntoView(this.domNode)});this.inherited(arguments)},isFocusable:function(){return!this.disabled&&this.focusNode&&"none"!=j.get(this.domNode,"display")},focus:function(){if(!this.disabled&&this.focusNode.focus)try{this.focusNode.focus()}catch(a){}},compare:function(a,b){return"number"==typeof a&&"number"==typeof b?isNaN(a)&&isNaN(b)?0:a-b:a>b?1:a<b?-1:0},onChange:function(){},_onChangeActive:!1,_handleOnChange:function(a,
+b){if(void 0==this._lastValueReported&&(null===b||!this._onChangeActive))this._resetValue=this._lastValueReported=a;this._pendingOnChange=this._pendingOnChange||typeof a!=typeof this._lastValueReported||0!=this.compare(a,this._lastValueReported);if((this.intermediateChanges||b||void 0===b)&&this._pendingOnChange)if(this._lastValueReported=a,this._pendingOnChange=!1,this._onChangeActive)this._onChangeHandle&&this._onChangeHandle.remove(),this._onChangeHandle=this.defer(function(){this._onChangeHandle=
+null;this.onChange(a)})},create:function(){this.inherited(arguments);this._onChangeActive=!0},destroy:function(){this._onChangeHandle&&(this._onChangeHandle.remove(),this.onChange(this._lastValueReported));this.inherited(arguments)}})})},"dijit/form/_FormValueMixin":function(){define(["dojo/_base/declare","dojo/dom-attr","dojo/keys","dojo/sniff","./_FormWidgetMixin"],function(f,k,h,j,e){return f("dijit.form._FormValueMixin",e,{readOnly:!1,_setReadOnlyAttr:function(c){k.set(this.focusNode,"readOnly",
+c);this.focusNode.setAttribute("aria-readonly",c);this._set("readOnly",c)},postCreate:function(){this.inherited(arguments);j("ie")&&this.connect(this.focusNode||this.domNode,"onkeydown",this._onKeyDown);if(void 0===this._resetValue)this._lastValueReported=this._resetValue=this.value},_setValueAttr:function(c,e){this._handleOnChange(c,e)},_handleOnChange:function(c,e){this._set("value",c);this.inherited(arguments)},undo:function(){this._setValueAttr(this._lastValueReported,!1)},reset:function(){this._hasBeenBlurred=
+!1;this._setValueAttr(this._resetValue,!0)},_onKeyDown:function(c){if(c.keyCode==h.ESCAPE&&!c.ctrlKey&&!c.altKey&&!c.metaKey&&(9>j("ie")||j("ie")&&j("quirks"))){c.preventDefault();var e=c.srcElement,b=e.ownerDocument.createEventObject();b.keyCode=h.ESCAPE;b.shiftKey=c.shiftKey;e.fireEvent("onkeypress",b)}}})})},"dijit/form/_TextBoxMixin":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom,dojo/_base/event,dojo/keys,dojo/_base/lang,dojo/on,../main".split(","),function(f,k,h,j,e,c,i,b){var g=
+k("dijit.form._TextBoxMixin",null,{trim:!1,uppercase:!1,lowercase:!1,propercase:!1,maxLength:"",selectOnClick:!1,placeHolder:"",_getValueAttr:function(){return this.parse(this.get("displayedValue"),this.constraints)},_setValueAttr:function(a,b,c){var g;void 0!==a&&(g=this.filter(a),"string"!=typeof c&&(c=null!==g&&("number"!=typeof g||!isNaN(g))?this.filter(this.format(g,this.constraints)):""));if(null!=c&&("number"!=typeof c||!isNaN(c))&&this.textbox.value!=c)this.textbox.value=c,this._set("displayedValue",
+this.get("displayedValue"));"auto"==this.textDir&&this.applyTextDir(this.focusNode,c);this.inherited(arguments,[g,b])},displayedValue:"",_getDisplayedValueAttr:function(){return this.filter(this.textbox.value)},_setDisplayedValueAttr:function(a){null==a?a="":"string"!=typeof a&&(a=""+a);this.textbox.value=a;this._setValueAttr(this.get("value"),void 0);this._set("displayedValue",this.get("displayedValue"));"auto"==this.textDir&&this.applyTextDir(this.focusNode,a)},format:function(a){return null==a?
+"":a.toString?a.toString():a},parse:function(a){return a},_refreshState:function(){},onInput:function(){},__skipInputEvent:!1,_onInput:function(a){"auto"==this.textDir&&this.applyTextDir(this.focusNode,this.focusNode.value);this._processInput(a)},_processInput:function(){this._refreshState();this._set("displayedValue",this.get("displayedValue"))},postCreate:function(){this.textbox.setAttribute("value",this.textbox.value);this.inherited(arguments);this.own(i(this.textbox,"keydown, keypress, paste, cut, input, compositionend",
+c.hitch(this,function(a){var b;if("keydown"==a.type){b=a.keyCode;switch(b){case e.SHIFT:case e.ALT:case e.CTRL:case e.META:case e.CAPS_LOCK:case e.NUM_LOCK:case e.SCROLL_LOCK:return}if(!a.ctrlKey&&!a.metaKey&&!a.altKey){switch(b){case e.NUMPAD_0:case e.NUMPAD_1:case e.NUMPAD_2:case e.NUMPAD_3:case e.NUMPAD_4:case e.NUMPAD_5:case e.NUMPAD_6:case e.NUMPAD_7:case e.NUMPAD_8:case e.NUMPAD_9:case e.NUMPAD_MULTIPLY:case e.NUMPAD_PLUS:case e.NUMPAD_ENTER:case e.NUMPAD_MINUS:case e.NUMPAD_PERIOD:case e.NUMPAD_DIVIDE:return}if(65<=
+b&&90>=b||48<=b&&57>=b||b==e.SPACE)return;b=!1;for(var d in e)if(e[d]===a.keyCode){b=!0;break}if(!b)return}}(b=32<=a.charCode?String.fromCharCode(a.charCode):a.charCode)||(b=65<=a.keyCode&&90>=a.keyCode||48<=a.keyCode&&57>=a.keyCode||a.keyCode==e.SPACE?String.fromCharCode(a.keyCode):a.keyCode);b||(b=229);if("keypress"==a.type){if("string"!=typeof b)return;if("a"<=b&&"z">=b||"A"<=b&&"Z">=b||"0"<=b&&"9">=b||" "===b)if(a.ctrlKey||a.metaKey||a.altKey)return}if("input"==a.type){if(this.__skipInputEvent){this.__skipInputEvent=
+!1;return}}else this.__skipInputEvent=!0;var g={faux:!0},f;for(f in a)"layerX"!=f&&"layerY"!=f&&(d=a[f],"function"!=typeof d&&"undefined"!=typeof d&&(g[f]=d));c.mixin(g,{charOrCode:b,_wasConsumed:!1,preventDefault:function(){g._wasConsumed=!0;a.preventDefault()},stopPropagation:function(){a.stopPropagation()}});!1===this.onInput(g)&&(g.preventDefault(),g.stopPropagation());g._wasConsumed||this.defer(function(){this._onInput(g)})})))},_blankValue:"",filter:function(a){if(null===a)return this._blankValue;
+if("string"!=typeof a)return a;this.trim&&(a=c.trim(a));this.uppercase&&(a=a.toUpperCase());this.lowercase&&(a=a.toLowerCase());this.propercase&&(a=a.replace(/[^\s]+/g,function(a){return a.substring(0,1).toUpperCase()+a.substring(1)}));return a},_setBlurValue:function(){this._setValueAttr(this.get("value"),!0)},_onBlur:function(a){this.disabled||(this._setBlurValue(),this.inherited(arguments))},_isTextSelected:function(){return this.textbox.selectionStart!=this.textbox.selectionEnd},_onFocus:function(a){if(!this.disabled&&
+!this.readOnly){if(this.selectOnClick&&"mouse"==a)this._selectOnClickHandle=this.connect(this.domNode,"onmouseup",function(){this.disconnect(this._selectOnClickHandle);this._selectOnClickHandle=null;this._isTextSelected()||g.selectInputText(this.textbox)}),this.defer(function(){if(this._selectOnClickHandle)this.disconnect(this._selectOnClickHandle),this._selectOnClickHandle=null},500);this.inherited(arguments);this._refreshState()}},reset:function(){this.textbox.value="";this.inherited(arguments)},
+_setTextDirAttr:function(a){if(!this._created||this.textDir!=a)this._set("textDir",a),this.applyTextDir(this.focusNode,this.focusNode.value)}});g._setSelectionRange=b._setSelectionRange=function(a,b,c){a.setSelectionRange&&a.setSelectionRange(b,c)};g.selectInputText=b.selectInputText=function(a,b,c){a=h.byId(a);isNaN(b)&&(b=0);isNaN(c)&&(c=a.value?a.value.length:0);try{a.focus(),g._setSelectionRange(a,b,c)}catch(e){}};return g})},"url:dijit/form/templates/TextBox.html":'<div class="dijit dijitReset dijitInline dijitLeft" id="widget_${id}" role="presentation"\n\t><div class="dijitReset dijitInputField dijitInputContainer"\n\t\t><input class="dijitReset dijitInputInner" data-dojo-attach-point=\'textbox,focusNode\' autocomplete="off"\n\t\t\t${!nameAttrSetting} type=\'${type}\'\n\t/></div\n></div>\n',
+"dijit/form/Button":function(){define("require,dojo/_base/declare,dojo/dom-class,dojo/has,dojo/_base/kernel,dojo/_base/lang,dojo/ready,./_FormWidget,./_ButtonMixin,dojo/text!./templates/Button.html".split(","),function(f,k,h,j,e,c,i,b,g,a){j("dijit-legacy-requires")&&i(0,function(){f(["dijit/form/DropDownButton","dijit/form/ComboButton","dijit/form/ToggleButton"])});return k("dijit.form.Button",[b,g],{showLabel:!0,iconClass:"dijitNoIcon",_setIconClassAttr:{node:"iconNode",type:"class"},baseClass:"dijitButton",
+templateString:a,_setValueAttr:"valueNode",_onClick:function(a){var b=this.inherited(arguments);b&&this.valueNode&&(this.valueNode.click(),a.preventDefault(),a.stopPropagation());return b},_fillContent:function(a){if(a&&(!this.params||!("label"in this.params)))if(a=c.trim(a.innerHTML))this.label=a},_setShowLabelAttr:function(a){this.containerNode&&h.toggle(this.containerNode,"dijitDisplayNone",!a);this._set("showLabel",a)},setLabel:function(a){e.deprecated("dijit.form.Button.setLabel() is deprecated. Use set('label', ...) instead.",
+"","2.0");this.set("label",a)},_setLabelAttr:function(a){this.inherited(arguments);if(!this.showLabel&&!("title"in this.params))this.titleNode.title=c.trim(this.containerNode.innerText||this.containerNode.textContent||"")}})})},"dijit/form/_ButtonMixin":function(){define(["dojo/_base/declare","dojo/dom","dojo/_base/event","../registry"],function(f,k,h,j){return f("dijit.form._ButtonMixin",null,{label:"",type:"button",_onClick:function(e){if(this.disabled)return h.stop(e),!1;var c=!1===this.onClick(e);
+if(!c&&"submit"==this.type&&!(this.valueNode||this.focusNode).form)for(var f=this.domNode;f.parentNode;f=f.parentNode){var b=j.byNode(f);if(b&&"function"==typeof b._onSubmit){b._onSubmit(e);c=!0;break}}c&&e.preventDefault();return!c},postCreate:function(){this.inherited(arguments);k.setSelectable(this.focusNode,!1)},onClick:function(){return!0},_setLabelAttr:function(e){this._set("label",e);(this.containerNode||this.focusNode).innerHTML=e}})})},"url:dijit/form/templates/Button.html":'<span class="dijit dijitReset dijitInline" role="presentation"\n\t><span class="dijitReset dijitInline dijitButtonNode"\n\t\tdata-dojo-attach-event="ondijitclick:_onClick" role="presentation"\n\t\t><span class="dijitReset dijitStretch dijitButtonContents"\n\t\t\tdata-dojo-attach-point="titleNode,focusNode"\n\t\t\trole="button" aria-labelledby="${id}_label"\n\t\t\t><span class="dijitReset dijitInline dijitIcon" data-dojo-attach-point="iconNode"></span\n\t\t\t><span class="dijitReset dijitToggleButtonIconChar">&#x25CF;</span\n\t\t\t><span class="dijitReset dijitInline dijitButtonText"\n\t\t\t\tid="${id}_label"\n\t\t\t\tdata-dojo-attach-point="containerNode"\n\t\t\t></span\n\t\t></span\n\t></span\n\t><input ${!nameAttrSetting} type="${type}" value="${value}" class="dijitOffScreen"\n\t\ttabIndex="-1" role="presentation" data-dojo-attach-point="valueNode"\n/></span>\n',
+"dijit/MenuBar":function(){define(["dojo/_base/declare","dojo/_base/event","dojo/keys","./_MenuBase","dojo/text!./templates/MenuBar.html"],function(f,k,h,j,e){return f("dijit.MenuBar",j,{templateString:e,baseClass:"dijitMenuBar",_isMenuBar:!0,postCreate:function(){this.inherited(arguments);var c=this.isLeftToRight();this.connectKeyNavHandlers(c?[h.LEFT_ARROW]:[h.RIGHT_ARROW],c?[h.RIGHT_ARROW]:[h.LEFT_ARROW]);this._orient=["below"]},_moveToPopup:function(c){if(this.focusedChild&&this.focusedChild.popup&&
+!this.focusedChild.disabled)this.onItemClick(this.focusedChild,c)},focusChild:function(c){var e=this.focusedChild,e=e&&e.popup&&e.popup.isShowingNow;this.inherited(arguments);e&&c.popup&&!c.disabled&&this._openPopup(!0)},_onKeyPress:function(c){if(!c.ctrlKey&&!c.altKey)switch(c.charOrCode){case h.DOWN_ARROW:this._moveToPopup(c),k.stop(c)}},onItemClick:function(c,e){if(c.popup&&c.popup.isShowingNow&&("keypress"!==e.type||e.keyCode!==h.DOWN_ARROW))c.popup.onCancel();else this.inherited(arguments)}})})},
+"dijit/_MenuBase":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-class,dojo/_base/lang,dojo/mouse,dojo/on,dojo/window,./a11yclick,./popup,./registry,./_Widget,./_KeyNavContainer,./_TemplatedMixin".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n){return k("dijit._MenuBase",[p,n,m],{parentMenu:null,popupDelay:500,autoFocus:!1,postCreate:function(){var c=this,g=function(a){return e.contains(a,"dijitMenuItem")};this.own(b(this.containerNode,b.selector(g,i.enter),
+function(){c.onItemHover(d.byNode(this))}),b(this.containerNode,b.selector(g,i.leave),function(){c.onItemUnhover(d.byNode(this))}),b(this.containerNode,b.selector(g,a),function(a){c.onItemClick(d.byNode(this),a);a.stopPropagation();a.preventDefault()}));this.inherited(arguments)},onExecute:function(){},onCancel:function(){},_moveToPopup:function(a){if(this.focusedChild&&this.focusedChild.popup&&!this.focusedChild.disabled)this.onItemClick(this.focusedChild,a);else(a=this._getTopMenu())&&a._isMenuBar&&
a.focusNext()},_onPopupHover:function(){if(this.currentPopup&&this.currentPopup._pendingClose_timer){var a=this.currentPopup.parentMenu;a.focusedChild&&a.focusedChild._setSelected(!1);a.focusedChild=this.currentPopup.from_item;a.focusedChild._setSelected(!0);this._stopPendingCloseTimer(this.currentPopup)}},onItemHover:function(a){if(this.isActive&&(this.focusChild(a),this.focusedChild.popup&&!this.focusedChild.disabled&&!this.hover_timer))this.hover_timer=this.defer("_openPopup",this.popupDelay);
-this.focusedChild&&this.focusChild(a);this._hoveredChild=a;a._set("hovering",!0)},_onChildBlur:function(a){this._stopPopupTimer();a._setSelected(!1);var b=a.popup;if(b)this._stopPendingCloseTimer(b),b._pendingClose_timer=this.defer(function(){b._pendingClose_timer=null;if(b.parentMenu)b.parentMenu.currentPopup=null;k.close(b)},this.popupDelay)},onItemUnhover:function(a){this.isActive&&this._stopPopupTimer();if(this._hoveredChild==a)this._hoveredChild=null;a._set("hovering",!1)},_stopPopupTimer:function(){if(this.hover_timer)this.hover_timer=
+this.focusedChild&&this.focusChild(a);this._hoveredChild=a;a._set("hovering",!0)},_onChildBlur:function(a){this._stopPopupTimer();a._setSelected(!1);var b=a.popup;if(b)this._stopPendingCloseTimer(b),b._pendingClose_timer=this.defer(function(){b._pendingClose_timer=null;if(b.parentMenu)b.parentMenu.currentPopup=null;l.close(b)},this.popupDelay)},onItemUnhover:function(a){this.isActive&&this._stopPopupTimer();if(this._hoveredChild==a)this._hoveredChild=null;a._set("hovering",!1)},_stopPopupTimer:function(){if(this.hover_timer)this.hover_timer=
this.hover_timer.remove()},_stopPendingCloseTimer:function(a){if(a._pendingClose_timer)a._pendingClose_timer=a._pendingClose_timer.remove()},_stopFocusTimer:function(){if(this._focus_timer)this._focus_timer=this._focus_timer.remove()},_getTopMenu:function(){for(var a=this;a.parentMenu;a=a.parentMenu);return a},onItemClick:function(a,b){"undefined"==typeof this.isShowingNow&&this._markActive();this.focusChild(a);if(a.disabled)return!1;a.popup?this._openPopup("keypress"==b.type):(this.onExecute(),a._onClick?
-a._onClick(b):a.onClick(b))},_openPopup:function(a){this._stopPopupTimer();var b=this.focusedChild;if(b){var d=b.popup;if(!d.isShowingNow){this.currentPopup&&(this._stopPendingCloseTimer(this.currentPopup),k.close(this.currentPopup));d.parentMenu=this;d.from_item=b;var c=this;k.open({parent:this,popup:d,around:b.domNode,orient:this._orient||["after","before"],onCancel:function(){c.focusChild(b);c._cleanUp();b._setSelected(!0);c.focusedChild=b},onExecute:g.hitch(this,"_cleanUp")});this.currentPopup=
-d;d.connect(d.domNode,"onmouseenter",g.hitch(c,"_onPopupHover"))}if(a&&d.focus)d._focus_timer=this.defer(g.hitch(d,function(){this._focus_timer=null;this.focus()}))}},_markActive:function(){this.isActive=!0;c.replace(this.domNode,"dijitMenuActive","dijitMenuPassive")},onOpen:function(){this.isShowingNow=!0;this._markActive()},_markInactive:function(){this.isActive=!1;c.replace(this.domNode,"dijitMenuPassive","dijitMenuActive")},onClose:function(){this._stopFocusTimer();this._markInactive();this.isShowingNow=
-!1;this.parentMenu=null},_closeChild:function(){this._stopPopupTimer();if(this.currentPopup)0<=e.indexOf(this._focusManager.activeStack,this.id)&&(l.set(this.focusedChild.focusNode,"tabIndex",this.tabIndex),this.focusedChild.focusNode.focus()),k.close(this.currentPopup),this.currentPopup=null;if(this.focusedChild)this.focusedChild._setSelected(!1),this.onItemUnhover(this.focusedChild),this.focusedChild=null},_onItemFocus:function(a){if(this._hoveredChild&&this._hoveredChild!=a)this.onItemUnhover(this._hoveredChild)},
-_onBlur:function(){this._cleanUp();this.inherited(arguments)},_cleanUp:function(){this._closeChild();"undefined"==typeof this.isShowingNow&&this._markInactive()}})})},"dijit/popup":function(){define("dojo/_base/array,dojo/aspect,dojo/_base/connect,dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-construct,dojo/dom-geometry,dojo/dom-style,dojo/_base/event,dojo/keys,dojo/_base/lang,dojo/on,dojo/sniff,./place,./BackgroundIframe,./main".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o,r){function q(){this._popupWrapper&&
-(h.destroy(this._popupWrapper),delete this._popupWrapper)}l=l(null,{_stack:[],_beginZIndex:1E3,_idGen:1,_createWrapper:function(a){var b=a._popupWrapper,d=a.domNode;if(!b)b=h.create("div",{"class":"dijitPopup",style:{display:"none"},role:"presentation"},a.ownerDocumentBody),b.appendChild(d),d=d.style,d.display="",d.visibility="",d.position="",d.top="0px",a._popupWrapper=b,j.after(a,"destroy",q,!0);return b},moveOffScreen:function(a){a=this._createWrapper(a);f.set(a,{visibility:"hidden",top:"-9999px",
-display:""})},hide:function(a){a=this._createWrapper(a);f.set(a,"display","none")},getTopPopup:function(){for(var a=this._stack,b=a.length-1;0<b&&a[b].parent===a[b-1].widget;b--);return a[b]},open:function(f){for(var e=this._stack,h=f.popup,l=f.orient||["below","below-alt","above","above-alt"],j=f.parent?f.parent.isLeftToRight():b.isBodyLtr(h.ownerDocument),q=f.around,r=f.around&&f.around.id?f.around.id+"_dropdown":"popup_"+this._idGen++;e.length&&(!f.parent||!c.isDescendant(f.parent.domNode,e[e.length-
-1].widget.domNode));)this.close(e[e.length-1].widget);var J=this._createWrapper(h);g.set(J,{id:r,style:{zIndex:this._beginZIndex+e.length},"class":"dijitPopup "+(h.baseClass||h["class"]||"").split(" ")[0]+"Popup",dijitPopupParent:f.parent?f.parent.id:""});if((m("ie")||m("mozilla"))&&!h.bgIframe)h.bgIframe=new o(J);l=q?n.around(J,q,l,j,h.orient?d.hitch(h,"orient"):null):n.at(J,f,"R"==l?["TR","BR","TL","BL"]:["TL","BL","TR","BR"],f.padding);J.style.display="";J.style.visibility="visible";h.domNode.style.visibility=
-"visible";j=[];j.push(p(J,i._keypress,d.hitch(this,function(b){if(b.charOrCode==k.ESCAPE&&f.onCancel)a.stop(b),f.onCancel();else if(b.charOrCode===k.TAB&&(a.stop(b),(b=this.getTopPopup())&&b.onCancel))b.onCancel()})));h.onCancel&&f.onCancel&&j.push(h.on("cancel",f.onCancel));j.push(h.on(h.onExecute?"execute":"change",d.hitch(this,function(){var a=this.getTopPopup();if(a&&a.onExecute)a.onExecute()})));e.push({widget:h,parent:f.parent,onExecute:f.onExecute,onCancel:f.onCancel,onClose:f.onClose,handlers:j});
-if(h.onOpen)h.onOpen(l);return l},close:function(a){for(var b=this._stack;a&&e.some(b,function(b){return b.widget==a})||!a&&b.length;){var d=b.pop(),c=d.widget,f=d.onClose;if(c.onClose)c.onClose();for(var g;g=d.handlers.pop();)g.remove();c&&c.domNode&&this.hide(c);f&&f()}}});return r.popup=new l})},"dijit/place":function(){define("dojo/_base/array,dojo/dom-geometry,dojo/dom-style,dojo/_base/kernel,dojo/_base/window,dojo/window,./main".split(","),function(e,j,i,l,c,g,h){function b(b,a,h,d){var i=g.getBox(b.ownerDocument);
-(!b.parentNode||"body"!=(""+b.parentNode.tagName).toLowerCase())&&c.body(b.ownerDocument).appendChild(b);var m=null;e.some(a,function(a){var c=a.corner,g=a.pos,e=0,l={w:{L:i.l+i.w-g.x,R:g.x-i.l,M:i.w}[c.charAt(1)],h:{T:i.t+i.h-g.y,B:g.y-i.t,M:i.h}[c.charAt(0)]},n=b.style;n.left=n.right="auto";h&&(e=h(b,a.aroundCorner,c,l,d),e="undefined"==typeof e?0:e);var t=b.style,y=t.display,z=t.visibility;if("none"==t.display)t.visibility="hidden",t.display="";n=j.position(b);t.display=y;t.visibility=z;y={L:g.x,
-R:g.x-n.w,M:Math.max(i.l,Math.min(i.l+i.w,g.x+(n.w>>1))-n.w)}[c.charAt(1)];z={T:g.y,B:g.y-n.h,M:Math.max(i.t,Math.min(i.t+i.h,g.y+(n.h>>1))-n.h)}[c.charAt(0)];g=Math.max(i.l,y);t=Math.max(i.t,z);y=Math.min(i.l+i.w,y+n.w);z=Math.min(i.t+i.h,z+n.h);y-=g;z-=t;e+=n.w-y+(n.h-z);if(null==m||e<m.overflow)m={corner:c,aroundCorner:a.aroundCorner,x:g,y:t,w:y,h:z,overflow:e,spaceAvailable:l};return!e});m.overflow&&h&&h(b,m.aroundCorner,m.corner,m.spaceAvailable,d);var a=j.isBodyLtr(b.ownerDocument),l=b.style;
-l.top=m.y+"px";l[a?"left":"right"]=(a?m.x:i.w-m.x-m.w)+"px";l[a?"right":"left"]="auto";return m}return h.place={at:function(c,a,g,d){g=e.map(g,function(b){var c={corner:b,pos:{x:a.x,y:a.y}};d&&(c.pos.x+="L"==b.charAt(1)?d.x:-d.x,c.pos.y+="T"==b.charAt(0)?d.y:-d.y);return c});return b(c,g)},around:function(c,a,g,d,h){function m(a,b){I.push({aroundCorner:a,corner:b,pos:{x:{L:u,R:u+y,M:u+(y>>1)}[a.charAt(1)],y:{T:t,B:t+z,M:t+(z>>1)}[a.charAt(0)]}})}var n="string"==typeof a||"offsetWidth"in a?j.position(a,
-!0):a;if(a.parentNode)for(var o="absolute"==i.getComputedStyle(a).position,a=a.parentNode;a&&1==a.nodeType&&"BODY"!=a.nodeName;){var r=j.position(a,!0),q=i.getComputedStyle(a);/relative|absolute/.test(q.position)&&(o=!1);if(!o&&/hidden|auto|scroll/.test(q.overflow)){var v=Math.min(n.y+n.h,r.y+r.h),s=Math.min(n.x+n.w,r.x+r.w);n.x=Math.max(n.x,r.x);n.y=Math.max(n.y,r.y);n.h=v-n.y;n.w=s-n.x}"absolute"==q.position&&(o=!0);a=a.parentNode}var u=n.x,t=n.y,y="w"in n?n.w:n.w=n.width,z="h"in n?n.h:(l.deprecated("place.around: dijit/place.__Rectangle: { x:"+
-u+", y:"+t+", height:"+n.height+", width:"+y+" } has been deprecated. Please use { x:"+u+", y:"+t+", h:"+n.height+", w:"+y+" }","","2.0"),n.h=n.height),I=[];e.forEach(g,function(a){var b=d;switch(a){case "above-centered":m("TM","BM");break;case "below-centered":m("BM","TM");break;case "after-centered":b=!b;case "before-centered":m(b?"ML":"MR",b?"MR":"ML");break;case "after":b=!b;case "before":m(b?"TL":"TR",b?"TR":"TL");m(b?"BL":"BR",b?"BR":"BL");break;case "below-alt":b=!b;case "below":m(b?"BL":
-"BR",b?"TL":"TR");m(b?"BR":"BL",b?"TR":"TL");break;case "above-alt":b=!b;case "above":m(b?"TL":"TR",b?"BL":"BR");m(b?"TR":"TL",b?"BR":"BL");break;default:m(a.aroundCorner,a.corner)}});c=b(c,I,h,{w:y,h:z});c.aroundNodePos=n;return c}}})},"dijit/BackgroundIframe":function(){define("require,./main,dojo/_base/config,dojo/dom-construct,dojo/dom-style,dojo/_base/lang,dojo/on,dojo/sniff,dojo/_base/window".split(","),function(e,j,i,l,c,g,h,b,f){var a=new function(){var a=[];this.pop=function(){var d;a.length?
-(d=a.pop(),d.style.display=""):(9>b("ie")?(d="<iframe src='"+(i.dojoBlankHtmlUrl||e.toUrl("dojo/resources/blank.html")||'javascript:""')+"' role='presentation' style='position: absolute; left: 0px; top: 0px;z-index: -1; filter:Alpha(Opacity=\"0\");'>",d=f.doc.createElement(d)):(d=l.create("iframe"),d.src='javascript:""',d.className="dijitBackgroundIframe",d.setAttribute("role","presentation"),c.set(d,"opacity",0.1)),d.tabIndex=-1);return d};this.push=function(b){b.style.display="none";a.push(b)}};
-j.BackgroundIframe=function(f){if(!f.id)throw Error("no id");if(b("ie")||b("mozilla")){var d=this.iframe=a.pop();f.appendChild(d);7>b("ie")||b("quirks")?(this.resize(f),this._conn=h(f,"resize",g.hitch(this,function(){this.resize(f)}))):c.set(d,{width:"100%",height:"100%"})}};g.extend(j.BackgroundIframe,{resize:function(a){this.iframe&&c.set(this.iframe,{width:a.offsetWidth+"px",height:a.offsetHeight+"px"})},destroy:function(){if(this._conn)this._conn.remove(),this._conn=null;this.iframe&&(a.push(this.iframe),
-delete this.iframe)}});return j.BackgroundIframe})},"dijit/_KeyNavContainer":function(){define("dojo/_base/kernel,./_Container,./_FocusMixin,dojo/_base/array,dojo/keys,dojo/_base/declare,dojo/_base/event,dojo/dom-attr,dojo/_base/lang".split(","),function(e,j,i,l,c,g,h,b,f){return g("dijit._KeyNavContainer",[i,j],{tabIndex:"0",connectKeyNavHandlers:function(a,b){var d=this._keyNavCodes={},g=f.hitch(this,"focusPrev"),e=f.hitch(this,"focusNext");l.forEach(a,function(a){d[a]=g});l.forEach(b,function(a){d[a]=
-e});d[c.HOME]=f.hitch(this,"focusFirstChild");d[c.END]=f.hitch(this,"focusLastChild");this.connect(this.domNode,"onkeypress","_onContainerKeypress");this.connect(this.domNode,"onfocus","_onContainerFocus")},startupKeyNavChildren:function(){e.deprecated("startupKeyNavChildren() call no longer needed","","2.0")},startup:function(){this.inherited(arguments);l.forEach(this.getChildren(),f.hitch(this,"_startupChild"))},addChild:function(a,b){this.inherited(arguments);this._startupChild(a)},focus:function(){this.focusFirstChild()},
+a._onClick(b):a.onClick(b))},_openPopup:function(a){this._stopPopupTimer();var b=this.focusedChild;if(b){var d=b.popup;if(!d.isShowingNow){this.currentPopup&&(this._stopPendingCloseTimer(this.currentPopup),l.close(this.currentPopup));d.parentMenu=this;d.from_item=b;var g=this;l.open({parent:this,popup:d,around:b.domNode,orient:this._orient||["after","before"],onCancel:function(){g.focusChild(b);g._cleanUp();b._setSelected(!0);g.focusedChild=b},onExecute:c.hitch(this,"_cleanUp")});this.currentPopup=
+d;d.connect(d.domNode,"onmouseenter",c.hitch(g,"_onPopupHover"))}if(a&&d.focus)d._focus_timer=this.defer(c.hitch(d,function(){this._focus_timer=null;this.focus()}))}},_markActive:function(){this.isActive=!0;e.replace(this.domNode,"dijitMenuActive","dijitMenuPassive")},onOpen:function(){this.isShowingNow=!0;this._markActive()},_markInactive:function(){this.isActive=!1;e.replace(this.domNode,"dijitMenuPassive","dijitMenuActive")},onClose:function(){this._stopFocusTimer();this._markInactive();this.isShowingNow=
+!1;this.parentMenu=null},_closeChild:function(){this._stopPopupTimer();if(this.currentPopup)0<=f.indexOf(this._focusManager.activeStack,this.id)&&(j.set(this.focusedChild.focusNode,"tabIndex",this.tabIndex),this.focusedChild.focusNode.focus()),l.close(this.currentPopup),this.currentPopup=null;if(this.focusedChild)this.focusedChild._setSelected(!1),this.onItemUnhover(this.focusedChild),this.focusedChild=null},_onItemFocus:function(a){if(this._hoveredChild&&this._hoveredChild!=a)this.onItemUnhover(this._hoveredChild)},
+_onBlur:function(){this._cleanUp();this.inherited(arguments)},_cleanUp:function(){this._closeChild();"undefined"==typeof this.isShowingNow&&this._markInactive()}})})},"dijit/popup":function(){define("dojo/_base/array,dojo/aspect,dojo/_base/connect,dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-construct,dojo/dom-geometry,dojo/dom-style,dojo/_base/event,dojo/keys,dojo/_base/lang,dojo/on,dojo/sniff,./place,./BackgroundIframe,./main".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o,r){function q(){this._popupWrapper&&
+(i.destroy(this._popupWrapper),delete this._popupWrapper)}j=j(null,{_stack:[],_beginZIndex:1E3,_idGen:1,_createWrapper:function(a){var b=a._popupWrapper,c=a.domNode;if(!b)b=i.create("div",{"class":"dijitPopup",style:{display:"none"},role:"presentation"},a.ownerDocumentBody),b.appendChild(c),c=c.style,c.display="",c.visibility="",c.position="",c.top="0px",a._popupWrapper=b,k.after(a,"destroy",q,!0);return b},moveOffScreen:function(a){a=this._createWrapper(a);g.set(a,{visibility:"hidden",top:"-9999px",
+display:""})},hide:function(a){a=this._createWrapper(a);g.set(a,"display","none")},getTopPopup:function(){for(var a=this._stack,b=a.length-1;0<b&&a[b].parent===a[b-1].widget;b--);return a[b]},open:function(g){for(var f=this._stack,i=g.popup,j=g.orient||["below","below-alt","above","above-alt"],k=g.parent?g.parent.isLeftToRight():b.isBodyLtr(i.ownerDocument),q=g.around,r=g.around&&g.around.id?g.around.id+"_dropdown":"popup_"+this._idGen++;f.length&&(!g.parent||!e.isDescendant(g.parent.domNode,f[f.length-
+1].widget.domNode));)this.close(f[f.length-1].widget);var J=this._createWrapper(i);c.set(J,{id:r,style:{zIndex:this._beginZIndex+f.length},"class":"dijitPopup "+(i.baseClass||i["class"]||"").split(" ")[0]+"Popup",dijitPopupParent:g.parent?g.parent.id:""});if((m("ie")||m("mozilla"))&&!i.bgIframe)i.bgIframe=new o(J);j=q?n.around(J,q,j,k,i.orient?d.hitch(i,"orient"):null):n.at(J,g,"R"==j?["TR","BR","TL","BL"]:["TL","BL","TR","BR"],g.padding);J.style.display="";J.style.visibility="visible";i.domNode.style.visibility=
+"visible";k=[];k.push(p(J,h._keypress,d.hitch(this,function(b){if(b.charOrCode==l.ESCAPE&&g.onCancel)a.stop(b),g.onCancel();else if(b.charOrCode===l.TAB&&(a.stop(b),(b=this.getTopPopup())&&b.onCancel))b.onCancel()})));i.onCancel&&g.onCancel&&k.push(i.on("cancel",g.onCancel));k.push(i.on(i.onExecute?"execute":"change",d.hitch(this,function(){var a=this.getTopPopup();if(a&&a.onExecute)a.onExecute()})));f.push({widget:i,parent:g.parent,onExecute:g.onExecute,onCancel:g.onCancel,onClose:g.onClose,handlers:k});
+if(i.onOpen)i.onOpen(j);return j},close:function(a){for(var b=this._stack;a&&f.some(b,function(b){return b.widget==a})||!a&&b.length;){var c=b.pop(),d=c.widget,g=c.onClose;if(d.onClose)d.onClose();for(var e;e=c.handlers.pop();)e.remove();d&&d.domNode&&this.hide(d);g&&g()}}});return r.popup=new j})},"dijit/place":function(){define("dojo/_base/array,dojo/dom-geometry,dojo/dom-style,dojo/_base/kernel,dojo/_base/window,dojo/window,./main".split(","),function(f,k,h,j,e,c,i){function b(b,a,i,d){var h=c.getBox(b.ownerDocument);
+(!b.parentNode||"body"!=(""+b.parentNode.tagName).toLowerCase())&&e.body(b.ownerDocument).appendChild(b);var j=null;f.some(a,function(a){var c=a.corner,e=a.pos,f=0,n={w:{L:h.l+h.w-e.x,R:e.x-h.l,M:h.w}[c.charAt(1)],h:{T:h.t+h.h-e.y,B:e.y-h.t,M:h.h}[c.charAt(0)]},t=b.style;t.left=t.right="auto";i&&(f=i(b,a.aroundCorner,c,n,d),f="undefined"==typeof f?0:f);var u=b.style,y=u.display,z=u.visibility;if("none"==u.display)u.visibility="hidden",u.display="";t=k.position(b);u.display=y;u.visibility=z;y={L:e.x,
+R:e.x-t.w,M:Math.max(h.l,Math.min(h.l+h.w,e.x+(t.w>>1))-t.w)}[c.charAt(1)];z={T:e.y,B:e.y-t.h,M:Math.max(h.t,Math.min(h.t+h.h,e.y+(t.h>>1))-t.h)}[c.charAt(0)];e=Math.max(h.l,y);u=Math.max(h.t,z);y=Math.min(h.l+h.w,y+t.w);z=Math.min(h.t+h.h,z+t.h);y-=e;z-=u;f+=t.w-y+(t.h-z);if(null==j||f<j.overflow)j={corner:c,aroundCorner:a.aroundCorner,x:e,y:u,w:y,h:z,overflow:f,spaceAvailable:n};return!f});j.overflow&&i&&i(b,j.aroundCorner,j.corner,j.spaceAvailable,d);var a=k.isBodyLtr(b.ownerDocument),n=b.style;
+n.top=j.y+"px";n[a?"left":"right"]=(a?j.x:h.w-j.x-j.w)+"px";n[a?"right":"left"]="auto";return j}return i.place={at:function(c,a,e,d){e=f.map(e,function(b){var c={corner:b,pos:{x:a.x,y:a.y}};d&&(c.pos.x+="L"==b.charAt(1)?d.x:-d.x,c.pos.y+="T"==b.charAt(0)?d.y:-d.y);return c});return b(c,e)},around:function(c,a,e,d,i){function m(a,b){I.push({aroundCorner:a,corner:b,pos:{x:{L:t,R:t+y,M:t+(y>>1)}[a.charAt(1)],y:{T:u,B:u+z,M:u+(z>>1)}[a.charAt(0)]}})}var n="string"==typeof a||"offsetWidth"in a?k.position(a,
+!0):a;if(a.parentNode)for(var o="absolute"==h.getComputedStyle(a).position,a=a.parentNode;a&&1==a.nodeType&&"BODY"!=a.nodeName;){var r=k.position(a,!0),q=h.getComputedStyle(a);/relative|absolute/.test(q.position)&&(o=!1);if(!o&&/hidden|auto|scroll/.test(q.overflow)){var v=Math.min(n.y+n.h,r.y+r.h),s=Math.min(n.x+n.w,r.x+r.w);n.x=Math.max(n.x,r.x);n.y=Math.max(n.y,r.y);n.h=v-n.y;n.w=s-n.x}"absolute"==q.position&&(o=!0);a=a.parentNode}var t=n.x,u=n.y,y="w"in n?n.w:n.w=n.width,z="h"in n?n.h:(j.deprecated("place.around: dijit/place.__Rectangle: { x:"+
+t+", y:"+u+", height:"+n.height+", width:"+y+" } has been deprecated. Please use { x:"+t+", y:"+u+", h:"+n.height+", w:"+y+" }","","2.0"),n.h=n.height),I=[];f.forEach(e,function(a){var b=d;switch(a){case "above-centered":m("TM","BM");break;case "below-centered":m("BM","TM");break;case "after-centered":b=!b;case "before-centered":m(b?"ML":"MR",b?"MR":"ML");break;case "after":b=!b;case "before":m(b?"TL":"TR",b?"TR":"TL");m(b?"BL":"BR",b?"BR":"BL");break;case "below-alt":b=!b;case "below":m(b?"BL":
+"BR",b?"TL":"TR");m(b?"BR":"BL",b?"TR":"TL");break;case "above-alt":b=!b;case "above":m(b?"TL":"TR",b?"BL":"BR");m(b?"TR":"TL",b?"BR":"BL");break;default:m(a.aroundCorner,a.corner)}});c=b(c,I,i,{w:y,h:z});c.aroundNodePos=n;return c}}})},"dijit/BackgroundIframe":function(){define("require,./main,dojo/_base/config,dojo/dom-construct,dojo/dom-style,dojo/_base/lang,dojo/on,dojo/sniff,dojo/_base/window".split(","),function(f,k,h,j,e,c,i,b,g){var a=new function(){var a=[];this.pop=function(){var c;a.length?
+(c=a.pop(),c.style.display=""):(9>b("ie")?(c="<iframe src='"+(h.dojoBlankHtmlUrl||f.toUrl("dojo/resources/blank.html")||'javascript:""')+"' role='presentation' style='position: absolute; left: 0px; top: 0px;z-index: -1; filter:Alpha(Opacity=\"0\");'>",c=g.doc.createElement(c)):(c=j.create("iframe"),c.src='javascript:""',c.className="dijitBackgroundIframe",c.setAttribute("role","presentation"),e.set(c,"opacity",0.1)),c.tabIndex=-1);return c};this.push=function(b){b.style.display="none";a.push(b)}};
+k.BackgroundIframe=function(g){if(!g.id)throw Error("no id");if(b("ie")||b("mozilla")){var d=this.iframe=a.pop();g.appendChild(d);7>b("ie")||b("quirks")?(this.resize(g),this._conn=i(g,"resize",c.hitch(this,function(){this.resize(g)}))):e.set(d,{width:"100%",height:"100%"})}};c.extend(k.BackgroundIframe,{resize:function(a){this.iframe&&e.set(this.iframe,{width:a.offsetWidth+"px",height:a.offsetHeight+"px"})},destroy:function(){if(this._conn)this._conn.remove(),this._conn=null;this.iframe&&(a.push(this.iframe),
+delete this.iframe)}});return k.BackgroundIframe})},"dijit/_KeyNavContainer":function(){define("dojo/_base/kernel,./_Container,./_FocusMixin,dojo/_base/array,dojo/keys,dojo/_base/declare,dojo/_base/event,dojo/dom-attr,dojo/_base/lang".split(","),function(f,k,h,j,e,c,i,b,g){return c("dijit._KeyNavContainer",[h,k],{tabIndex:"0",connectKeyNavHandlers:function(a,b){var c=this._keyNavCodes={},f=g.hitch(this,"focusPrev"),i=g.hitch(this,"focusNext");j.forEach(a,function(a){c[a]=f});j.forEach(b,function(a){c[a]=
+i});c[e.HOME]=g.hitch(this,"focusFirstChild");c[e.END]=g.hitch(this,"focusLastChild");this.connect(this.domNode,"onkeypress","_onContainerKeypress");this.connect(this.domNode,"onfocus","_onContainerFocus")},startupKeyNavChildren:function(){f.deprecated("startupKeyNavChildren() call no longer needed","","2.0")},startup:function(){this.inherited(arguments);j.forEach(this.getChildren(),g.hitch(this,"_startupChild"))},addChild:function(a,b){this.inherited(arguments);this._startupChild(a)},focus:function(){this.focusFirstChild()},
focusFirstChild:function(){this.focusChild(this._getFirstFocusableChild())},focusLastChild:function(){this.focusChild(this._getLastFocusableChild())},focusNext:function(){this.focusChild(this._getNextFocusableChild(this.focusedChild,1))},focusPrev:function(){this.focusChild(this._getNextFocusableChild(this.focusedChild,-1),!0)},focusChild:function(a,b){a&&(this.focusedChild&&a!==this.focusedChild&&this._onChildBlur(this.focusedChild),a.set("tabIndex",this.tabIndex),a.focus(b?"end":"start"),this._set("focusedChild",
a))},_startupChild:function(a){a.set("tabIndex","-1");this.connect(a,"_onFocus",function(){a.set("tabIndex",this.tabIndex)});this.connect(a,"_onBlur",function(){a.set("tabIndex","-1")})},_onContainerFocus:function(a){a.target!==this.domNode||this.focusedChild||(this.focusFirstChild(),b.set(this.domNode,"tabIndex","-1"))},_onBlur:function(a){this.tabIndex&&b.set(this.domNode,"tabIndex",this.tabIndex);this.focusedChild=null;this.inherited(arguments)},_onContainerKeypress:function(a){if(!a.ctrlKey&&
-!a.altKey){var b=this._keyNavCodes[a.charOrCode];b&&(b(),h.stop(a))}},_onChildBlur:function(){},_getFirstFocusableChild:function(){return this._getNextFocusableChild(null,1)},_getLastFocusableChild:function(){return this._getNextFocusableChild(null,-1)},_getNextFocusableChild:function(a,b){a&&(a=this._getSiblingOfChild(a,b));for(var c=this.getChildren(),f=0;f<c.length;f++){a||(a=c[0<b?0:c.length-1]);if(a.isFocusable())return a;a=this._getSiblingOfChild(a,b)}return null}})})},"url:dijit/templates/MenuBar.html":'<div class="dijitMenuBar dijitMenuPassive" data-dojo-attach-point="containerNode" role="menubar" tabIndex="${tabIndex}" data-dojo-attach-event="onkeypress: _onKeyPress"></div>\n',
-"dijit/PopupMenuBarItem":function(){define(["dojo/_base/declare","./PopupMenuItem","./MenuBarItem"],function(e,j,i){return e("dijit.PopupMenuBarItem",[j,i._MenuBarItemMixin],{})})},"dijit/PopupMenuItem":function(){define("dojo/_base/declare,dojo/dom-style,dojo/query,./registry,./MenuItem,./hccss".split(","),function(e,j,i,l,c){return e("dijit.PopupMenuItem",c,{_fillContent:function(){if(this.srcNodeRef){var c=i("*",this.srcNodeRef);this.inherited(arguments,[c[0]]);this.dropDownContainer=this.srcNodeRef}},
-startup:function(){if(!this._started){this.inherited(arguments);if(!this.popup){var c=i("[widgetId]",this.dropDownContainer)[0];this.popup=l.byNode(c)}this.ownerDocumentBody.appendChild(this.popup.domNode);this.popup.startup();this.popup.domNode.style.display="none";this.arrowWrapper&&j.set(this.arrowWrapper,"visibility","");this.focusNode.setAttribute("aria-haspopup","true")}},destroyDescendants:function(c){this.popup&&(this.popup._destroyed||this.popup.destroyRecursive(c),delete this.popup);this.inherited(arguments)}})})},
-"dijit/MenuItem":function(){define("dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-class,dojo/_base/kernel,dojo/sniff,./_Widget,./_TemplatedMixin,./_Contained,./_CssStateMixin,dojo/text!./templates/MenuItem.html".split(","),function(e,j,i,l,c,g,h,b,f,a,k){return e("dijit.MenuItem",[h,b,f,a],{templateString:k,baseClass:"dijitMenuItem",label:"",_setLabelAttr:function(a){this.containerNode.innerHTML=a;this._set("label",a);"auto"===this.textDir&&this.applyTextDir(this.focusNode,this.label)},iconClass:"dijitNoIcon",
-_setIconClassAttr:{node:"iconNode",type:"class"},accelKey:"",disabled:!1,_fillContent:function(a){a&&!("label"in this.params)&&this.set("label",a.innerHTML)},buildRendering:function(){this.inherited(arguments);var a=this.id+"_text";i.set(this.containerNode,"id",a);this.accelKeyNode&&(i.set(this.accelKeyNode,"id",this.id+"_accel"),a+=" "+this.id+"_accel");this.domNode.setAttribute("aria-labelledby",a);j.setSelectable(this.domNode,!1)},onClick:function(){},focus:function(){try{8==g("ie")&&this.containerNode.focus(),
-this.focusNode.focus()}catch(a){}},_onFocus:function(){this._setSelected(!0);this.getParent()._onItemFocus(this);this.inherited(arguments)},_setSelected:function(a){l.toggle(this.domNode,"dijitMenuItemSelected",a)},setLabel:function(a){c.deprecated("dijit.MenuItem.setLabel() is deprecated. Use set('label', ...) instead.","","2.0");this.set("label",a)},setDisabled:function(a){c.deprecated("dijit.Menu.setDisabled() is deprecated. Use set('disabled', bool) instead.","","2.0");this.set("disabled",a)},
-_setDisabledAttr:function(a){this.focusNode.setAttribute("aria-disabled",a?"true":"false");this._set("disabled",a)},_setAccelKeyAttr:function(a){this.accelKeyNode.style.display=a?"":"none";this.accelKeyNode.innerHTML=a;i.set(this.containerNode,"colSpan",a?"1":"2");this._set("accelKey",a)},_setTextDirAttr:function(a){if(!this._created||this.textDir!=a)this._set("textDir",a),this.applyTextDir(this.focusNode,this.label)}})})},"url:dijit/templates/MenuItem.html":'<tr class="dijitReset dijitMenuItem" data-dojo-attach-point="focusNode" role="menuitem" tabIndex="-1">\n\t<td class="dijitReset dijitMenuItemIconCell" role="presentation">\n\t\t<img src="${_blankGif}" alt="" class="dijitIcon dijitMenuItemIcon" data-dojo-attach-point="iconNode"/>\n\t</td>\n\t<td class="dijitReset dijitMenuItemLabel" colspan="2" data-dojo-attach-point="containerNode"></td>\n\t<td class="dijitReset dijitMenuItemAccelKey" style="display: none" data-dojo-attach-point="accelKeyNode"></td>\n\t<td class="dijitReset dijitMenuArrowCell" role="presentation">\n\t\t<div data-dojo-attach-point="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',
-"dijit/MenuBarItem":function(){define(["dojo/_base/declare","./MenuItem","dojo/text!./templates/MenuBarItem.html"],function(e,j,i){i=e("dijit._MenuBarItemMixin",null,{templateString:i,_setIconClassAttr:null});e=e("dijit.MenuBarItem",[j,i],{});e._MenuBarItemMixin=i;return e})},"url:dijit/templates/MenuBarItem.html":'<div class="dijitReset dijitInline dijitMenuItem dijitMenuItemLabel" data-dojo-attach-point="focusNode"\n\t \trole="menuitem" tabIndex="-1">\n\t<span data-dojo-attach-point="containerNode"></span>\n</div>\n',
-"dijit/Menu":function(){define("require,dojo/_base/array,dojo/_base/declare,dojo/_base/event,dojo/dom,dojo/dom-attr,dojo/dom-geometry,dojo/dom-style,dojo/keys,dojo/_base/lang,dojo/on,dojo/sniff,dojo/_base/window,dojo/window,./popup,./DropDownMenu,dojo/ready".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o,r){d("dijit-legacy-requires")&&r(0,function(){e(["dijit/MenuItem","dijit/PopupMenuItem","dijit/CheckedMenuItem","dijit/MenuSeparator"])});return i("dijit.Menu",o,{constructor:function(){this._bindings=
-[]},targetNodeIds:[],selector:"",contextMenuForWindow:!1,leftClickToOpen:!1,refocus:!0,postCreate:function(){this.contextMenuForWindow?this.bindDomNode(this.ownerDocumentBody):j.forEach(this.targetNodeIds,this.bindDomNode,this);this.inherited(arguments)},_iframeContentWindow:function(a){return m.get(this._iframeContentDocument(a))||this._iframeContentDocument(a).__parent__||a.name&&p.doc.frames[a.name]||null},_iframeContentDocument:function(a){return a.contentDocument||a.contentWindow&&a.contentWindow.document||
-a.name&&p.doc.frames[a.name]&&p.doc.frames[a.name].document||null},bindDomNode:function(b){var b=c.byId(b,this.ownerDocument),d;if("iframe"==b.tagName.toLowerCase()){var e=b,m=this._iframeContentWindow(e);d=p.body(m.document)}else d=b==p.body(this.ownerDocument)?this.ownerDocument.documentElement:b;var h={node:b,iframe:e};g.set(b,"_dijitMenu"+this.id,this._bindings.push(h));var i=a.hitch(this,function(a){var b=this.selector,c=b?function(a){return k.selector(b,a)}:function(a){return a},d=this;return[k(a,
-c(this.leftClickToOpen?"click":"contextmenu"),function(a){l.stop(a);d._scheduleOpen(this,e,{x:a.pageX,y:a.pageY})}),k(a,c("keydown"),function(a){a.shiftKey&&a.keyCode==f.F10&&(l.stop(a),d._scheduleOpen(this,e))})]});h.connects=d?i(d):[];if(e)h.onloadHandler=a.hitch(this,function(){var a=this._iframeContentWindow(e);d=p.body(a.document);h.connects=i(d)}),e.addEventListener?e.addEventListener("load",h.onloadHandler,!1):e.attachEvent("onload",h.onloadHandler)},unBindDomNode:function(a){var b;try{b=c.byId(a,
-this.ownerDocument)}catch(d){return}a="_dijitMenu"+this.id;if(b&&g.has(b,a)){for(var f=g.get(b,a)-1,e=this._bindings[f],m;m=e.connects.pop();)m.remove();(m=e.iframe)&&(m.removeEventListener?m.removeEventListener("load",e.onloadHandler,!1):m.detachEvent("onload",e.onloadHandler));g.remove(b,a);delete this._bindings[f]}},_scheduleOpen:function(a,b,c){if(!this._openTimer)this._openTimer=this.defer(function(){delete this._openTimer;this._openMyself({target:a,iframe:b,coords:c})},1)},_openMyself:function(a){function f(){j.refocus&&
-o&&o.focus();n.close(j)}var g=a.target,e=a.iframe,a=a.coords;this.currentTarget=g;if(a){if(e){var g=h.position(e,!0),m=this._iframeContentWindow(e),m=h.docScroll(m.document),k=b.getComputedStyle(e),i=b.toPixelValue,l=(d("ie")&&d("quirks")?0:i(e,k.paddingLeft))+(d("ie")&&d("quirks")?i(e,k.borderLeftWidth):0),e=(d("ie")&&d("quirks")?0:i(e,k.paddingTop))+(d("ie")&&d("quirks")?i(e,k.borderTopWidth):0);a.x+=g.x+l-m.x;a.y+=g.y+e-m.y}}else a=h.position(g,!0),a.x+=10,a.y+=10;var j=this,e=this._focusManager.get("prevNode"),
-g=this._focusManager.get("curNode"),o=!g||c.isDescendant(g,this.domNode)?e:g;n.open({popup:this,x:a.x,y:a.y,onExecute:f,onCancel:f,orient:this.isLeftToRight()?"L":"R"});this.focus();this._onBlur=function(){this.inherited("_onBlur",arguments);n.close(this)}},destroy:function(){j.forEach(this._bindings,function(a){a&&this.unBindDomNode(a.node)},this);this.inherited(arguments)}})})},"dijit/DropDownMenu":function(){define("dojo/_base/declare,dojo/_base/event,dojo/keys,dojo/text!./templates/Menu.html,./_OnDijitClickMixin,./_MenuBase".split(","),
-function(e,j,i,l,c,g){return e("dijit.DropDownMenu",[g,c],{templateString:l,baseClass:"dijitMenu",postCreate:function(){this.inherited(arguments);var c=this.isLeftToRight();this._openSubMenuKey=c?i.RIGHT_ARROW:i.LEFT_ARROW;this._closeSubMenuKey=c?i.LEFT_ARROW:i.RIGHT_ARROW;this.connectKeyNavHandlers([i.UP_ARROW],[i.DOWN_ARROW])},_onKeyPress:function(c){if(!c.ctrlKey&&!c.altKey)switch(c.charOrCode){case this._openSubMenuKey:this._moveToPopup(c);j.stop(c);break;case this._closeSubMenuKey:if(this.parentMenu)if(this.parentMenu._isMenuBar)this.parentMenu.focusPrev();
-else this.onCancel(!1);else j.stop(c)}}})})},"url:dijit/templates/Menu.html":'<table class="dijit dijitMenu dijitMenuPassive dijitReset dijitMenuTable" role="menu" tabIndex="${tabIndex}"\n\t data-dojo-attach-event="onkeypress:_onKeyPress" cellspacing="0">\n\t<tbody class="dijitReset" data-dojo-attach-point="containerNode"></tbody>\n</table>\n',"dijit/Toolbar":function(){define("require,dojo/_base/declare,dojo/has,dojo/keys,dojo/ready,./_Widget,./_KeyNavContainer,./_TemplatedMixin".split(","),function(e,
-j,i,l,c,g,h,b){i("dijit-legacy-requires")&&c(0,function(){e(["dijit/ToolbarSeparator"])});return j("dijit.Toolbar",[g,b,h],{templateString:'<div class="dijit" role="toolbar" tabIndex="${tabIndex}" data-dojo-attach-point="containerNode"></div>',baseClass:"dijitToolbar",postCreate:function(){this.inherited(arguments);this.connectKeyNavHandlers(this.isLeftToRight()?[l.LEFT_ARROW]:[l.RIGHT_ARROW],this.isLeftToRight()?[l.RIGHT_ARROW]:[l.LEFT_ARROW])}})})},"dijit/Dialog":function(){define("require,dojo/_base/array,dojo/_base/connect,dojo/_base/declare,dojo/_base/Deferred,dojo/dom,dojo/dom-class,dojo/dom-geometry,dojo/dom-style,dojo/_base/event,dojo/_base/fx,dojo/i18n,dojo/keys,dojo/_base/lang,dojo/on,dojo/ready,dojo/sniff,dojo/window,dojo/dnd/Moveable,dojo/dnd/TimedMoveable,./focus,./_base/manager,./_Widget,./_TemplatedMixin,./_CssStateMixin,./form/_FormMixin,./_DialogMixin,./DialogUnderlay,./layout/ContentPane,dojo/text!./templates/Dialog.html,./main,dojo/i18n!./nls/common".split(","),
-function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o,r,q,v,s,u,t,y,z,I,J,N,E,S,Q,B){var t=l("dijit._DialogBase",[z,J,N,I],{templateString:Q,baseClass:"dijitDialog",cssStateNodes:{closeButtonNode:"dijitDialogCloseIcon"},_setTitleAttr:[{node:"titleNode",type:"innerHTML"},{node:"titleBar",type:"attribute"}],open:!1,duration:t.defaultDuration,refocus:!0,autofocus:!0,_firstFocusItem:null,_lastFocusItem:null,doLayout:!1,draggable:!0,_setDraggableAttr:function(a){this._set("draggable",a)},"aria-describedby":"",maxRatio:0.9,
-postMixInProperties:function(){var a=d.getLocalization("dijit","common");m.mixin(this,a);this.inherited(arguments)},postCreate:function(){f.set(this.domNode,{display:"none",position:"absolute"});this.ownerDocumentBody.appendChild(this.domNode);this.inherited(arguments);this.connect(this,"onExecute","hide");this.connect(this,"onCancel","hide");this._modalconnects=[]},onLoad:function(){this._position();this.autofocus&&w.isTop(this)&&(this._getFocusItems(this.domNode),u.focus(this._firstFocusItem));
-this.inherited(arguments)},_endDrag:function(){var a=b.position(this.domNode),c=q.getBox(this.ownerDocument);a.y=Math.min(Math.max(a.y,0),c.h-a.h);a.x=Math.min(Math.max(a.x,0),c.w-a.w);this._relativePosition=a;this._position()},_setup:function(){var a=this.domNode;this.titleBar&&this.draggable?(this._moveable=new (6==r("ie")?s:v)(a,{handle:this.titleBar}),this.connect(this._moveable,"onMoveStop","_endDrag")):h.add(a,"dijitDialogFixed");this.underlayAttrs={dialogId:this.id,"class":j.map(this["class"].split(/\s/),
-function(a){return a+"_underlay"}).join(" "),ownerDocument:this.ownerDocument}},_size:function(){this._checkIfSingleChild();if(this._singleChild){if("undefined"!=typeof this._singleChildOriginalStyle)this._singleChild.domNode.style.cssText=this._singleChildOriginalStyle,delete this._singleChildOriginalStyle}else f.set(this.containerNode,{width:"auto",height:"auto"});var a=b.position(this.domNode),c=q.getBox(this.ownerDocument);c.w*=this.maxRatio;c.h*=this.maxRatio;if(a.w>=c.w||a.h>=c.h){var d=b.position(this.containerNode),
-g=Math.min(a.w,c.w)-(a.w-d.w),a=Math.min(a.h,c.h)-(a.h-d.h);if(this._singleChild&&this._singleChild.resize){if("undefined"==typeof this._singleChildOriginalStyle)this._singleChildOriginalStyle=this._singleChild.domNode.style.cssText;this._singleChild.resize({w:g,h:a})}else f.set(this.containerNode,{width:g+"px",height:a+"px",overflow:"auto",position:"relative"})}else this._singleChild&&this._singleChild.resize&&this._singleChild.resize()},_position:function(){if(!h.contains(this.ownerDocumentBody,
-"dojoMove")){var a=this.domNode,c=q.getBox(this.ownerDocument),d=this._relativePosition,g=d?null:b.position(a);f.set(a,{left:Math.floor(c.l+(d?d.x:(c.w-g.w)/2))+"px",top:Math.floor(c.t+(d?d.y:(c.h-g.h)/2))+"px"})}},_onKey:function(b){if(b.charOrCode){var c=b.target;b.charOrCode===p.TAB&&this._getFocusItems(this.domNode);var d=this._firstFocusItem==this._lastFocusItem;if(c==this._firstFocusItem&&b.shiftKey&&b.charOrCode===p.TAB)d||u.focus(this._lastFocusItem),a.stop(b);else if(c==this._lastFocusItem&&
-b.charOrCode===p.TAB&&!b.shiftKey)d||u.focus(this._firstFocusItem),a.stop(b);else{for(;c;){if(c==this.domNode||h.contains(c,"dijitPopup"))if(b.charOrCode==p.ESCAPE)this.onCancel();else return;c=c.parentNode}if(b.charOrCode!==p.TAB)a.stop(b);else if(!r("opera"))try{this._firstFocusItem.focus()}catch(f){}}}},show:function(){if(!this.open){this._started||this.startup();if(!this._alreadyInitialized)this._setup(),this._alreadyInitialized=!0;this._fadeOutDeferred&&this._fadeOutDeferred.cancel();var a=q.get(this.ownerDocument);
-this._modalconnects.push(n(a,"scroll",m.hitch(this,"resize")));this._modalconnects.push(n(this.domNode,i._keypress,m.hitch(this,"_onKey")));f.set(this.domNode,{opacity:0,display:""});this._set("open",!0);this._onShow();this._size();this._position();var b;this._fadeInDeferred=new c(m.hitch(this,function(){b.stop();delete this._fadeInDeferred}));b=k.fadeIn({node:this.domNode,duration:this.duration,beforeBegin:m.hitch(this,function(){w.show(this,this.underlayAttrs)}),onEnd:m.hitch(this,function(){this.autofocus&&
-w.isTop(this)&&(this._getFocusItems(this.domNode),u.focus(this._firstFocusItem));this._fadeInDeferred.resolve(!0);delete this._fadeInDeferred})}).play();return this._fadeInDeferred}},hide:function(){if(this._alreadyInitialized&&this.open){this._fadeInDeferred&&this._fadeInDeferred.cancel();var a;this._fadeOutDeferred=new c(m.hitch(this,function(){a.stop();delete this._fadeOutDeferred}));this._fadeOutDeferred.then(m.hitch(this,"onHide"));a=k.fadeOut({node:this.domNode,duration:this.duration,onEnd:m.hitch(this,
+!a.altKey){var b=this._keyNavCodes[a.charOrCode];b&&(b(),i.stop(a))}},_onChildBlur:function(){},_getFirstFocusableChild:function(){return this._getNextFocusableChild(null,1)},_getLastFocusableChild:function(){return this._getNextFocusableChild(null,-1)},_getNextFocusableChild:function(a,b){a&&(a=this._getSiblingOfChild(a,b));for(var c=this.getChildren(),g=0;g<c.length;g++){a||(a=c[0<b?0:c.length-1]);if(a.isFocusable())return a;a=this._getSiblingOfChild(a,b)}return null}})})},"url:dijit/templates/MenuBar.html":'<div class="dijitMenuBar dijitMenuPassive" data-dojo-attach-point="containerNode" role="menubar" tabIndex="${tabIndex}" data-dojo-attach-event="onkeypress: _onKeyPress"></div>\n',
+"dijit/PopupMenuBarItem":function(){define(["dojo/_base/declare","./PopupMenuItem","./MenuBarItem"],function(f,k,h){return f("dijit.PopupMenuBarItem",[k,h._MenuBarItemMixin],{})})},"dijit/PopupMenuItem":function(){define("dojo/_base/declare,dojo/dom-style,dojo/query,./registry,./MenuItem,./hccss".split(","),function(f,k,h,j,e){return f("dijit.PopupMenuItem",e,{_fillContent:function(){if(this.srcNodeRef){var c=h("*",this.srcNodeRef);this.inherited(arguments,[c[0]]);this.dropDownContainer=this.srcNodeRef}},
+startup:function(){if(!this._started){this.inherited(arguments);if(!this.popup){var c=h("[widgetId]",this.dropDownContainer)[0];this.popup=j.byNode(c)}this.ownerDocumentBody.appendChild(this.popup.domNode);this.popup.startup();this.popup.domNode.style.display="none";this.arrowWrapper&&k.set(this.arrowWrapper,"visibility","");this.focusNode.setAttribute("aria-haspopup","true")}},destroyDescendants:function(c){this.popup&&(this.popup._destroyed||this.popup.destroyRecursive(c),delete this.popup);this.inherited(arguments)}})})},
+"dijit/MenuItem":function(){define("dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-class,dojo/_base/kernel,dojo/sniff,./_Widget,./_TemplatedMixin,./_Contained,./_CssStateMixin,dojo/text!./templates/MenuItem.html".split(","),function(f,k,h,j,e,c,i,b,g,a,l){return f("dijit.MenuItem",[i,b,g,a],{templateString:l,baseClass:"dijitMenuItem",label:"",_setLabelAttr:function(a){this.containerNode.innerHTML=a;this._set("label",a);"auto"===this.textDir&&this.applyTextDir(this.focusNode,this.label)},iconClass:"dijitNoIcon",
+_setIconClassAttr:{node:"iconNode",type:"class"},accelKey:"",disabled:!1,_fillContent:function(a){a&&!("label"in this.params)&&this.set("label",a.innerHTML)},buildRendering:function(){this.inherited(arguments);var a=this.id+"_text";h.set(this.containerNode,"id",a);this.accelKeyNode&&(h.set(this.accelKeyNode,"id",this.id+"_accel"),a+=" "+this.id+"_accel");this.domNode.setAttribute("aria-labelledby",a);k.setSelectable(this.domNode,!1)},onClick:function(){},focus:function(){try{8==c("ie")&&this.containerNode.focus(),
+this.focusNode.focus()}catch(a){}},_onFocus:function(){this._setSelected(!0);this.getParent()._onItemFocus(this);this.inherited(arguments)},_setSelected:function(a){j.toggle(this.domNode,"dijitMenuItemSelected",a)},setLabel:function(a){e.deprecated("dijit.MenuItem.setLabel() is deprecated. Use set('label', ...) instead.","","2.0");this.set("label",a)},setDisabled:function(a){e.deprecated("dijit.Menu.setDisabled() is deprecated. Use set('disabled', bool) instead.","","2.0");this.set("disabled",a)},
+_setDisabledAttr:function(a){this.focusNode.setAttribute("aria-disabled",a?"true":"false");this._set("disabled",a)},_setAccelKeyAttr:function(a){this.accelKeyNode.style.display=a?"":"none";this.accelKeyNode.innerHTML=a;h.set(this.containerNode,"colSpan",a?"1":"2");this._set("accelKey",a)},_setTextDirAttr:function(a){if(!this._created||this.textDir!=a)this._set("textDir",a),this.applyTextDir(this.focusNode,this.label)}})})},"url:dijit/templates/MenuItem.html":'<tr class="dijitReset dijitMenuItem" data-dojo-attach-point="focusNode" role="menuitem" tabIndex="-1">\n\t<td class="dijitReset dijitMenuItemIconCell" role="presentation">\n\t\t<img src="${_blankGif}" alt="" class="dijitIcon dijitMenuItemIcon" data-dojo-attach-point="iconNode"/>\n\t</td>\n\t<td class="dijitReset dijitMenuItemLabel" colspan="2" data-dojo-attach-point="containerNode"></td>\n\t<td class="dijitReset dijitMenuItemAccelKey" style="display: none" data-dojo-attach-point="accelKeyNode"></td>\n\t<td class="dijitReset dijitMenuArrowCell" role="presentation">\n\t\t<div data-dojo-attach-point="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',
+"dijit/MenuBarItem":function(){define(["dojo/_base/declare","./MenuItem","dojo/text!./templates/MenuBarItem.html"],function(f,k,h){h=f("dijit._MenuBarItemMixin",null,{templateString:h,_setIconClassAttr:null});f=f("dijit.MenuBarItem",[k,h],{});f._MenuBarItemMixin=h;return f})},"url:dijit/templates/MenuBarItem.html":'<div class="dijitReset dijitInline dijitMenuItem dijitMenuItemLabel" data-dojo-attach-point="focusNode"\n\t \trole="menuitem" tabIndex="-1">\n\t<span data-dojo-attach-point="containerNode"></span>\n</div>\n',
+"dijit/Menu":function(){define("require,dojo/_base/array,dojo/_base/declare,dojo/_base/event,dojo/dom,dojo/dom-attr,dojo/dom-geometry,dojo/dom-style,dojo/keys,dojo/_base/lang,dojo/on,dojo/sniff,dojo/_base/window,dojo/window,./popup,./DropDownMenu,dojo/ready".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o,r){d("dijit-legacy-requires")&&r(0,function(){f(["dijit/MenuItem","dijit/PopupMenuItem","dijit/CheckedMenuItem","dijit/MenuSeparator"])});return h("dijit.Menu",o,{constructor:function(){this._bindings=
+[]},targetNodeIds:[],selector:"",contextMenuForWindow:!1,leftClickToOpen:!1,refocus:!0,postCreate:function(){this.contextMenuForWindow?this.bindDomNode(this.ownerDocumentBody):k.forEach(this.targetNodeIds,this.bindDomNode,this);this.inherited(arguments)},_iframeContentWindow:function(a){return m.get(this._iframeContentDocument(a))||this._iframeContentDocument(a).__parent__||a.name&&p.doc.frames[a.name]||null},_iframeContentDocument:function(a){return a.contentDocument||a.contentWindow&&a.contentWindow.document||
+a.name&&p.doc.frames[a.name]&&p.doc.frames[a.name].document||null},bindDomNode:function(b){var b=e.byId(b,this.ownerDocument),d;if("iframe"==b.tagName.toLowerCase()){var f=b,i=this._iframeContentWindow(f);d=p.body(i.document)}else d=b==p.body(this.ownerDocument)?this.ownerDocument.documentElement:b;var h={node:b,iframe:f};c.set(b,"_dijitMenu"+this.id,this._bindings.push(h));var m=a.hitch(this,function(a){var b=this.selector,c=b?function(a){return l.selector(b,a)}:function(a){return a},d=this;return[l(a,
+c(this.leftClickToOpen?"click":"contextmenu"),function(a){j.stop(a);d._scheduleOpen(this,f,{x:a.pageX,y:a.pageY})}),l(a,c("keydown"),function(a){a.shiftKey&&a.keyCode==g.F10&&(j.stop(a),d._scheduleOpen(this,f))})]});h.connects=d?m(d):[];if(f)h.onloadHandler=a.hitch(this,function(){var a=this._iframeContentWindow(f);d=p.body(a.document);h.connects=m(d)}),f.addEventListener?f.addEventListener("load",h.onloadHandler,!1):f.attachEvent("onload",h.onloadHandler)},unBindDomNode:function(a){var b;try{b=e.byId(a,
+this.ownerDocument)}catch(d){return}a="_dijitMenu"+this.id;if(b&&c.has(b,a)){for(var g=c.get(b,a)-1,f=this._bindings[g],i;i=f.connects.pop();)i.remove();(i=f.iframe)&&(i.removeEventListener?i.removeEventListener("load",f.onloadHandler,!1):i.detachEvent("onload",f.onloadHandler));c.remove(b,a);delete this._bindings[g]}},_scheduleOpen:function(a,b,c){if(!this._openTimer)this._openTimer=this.defer(function(){delete this._openTimer;this._openMyself({target:a,iframe:b,coords:c})},1)},_openMyself:function(a){function c(){k.refocus&&
+o&&o.focus();n.close(k)}var g=a.target,f=a.iframe,a=a.coords;this.currentTarget=g;if(a){if(f){var g=i.position(f,!0),h=this._iframeContentWindow(f),h=i.docScroll(h.document),l=b.getComputedStyle(f),j=b.toPixelValue,m=(d("ie")&&d("quirks")?0:j(f,l.paddingLeft))+(d("ie")&&d("quirks")?j(f,l.borderLeftWidth):0),f=(d("ie")&&d("quirks")?0:j(f,l.paddingTop))+(d("ie")&&d("quirks")?j(f,l.borderTopWidth):0);a.x+=g.x+m-h.x;a.y+=g.y+f-h.y}}else a=i.position(g,!0),a.x+=10,a.y+=10;var k=this,f=this._focusManager.get("prevNode"),
+g=this._focusManager.get("curNode"),o=!g||e.isDescendant(g,this.domNode)?f:g;n.open({popup:this,x:a.x,y:a.y,onExecute:c,onCancel:c,orient:this.isLeftToRight()?"L":"R"});this.focus();this._onBlur=function(){this.inherited("_onBlur",arguments);n.close(this)}},destroy:function(){k.forEach(this._bindings,function(a){a&&this.unBindDomNode(a.node)},this);this.inherited(arguments)}})})},"dijit/DropDownMenu":function(){define("dojo/_base/declare,dojo/_base/event,dojo/keys,dojo/text!./templates/Menu.html,./_OnDijitClickMixin,./_MenuBase".split(","),
+function(f,k,h,j,e,c){return f("dijit.DropDownMenu",[c,e],{templateString:j,baseClass:"dijitMenu",postCreate:function(){this.inherited(arguments);var c=this.isLeftToRight();this._openSubMenuKey=c?h.RIGHT_ARROW:h.LEFT_ARROW;this._closeSubMenuKey=c?h.LEFT_ARROW:h.RIGHT_ARROW;this.connectKeyNavHandlers([h.UP_ARROW],[h.DOWN_ARROW])},_onKeyPress:function(c){if(!c.ctrlKey&&!c.altKey)switch(c.charOrCode){case this._openSubMenuKey:this._moveToPopup(c);k.stop(c);break;case this._closeSubMenuKey:if(this.parentMenu)if(this.parentMenu._isMenuBar)this.parentMenu.focusPrev();
+else this.onCancel(!1);else k.stop(c)}}})})},"url:dijit/templates/Menu.html":'<table class="dijit dijitMenu dijitMenuPassive dijitReset dijitMenuTable" role="menu" tabIndex="${tabIndex}"\n\t data-dojo-attach-event="onkeypress:_onKeyPress" cellspacing="0">\n\t<tbody class="dijitReset" data-dojo-attach-point="containerNode"></tbody>\n</table>\n',"dijit/Toolbar":function(){define("require,dojo/_base/declare,dojo/has,dojo/keys,dojo/ready,./_Widget,./_KeyNavContainer,./_TemplatedMixin".split(","),function(f,
+k,h,j,e,c,i,b){h("dijit-legacy-requires")&&e(0,function(){f(["dijit/ToolbarSeparator"])});return k("dijit.Toolbar",[c,b,i],{templateString:'<div class="dijit" role="toolbar" tabIndex="${tabIndex}" data-dojo-attach-point="containerNode"></div>',baseClass:"dijitToolbar",postCreate:function(){this.inherited(arguments);this.connectKeyNavHandlers(this.isLeftToRight()?[j.LEFT_ARROW]:[j.RIGHT_ARROW],this.isLeftToRight()?[j.RIGHT_ARROW]:[j.LEFT_ARROW])}})})},"dijit/Dialog":function(){define("require,dojo/_base/array,dojo/_base/connect,dojo/_base/declare,dojo/_base/Deferred,dojo/dom,dojo/dom-class,dojo/dom-geometry,dojo/dom-style,dojo/_base/event,dojo/_base/fx,dojo/i18n,dojo/keys,dojo/_base/lang,dojo/on,dojo/ready,dojo/sniff,dojo/window,dojo/dnd/Moveable,dojo/dnd/TimedMoveable,./focus,./_base/manager,./_Widget,./_TemplatedMixin,./_CssStateMixin,./form/_FormMixin,./_DialogMixin,./DialogUnderlay,./layout/ContentPane,dojo/text!./templates/Dialog.html,./main,dojo/i18n!./nls/common".split(","),
+function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o,r,q,v,s,t,u,y,z,I,J,N,E,S,Q,B){var u=j("dijit._DialogBase",[z,J,N,I],{templateString:Q,baseClass:"dijitDialog",cssStateNodes:{closeButtonNode:"dijitDialogCloseIcon"},_setTitleAttr:[{node:"titleNode",type:"innerHTML"},{node:"titleBar",type:"attribute"}],open:!1,duration:u.defaultDuration,refocus:!0,autofocus:!0,_firstFocusItem:null,_lastFocusItem:null,doLayout:!1,draggable:!0,_setDraggableAttr:function(a){this._set("draggable",a)},"aria-describedby":"",maxRatio:0.9,
+postMixInProperties:function(){var a=d.getLocalization("dijit","common");m.mixin(this,a);this.inherited(arguments)},postCreate:function(){g.set(this.domNode,{display:"none",position:"absolute"});this.ownerDocumentBody.appendChild(this.domNode);this.inherited(arguments);this.connect(this,"onExecute","hide");this.connect(this,"onCancel","hide");this._modalconnects=[]},onLoad:function(){this._position();this.autofocus&&w.isTop(this)&&(this._getFocusItems(this.domNode),t.focus(this._firstFocusItem));
+this.inherited(arguments)},_endDrag:function(){var a=b.position(this.domNode),c=q.getBox(this.ownerDocument);a.y=Math.min(Math.max(a.y,0),c.h-a.h);a.x=Math.min(Math.max(a.x,0),c.w-a.w);this._relativePosition=a;this._position()},_setup:function(){var a=this.domNode;this.titleBar&&this.draggable?(this._moveable=new (6==r("ie")?s:v)(a,{handle:this.titleBar}),this.connect(this._moveable,"onMoveStop","_endDrag")):i.add(a,"dijitDialogFixed");this.underlayAttrs={dialogId:this.id,"class":k.map(this["class"].split(/\s/),
+function(a){return a+"_underlay"}).join(" "),ownerDocument:this.ownerDocument}},_size:function(){this._checkIfSingleChild();if(this._singleChild){if("undefined"!=typeof this._singleChildOriginalStyle)this._singleChild.domNode.style.cssText=this._singleChildOriginalStyle,delete this._singleChildOriginalStyle}else g.set(this.containerNode,{width:"auto",height:"auto"});var a=b.position(this.domNode),c=q.getBox(this.ownerDocument);c.w*=this.maxRatio;c.h*=this.maxRatio;if(a.w>=c.w||a.h>=c.h){var d=b.position(this.containerNode),
+e=Math.min(a.w,c.w)-(a.w-d.w),a=Math.min(a.h,c.h)-(a.h-d.h);if(this._singleChild&&this._singleChild.resize){if("undefined"==typeof this._singleChildOriginalStyle)this._singleChildOriginalStyle=this._singleChild.domNode.style.cssText;this._singleChild.resize({w:e,h:a})}else g.set(this.containerNode,{width:e+"px",height:a+"px",overflow:"auto",position:"relative"})}else this._singleChild&&this._singleChild.resize&&this._singleChild.resize()},_position:function(){if(!i.contains(this.ownerDocumentBody,
+"dojoMove")){var a=this.domNode,c=q.getBox(this.ownerDocument),d=this._relativePosition,e=d?null:b.position(a);g.set(a,{left:Math.floor(c.l+(d?d.x:(c.w-e.w)/2))+"px",top:Math.floor(c.t+(d?d.y:(c.h-e.h)/2))+"px"})}},_onKey:function(b){if(b.charOrCode){var c=b.target;b.charOrCode===p.TAB&&this._getFocusItems(this.domNode);var d=this._firstFocusItem==this._lastFocusItem;if(c==this._firstFocusItem&&b.shiftKey&&b.charOrCode===p.TAB)d||t.focus(this._lastFocusItem),a.stop(b);else if(c==this._lastFocusItem&&
+b.charOrCode===p.TAB&&!b.shiftKey)d||t.focus(this._firstFocusItem),a.stop(b);else{for(;c;){if(c==this.domNode||i.contains(c,"dijitPopup"))if(b.charOrCode==p.ESCAPE)this.onCancel();else return;c=c.parentNode}if(b.charOrCode!==p.TAB)a.stop(b);else if(!r("opera"))try{this._firstFocusItem.focus()}catch(g){}}}},show:function(){if(!this.open){this._started||this.startup();if(!this._alreadyInitialized)this._setup(),this._alreadyInitialized=!0;this._fadeOutDeferred&&this._fadeOutDeferred.cancel();var a=q.get(this.ownerDocument);
+this._modalconnects.push(n(a,"scroll",m.hitch(this,"resize")));this._modalconnects.push(n(this.domNode,h._keypress,m.hitch(this,"_onKey")));g.set(this.domNode,{opacity:0,display:""});this._set("open",!0);this._onShow();this._size();this._position();var b;this._fadeInDeferred=new e(m.hitch(this,function(){b.stop();delete this._fadeInDeferred}));b=l.fadeIn({node:this.domNode,duration:this.duration,beforeBegin:m.hitch(this,function(){w.show(this,this.underlayAttrs)}),onEnd:m.hitch(this,function(){this.autofocus&&
+w.isTop(this)&&(this._getFocusItems(this.domNode),t.focus(this._firstFocusItem));this._fadeInDeferred.resolve(!0);delete this._fadeInDeferred})}).play();return this._fadeInDeferred}},hide:function(){if(this._alreadyInitialized&&this.open){this._fadeInDeferred&&this._fadeInDeferred.cancel();var a;this._fadeOutDeferred=new e(m.hitch(this,function(){a.stop();delete this._fadeOutDeferred}));this._fadeOutDeferred.then(m.hitch(this,"onHide"));a=l.fadeOut({node:this.domNode,duration:this.duration,onEnd:m.hitch(this,
function(){this.domNode.style.display="none";w.hide(this);this._fadeOutDeferred.resolve(!0);delete this._fadeOutDeferred})}).play();if(this._scrollConnected)this._scrollConnected=!1;for(var b;b=this._modalconnects.pop();)b.remove();this._relativePosition&&delete this._relativePosition;this._set("open",!1);return this._fadeOutDeferred}},resize:function(){"none"!=this.domNode.style.display&&(E._singleton&&E._singleton.layout(),this._position(),this._size())},destroy:function(){this._fadeInDeferred&&
-this._fadeInDeferred.cancel();this._fadeOutDeferred&&this._fadeOutDeferred.cancel();this._moveable&&this._moveable.destroy();for(var a;a=this._modalconnects.pop();)a.remove();w.hide(this);this.inherited(arguments)}}),A=l("dijit.Dialog",[S,t],{});A._DialogBase=t;var w=A._DialogLevelManager={_beginZIndex:950,show:function(a,b){x[x.length-1].focus=u.curNode;var c=E._singleton;!c||c._destroyed?c=B._underlay=E._singleton=new E(b):c.set(a.underlayAttrs);var d=x[x.length-1].dialog?x[x.length-1].zIndex+2:
-A._DialogLevelManager._beginZIndex;1==x.length&&c.show();f.set(E._singleton.domNode,"zIndex",d-1);f.set(a.domNode,"zIndex",d);x.push({dialog:a,underlayAttrs:b,zIndex:d})},hide:function(a){if(x[x.length-1].dialog==a){x.pop();var b=x[x.length-1];E._singleton._destroyed||(1==x.length?E._singleton.hide():(f.set(E._singleton.domNode,"zIndex",b.zIndex-1),E._singleton.set(b.underlayAttrs)));if(a.refocus){a=b.focus;if(b.dialog&&(!a||!g.isDescendant(a,b.dialog.domNode)))b.dialog._getFocusItems(b.dialog.domNode),
-a=b.dialog._firstFocusItem;if(a)try{a.focus()}catch(c){}}}else b=j.indexOf(j.map(x,function(a){return a.dialog}),a),-1!=b&&x.splice(b,1)},isTop:function(a){return x[x.length-1].dialog==a}},x=A._dialogStack=[{dialog:null,focus:null,underlayAttrs:null}];r("dijit-legacy-requires")&&o(0,function(){e(["dijit/TooltipDialog"])});return A})},"dojo/dnd/Moveable":function(){define("../_base/array,../_base/declare,../_base/event,../_base/lang,../dom,../dom-class,../Evented,../on,../topic,../touch,./common,./Mover,../_base/window".split(","),
-function(e,j,i,l,c,g,h,b,f,a,k,d,p){return j("dojo.dnd.Moveable",[h],{handle:"",delay:0,skip:!1,constructor:function(f,g){this.node=c.byId(f);g||(g={});this.handle=g.handle?c.byId(g.handle):null;if(!this.handle)this.handle=this.node;this.delay=0<g.delay?g.delay:0;this.skip=g.skip;this.mover=g.mover?g.mover:d;this.events=[b(this.handle,a.press,l.hitch(this,"onMouseDown")),b(this.handle,"dragstart",l.hitch(this,"onSelectStart")),b(this.handle,"selectstart",l.hitch(this,"onSelectStart"))]},markupFactory:function(a,
-b,c){return new c(b,a)},destroy:function(){e.forEach(this.events,function(a){a.remove()});this.events=this.node=this.handle=null},onMouseDown:function(c){if(!this.skip||!k.isFormElement(c)){if(this.delay)this.events.push(b(this.handle,a.move,l.hitch(this,"onMouseMove")),b(this.handle,a.release,l.hitch(this,"onMouseUp"))),this._lastX=c.pageX,this._lastY=c.pageY;else this.onDragDetected(c);i.stop(c)}},onMouseMove:function(a){if(Math.abs(a.pageX-this._lastX)>this.delay||Math.abs(a.pageY-this._lastY)>
-this.delay)this.onMouseUp(a),this.onDragDetected(a);i.stop(a)},onMouseUp:function(a){for(var b=0;2>b;++b)this.events.pop().remove();i.stop(a)},onSelectStart:function(a){(!this.skip||!k.isFormElement(a))&&i.stop(a)},onDragDetected:function(a){new this.mover(this.node,a,this)},onMoveStart:function(a){f.publish("/dnd/move/start",a);g.add(p.body(),"dojoMove");g.add(this.node,"dojoMoveItem")},onMoveStop:function(a){f.publish("/dnd/move/stop",a);g.remove(p.body(),"dojoMove");g.remove(this.node,"dojoMoveItem")},
-onFirstMove:function(){},onMove:function(a,b){this.onMoving(a,b);var c=a.node.style;c.left=b.l+"px";c.top=b.t+"px";this.onMoved(a,b)},onMoving:function(){},onMoved:function(){}})})},"dojo/dnd/common":function(){define(["../_base/connect","../_base/kernel","../_base/lang","../dom"],function(e,j,i,l){var c={};c.getCopyKeyState=e.isCopyKey;c._uniqueId=0;c.getUniqueId=function(){var g;do g=j._scopeName+"Unique"+ ++c._uniqueId;while(l.byId(g));return g};c._empty={};c.isFormElement=function(c){c=c.target;
-if(3==c.nodeType)c=c.parentNode;return 0<=" button textarea input select option ".indexOf(" "+c.tagName.toLowerCase()+" ")};i.mixin(i.getObject("dojo.dnd",!0),c);return c})},"dojo/dnd/Mover":function(){define("../_base/array,../_base/declare,../_base/event,../_base/lang,../sniff,../_base/window,../dom,../dom-geometry,../dom-style,../Evented,../on,../touch,./common,./autoscroll".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p,m){return j("dojo.dnd.Mover",[a],{constructor:function(a,b,c){this.node=h.byId(a);
-this.marginBox={l:b.pageX,t:b.pageY};this.mouseButton=b.button;b=this.host=c;a=a.ownerDocument;this.events=[k(a,d.move,l.hitch(this,"onFirstMove")),k(a,d.move,l.hitch(this,"onMouseMove")),k(a,d.release,l.hitch(this,"onMouseUp")),k(a,"dragstart",i.stop),k(a.body,"selectstart",i.stop)];m.autoScrollStart(a);if(b&&b.onMoveStart)b.onMoveStart(this)},onMouseMove:function(a){m.autoScroll(a);var b=this.marginBox;this.host.onMove(this,{l:b.l+a.pageX,t:b.t+a.pageY},a);i.stop(a)},onMouseUp:function(a){(c("webkit")&&
-c("mac")&&2==this.mouseButton?0==a.button:this.mouseButton==a.button)&&this.destroy();i.stop(a)},onFirstMove:function(a){var c=this.node.style,d,e=this.host;switch(c.position){case "relative":case "absolute":d=Math.round(parseFloat(c.left))||0;c=Math.round(parseFloat(c.top))||0;break;default:c.position="absolute";c=b.getMarginBox(this.node);d=g.doc.body;var m=f.getComputedStyle(d),h=b.getMarginBox(d,m),m=b.getContentBox(d,m);d=c.l-(m.l-h.l);c=c.t-(m.t-h.t)}this.marginBox.l=d-this.marginBox.l;this.marginBox.t=
-c-this.marginBox.t;if(e&&e.onFirstMove)e.onFirstMove(this,a);this.events.shift().remove()},destroy:function(){e.forEach(this.events,function(a){a.remove()});var a=this.host;if(a&&a.onMoveStop)a.onMoveStop(this);this.events=this.node=this.host=null}})})},"dojo/dnd/autoscroll":function(){define("../_base/lang,../sniff,../_base/window,../dom-geometry,../dom-style,../window".split(","),function(e,j,i,l,c,g){var h={};e.setObject("dojo.dnd.autoscroll",h);h.getViewport=g.getBox;h.V_TRIGGER_AUTOSCROLL=32;
-h.H_TRIGGER_AUTOSCROLL=32;h.V_AUTOSCROLL_VALUE=16;h.H_AUTOSCROLL_VALUE=16;var b,f=i.doc,a=Infinity,k=Infinity;h.autoScrollStart=function(c){f=c;b=g.getBox(f);c=i.body(f).parentNode;a=Math.max(c.scrollHeight-b.h,0);k=Math.max(c.scrollWidth-b.w,0)};h.autoScroll=function(c){var e=b||g.getBox(f),m=i.body(f).parentNode,l=0,j=0;c.clientX<h.H_TRIGGER_AUTOSCROLL?l=-h.H_AUTOSCROLL_VALUE:c.clientX>e.w-h.H_TRIGGER_AUTOSCROLL&&(l=Math.min(h.H_AUTOSCROLL_VALUE,k-m.scrollLeft));c.clientY<h.V_TRIGGER_AUTOSCROLL?
-j=-h.V_AUTOSCROLL_VALUE:c.clientY>e.h-h.V_TRIGGER_AUTOSCROLL&&(j=Math.min(h.V_AUTOSCROLL_VALUE,a-m.scrollTop));window.scrollBy(l,j)};h._validNodes={div:1,p:1,td:1};h._validOverflow={auto:1,scroll:1};h.autoScrollNodes=function(a){for(var b,f,g,e,k,q,v=0,s=0,u=a.target;u;){if(1==u.nodeType&&u.tagName.toLowerCase()in h._validNodes){g=c.getComputedStyle(u);e=g.overflow.toLowerCase()in h._validOverflow;k=g.overflowX.toLowerCase()in h._validOverflow;q=g.overflowY.toLowerCase()in h._validOverflow;if(e||
-k||q)b=l.getContentBox(u,g),f=l.position(u,!0);if(e||k){g=Math.min(h.H_TRIGGER_AUTOSCROLL,b.w/2);k=a.pageX-f.x;if(j("webkit")||j("opera"))k+=i.body().scrollLeft;v=0;0<k&&k<b.w&&(k<g?v=-g:k>b.w-g&&(v=g),u.scrollLeft+=v)}if(e||q){e=Math.min(h.V_TRIGGER_AUTOSCROLL,b.h/2);q=a.pageY-f.y;if(j("webkit")||j("opera"))q+=i.body().scrollTop;s=0;0<q&&q<b.h&&(q<e?s=-e:q>b.h-e&&(s=e),u.scrollTop+=s)}if(v||s)return}try{u=u.parentNode}catch(t){u=null}}h.autoScroll(a)};return h})},"dojo/dnd/TimedMoveable":function(){define(["../_base/declare",
-"./Moveable"],function(e,j){var i=j.prototype.onMove;return e("dojo.dnd.TimedMoveable",j,{timeout:40,constructor:function(e,c){c||(c={});if(c.timeout&&"number"==typeof c.timeout&&0<=c.timeout)this.timeout=c.timeout},onMoveStop:function(e){e._timer&&(clearTimeout(e._timer),i.call(this,e,e._leftTop));j.prototype.onMoveStop.apply(this,arguments)},onMove:function(e,c){e._leftTop=c;if(!e._timer){var g=this;e._timer=setTimeout(function(){e._timer=null;i.call(g,e,e._leftTop)},this.timeout)}}})})},"dijit/_base/manager":function(){define(["dojo/_base/array",
-"dojo/_base/config","dojo/_base/lang","../registry","../main"],function(e,j,i,l,c){var g={};e.forEach("byId,getUniqueId,findWidgets,_destroyAll,byNode,getEnclosingWidget".split(","),function(c){g[c]=l[c]});i.mixin(g,{defaultDuration:j.defaultDuration||200});i.mixin(c,g);return c})},"dijit/_DialogMixin":function(){define(["dojo/_base/declare","./a11y"],function(e,j){return e("dijit._DialogMixin",null,{execute:function(){},onCancel:function(){},onExecute:function(){},_onSubmit:function(){this.onExecute();
-this.execute(this.get("value"))},_getFocusItems:function(){var e=j._getTabNavigable(this.containerNode);this._firstFocusItem=e.lowest||e.first||this.closeButtonNode||this.domNode;this._lastFocusItem=e.last||e.highest||this._firstFocusItem}})})},"dijit/DialogUnderlay":function(){define("dojo/_base/declare,dojo/dom-attr,dojo/window,./_Widget,./_TemplatedMixin,./BackgroundIframe".split(","),function(e,j,i,l,c,g){return e("dijit.DialogUnderlay",[l,c],{templateString:"<div class='dijitDialogUnderlayWrapper'><div class='dijitDialogUnderlay' data-dojo-attach-point='node'></div></div>",
-dialogId:"","class":"",_setDialogIdAttr:function(c){j.set(this.node,"id",c+"_underlay");this._set("dialogId",c)},_setClassAttr:function(c){this.node.className="dijitDialogUnderlay "+c;this._set("class",c)},postCreate:function(){this.ownerDocumentBody.appendChild(this.domNode)},layout:function(){var c=this.node.style,b=this.domNode.style;b.display="none";var f=i.getBox(this.ownerDocument);b.top=f.t+"px";b.left=f.l+"px";c.width=f.w+"px";c.height=f.h+"px";b.display="block"},show:function(){this.domNode.style.display=
-"block";this.layout();this.bgIframe=new g(this.domNode)},hide:function(){this.bgIframe.destroy();delete this.bgIframe;this.domNode.style.display="none"}})})},"url:dijit/templates/Dialog.html":'<div class="dijitDialog" role="dialog" aria-labelledby="${id}_title">\n\t<div data-dojo-attach-point="titleBar" class="dijitDialogTitleBar">\n\t\t<span data-dojo-attach-point="titleNode" class="dijitDialogTitle" id="${id}_title"\n\t\t\t\trole="header" level="1"></span>\n\t\t<span data-dojo-attach-point="closeButtonNode" class="dijitDialogCloseIcon" data-dojo-attach-event="ondijitclick: onCancel" title="${buttonCancel}" role="button" tabIndex="-1">\n\t\t\t<span data-dojo-attach-point="closeText" class="closeText" title="${buttonCancel}">x</span>\n\t\t</span>\n\t</div>\n\t<div data-dojo-attach-point="containerNode" class="dijitDialogPaneContent"></div>\n</div>\n',
-"dijit/layout/TabContainer":function(){define(["dojo/_base/lang","dojo/_base/declare","./_TabContainerBase","./TabController","./ScrollingTabController"],function(e,j,i,l,c){return j("dijit.layout.TabContainer",i,{useMenu:!0,useSlider:!0,controllerWidget:"",_makeController:function(c){var h=this.baseClass+"-tabs"+(this.doLayout?"":" dijitTabNoLayout");return new ("string"==typeof this.controllerWidget?e.getObject(this.controllerWidget):this.controllerWidget)({id:this.id+"_tablist",ownerDocument:this.ownerDocument,
-dir:this.dir,lang:this.lang,textDir:this.textDir,tabPosition:this.tabPosition,doLayout:this.doLayout,containerId:this.id,"class":h,nested:this.nested,useMenu:this.useMenu,useSlider:this.useSlider,tabStripClass:this.tabStrip?this.baseClass+(this.tabStrip?"":"No")+"Strip":null},c)},postMixInProperties:function(){this.inherited(arguments);if(!this.controllerWidget)this.controllerWidget=("top"==this.tabPosition||"bottom"==this.tabPosition)&&!this.nested?c:l}})})},"dijit/layout/_TabContainerBase":function(){define("dojo/text!./templates/TabContainer.html,./StackContainer,./utils,../_TemplatedMixin,dojo/_base/declare,dojo/dom-class,dojo/dom-geometry,dojo/dom-style".split(","),
-function(e,j,i,l,c,g,h,b){return c("dijit.layout._TabContainerBase",[j,l],{tabPosition:"top",baseClass:"dijitTabContainer",tabStrip:!1,nested:!1,templateString:e,postMixInProperties:function(){this.baseClass+=this.tabPosition.charAt(0).toUpperCase()+this.tabPosition.substr(1).replace(/-.*/,"");this.srcNodeRef&&b.set(this.srcNodeRef,"visibility","hidden");this.inherited(arguments)},buildRendering:function(){this.inherited(arguments);this.tablist=this._makeController(this.tablistNode);this.doLayout||
-g.add(this.domNode,"dijitTabContainerNoLayout");this.nested?(g.add(this.domNode,"dijitTabContainerNested"),g.add(this.tablist.containerNode,"dijitTabContainerTabListNested"),g.add(this.tablistSpacer,"dijitTabContainerSpacerNested"),g.add(this.containerNode,"dijitTabPaneWrapperNested")):g.add(this.domNode,"tabStrip-"+(this.tabStrip?"enabled":"disabled"))},_setupChild:function(b){g.add(b.domNode,"dijitTabPane");this.inherited(arguments)},startup:function(){this._started||(this.tablist.startup(),this.inherited(arguments))},
-layout:function(){if(this._contentBox&&"undefined"!=typeof this._contentBox.l){var b=this.selectedChildWidget;if(this.doLayout){var a=this.tabPosition.replace(/-h/,"");this.tablist.layoutAlign=a;a=[this.tablist,{domNode:this.tablistSpacer,layoutAlign:a},{domNode:this.containerNode,layoutAlign:"client"}];i.layoutChildren(this.domNode,this._contentBox,a);this._containerContentBox=i.marginBox2contentBox(this.containerNode,a[2]);b&&b.resize&&b.resize(this._containerContentBox)}else{if(this.tablist.resize){a=
-this.tablist.domNode.style;a.width="0";var c=h.getContentBox(this.domNode).w;a.width="";this.tablist.resize({w:c})}b&&b.resize&&b.resize()}}},destroy:function(){this.tablist&&this.tablist.destroy();this.inherited(arguments)}})})},"url:dijit/layout/templates/TabContainer.html":'<div class="dijitTabContainer">\n\t<div class="dijitTabListWrapper" data-dojo-attach-point="tablistNode"></div>\n\t<div data-dojo-attach-point="tablistSpacer" class="dijitTabSpacer ${baseClass}-spacer"></div>\n\t<div class="dijitTabPaneWrapper ${baseClass}-container" data-dojo-attach-point="containerNode"></div>\n</div>\n',
-"dijit/layout/StackContainer":function(){define("dojo/_base/array,dojo/cookie,dojo/_base/declare,dojo/dom-class,dojo/has,dojo/_base/lang,dojo/ready,dojo/topic,../registry,../_WidgetBase,./_LayoutWidget,dojo/i18n!../nls/common".split(","),function(e,j,i,l,c,g,h,b,f,a,k){c("dijit-legacy-requires")&&h(0,function(){require(["dijit/layout/StackController"])});i=i("dijit.layout.StackContainer",k,{doLayout:!0,persist:!1,baseClass:"dijitStackContainer",buildRendering:function(){this.inherited(arguments);
-l.add(this.domNode,"dijitLayoutContainer");this.containerNode.setAttribute("role","tabpanel")},postCreate:function(){this.inherited(arguments);this.connect(this.domNode,"onkeypress",this._onKeyPress)},startup:function(){if(!this._started){var a=this.getChildren();e.forEach(a,this._setupChild,this);this.persist?this.selectedChildWidget=f.byId(j(this.id+"_selectedChild")):e.some(a,function(a){if(a.selected)this.selectedChildWidget=a;return a.selected},this);var c=this.selectedChildWidget;if(!c&&a[0])c=
-this.selectedChildWidget=a[0],c.selected=!0;b.publish(this.id+"-startup",{children:a,selected:c});this.inherited(arguments)}},resize:function(){if(!this._hasBeenShown){this._hasBeenShown=!0;var a=this.selectedChildWidget;a&&this._showChild(a)}this.inherited(arguments)},_setupChild:function(a){this.inherited(arguments);l.replace(a.domNode,"dijitHidden","dijitVisible");a.domNode.title=""},addChild:function(a,c){this.inherited(arguments);this._started&&(b.publish(this.id+"-addChild",a,c),this.layout(),
-this.selectedChildWidget||this.selectChild(a))},removeChild:function(a){this.inherited(arguments);this._started&&b.publish(this.id+"-removeChild",a);if(!this._descendantsBeingDestroyed){if(this.selectedChildWidget===a&&(this.selectedChildWidget=void 0,this._started)){var c=this.getChildren();c.length&&this.selectChild(c[0])}this._started&&this.layout()}},selectChild:function(a,c){a=f.byId(a);if(this.selectedChildWidget!=a){var g=this._transition(a,this.selectedChildWidget,c);this._set("selectedChildWidget",
-a);b.publish(this.id+"-selectChild",a);this.persist&&j(this.id+"_selectedChild",this.selectedChildWidget.id)}return g},_transition:function(a,b){b&&this._hideChild(b);var c=this._showChild(a);a.resize&&(this.doLayout?a.resize(this._containerContentBox||this._contentBox):a.resize());return c},_adjacent:function(a){var b=this.getChildren(),c=e.indexOf(b,this.selectedChildWidget),c=c+(a?1:b.length-1);return b[c%b.length]},forward:function(){return this.selectChild(this._adjacent(!0),!0)},back:function(){return this.selectChild(this._adjacent(!1),
-!0)},_onKeyPress:function(a){b.publish(this.id+"-containerKeyPress",{e:a,page:this})},layout:function(){var a=this.selectedChildWidget;a&&a.resize&&(this.doLayout?a.resize(this._containerContentBox||this._contentBox):a.resize())},_showChild:function(a){var b=this.getChildren();a.isFirstChild=a==b[0];a.isLastChild=a==b[b.length-1];a._set("selected",!0);l.replace(a.domNode,"dijitVisible","dijitHidden");return a._onShow&&a._onShow()||!0},_hideChild:function(a){a._set("selected",!1);l.replace(a.domNode,
-"dijitHidden","dijitVisible");a.onHide&&a.onHide()},closeChild:function(a){a.onClose(this,a)&&(this.removeChild(a),a.destroyRecursive())},destroyDescendants:function(a){this._descendantsBeingDestroyed=!0;this.selectedChildWidget=void 0;e.forEach(this.getChildren(),function(b){a||this.removeChild(b);b.destroyRecursive(a)},this);this._descendantsBeingDestroyed=!1}});i.ChildWidgetProperties={selected:!1,disabled:!1,closable:!1,iconClass:"dijitNoIcon",showTitle:!0};g.extend(a,i.ChildWidgetProperties);
-return i})},"dijit/layout/TabController":function(){define("dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-class,dojo/i18n,dojo/_base/lang,./StackController,../registry,../Menu,../MenuItem,dojo/text!./templates/_TabButton.html,dojo/i18n!../nls/common".split(","),function(e,j,i,l,c,g,h,b,f,a,k){k=e("dijit.layout._TabButton",h.StackButton,{baseClass:"dijitTab",cssStateNodes:{closeNode:"dijitTabCloseButton"},templateString:k,scrollOnFocus:!1,buildRendering:function(){this.inherited(arguments);j.setSelectable(this.containerNode,
-!1)},startup:function(){this.inherited(arguments);var a=this.domNode;this.defer(function(){a.className=a.className},1)},_setCloseButtonAttr:function(a){this._set("closeButton",a);l.toggle(this.domNode,"dijitClosable",a);this.closeNode.style.display=a?"":"none";a&&(a=c.getLocalization("dijit","common"),this.closeNode&&i.set(this.closeNode,"title",a.itemClose))},_setDisabledAttr:function(a){this.inherited(arguments);if(this.closeNode)if(a)i.remove(this.closeNode,"title");else{var b=c.getLocalization("dijit",
-"common");i.set(this.closeNode,"title",b.itemClose)}},_setLabelAttr:function(a){this.inherited(arguments);if(!this.showLabel&&!this.params.title)this.iconNode.alt=g.trim(this.containerNode.innerText||this.containerNode.textContent||"")}});e=e("dijit.layout.TabController",h,{baseClass:"dijitTabController",templateString:"<div role='tablist' data-dojo-attach-event='onkeypress:onkeypress'></div>",tabPosition:"top",buttonWidget:k,buttonWidgetCloseClass:"dijitTabCloseButton",postCreate:function(){this.inherited(arguments);
-var d=new f({id:this.id+"_Menu",ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir,targetNodeIds:[this.domNode],selector:function(a){return l.contains(a,"dijitClosable")&&!l.contains(a,"dijitTabDisabled")}});this.own(d);var g=c.getLocalization("dijit","common"),e=this;d.addChild(new a({label:g.itemClose,ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir,onClick:function(){var a=b.byNode(this.getParent().currentTarget);e.onCloseButtonClick(a.page)}}))}});
-e.TabButton=k;return e})},"dijit/layout/StackController":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom-class,dojo/_base/event,dojo/keys,dojo/_base/lang,dojo/on,../focus,../registry,../_Widget,../_TemplatedMixin,../_Container,../form/ToggleButton,dojo/i18n!../nls/common".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p){p=j("dijit.layout._StackButton",p,{tabIndex:"-1",closeButton:!1,_aria_attr:"aria-selected",buildRendering:function(a){this.inherited(arguments);(this.focusNode||this.domNode).setAttribute("role",
-"tab")}});j=j("dijit.layout.StackController",[a,k,d],{baseClass:"dijitStackController",templateString:"<span role='tablist' data-dojo-attach-event='onkeypress'></span>",containerId:"",buttonWidget:p,buttonWidgetCloseClass:"dijitStackCloseButton",constructor:function(){this.pane2button={}},postCreate:function(){this.inherited(arguments);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");this.connect(this.containerNode,"click",function(a){var b=f.getEnclosingWidget(a.target);if(b!=this.containerNode&&!b.disabled&&b.page)for(a=a.target;a!==this.containerNode;a=a.parentNode)if(i.contains(a,this.buttonWidgetCloseClass)){this.onCloseButtonClick(b.page);break}else if(a==b.domNode){this.onButtonClick(b.page);break}})},onStartup:function(a){e.forEach(a.children,
-this.onAddChild,this);if(a.selected)this.onSelectChild(a.selected);var b=f.byId(this.containerId).containerNode,c=this.pane2button,a={title:"label",showtitle:"showLabel",iconclass:"iconClass",closable:"closeButton",tooltip:"title",disabled:"disabled"},d=function(a,d){return h(b,"attrmodified-"+a,function(a){var b=c[a.detail&&a.detail.widget&&a.detail.widget.id];b&&b.set(d,a.detail.newValue)})},g;for(g in a)this.own(d(g,a[g]))},destroy:function(){for(var a in this.pane2button)this.onRemoveChild(f.byId(a));
-this.inherited(arguments)},onAddChild:function(a,b){var c=new (g.isString(this.buttonWidget)?g.getObject(this.buttonWidget):this.buttonWidget)({id:this.id+"_"+a.id,name:this.id+"_"+a.id,label:a.title,disabled:a.disabled,ownerDocument:this.ownerDocument,dir:a.dir,lang:a.lang,textDir:a.textDir,showLabel:a.showTitle,iconClass:a.iconClass,closeButton:a.closable,title:a.tooltip,page:a});this.addChild(c,b);this.pane2button[a.id]=c;a.controlButton=c;if(!this._currentChild)this.onSelectChild(a)},onRemoveChild:function(a){if(this._currentChild===
-a)this._currentChild=null;var b=this.pane2button[a.id];b&&(this.removeChild(b),delete this.pane2button[a.id],b.destroy());delete a.controlButton},onSelectChild:function(a){if(a){if(this._currentChild){var b=this.pane2button[this._currentChild.id];b.set("checked",!1);b.focusNode.setAttribute("tabIndex","-1")}b=this.pane2button[a.id];b.set("checked",!0);this._currentChild=a;b.focusNode.setAttribute("tabIndex","0");f.byId(this.containerId).containerNode.setAttribute("aria-labelledby",b.id)}},onButtonClick:function(a){var c=
-this.pane2button[a.id];b.focus(c.focusNode);this._currentChild&&this._currentChild.id===a.id&&c.set("checked",!0);f.byId(this.containerId).selectChild(a)},onCloseButtonClick:function(a){f.byId(this.containerId).closeChild(a);this._currentChild&&(a=this.pane2button[this._currentChild.id])&&b.focus(a.focusNode||a.domNode)},adjacent:function(a){if(!this.isLeftToRight()&&(!this.tabPosition||/top|bottom/.test(this.tabPosition)))a=!a;var b=this.getChildren(),c=e.indexOf(b,this.pane2button[this._currentChild.id]),
-d=b[c],f;do c=(c+(a?1:b.length-1))%b.length,f=b[c];while(f.disabled&&f!=d);return f},onkeypress:function(a){if(!this.disabled&&!a.altKey){var b=null;if(a.ctrlKey||!a._djpage){switch(a.charOrCode){case c.LEFT_ARROW:case c.UP_ARROW:a._djpage||(b=!1);break;case c.PAGE_UP:a.ctrlKey&&(b=!1);break;case c.RIGHT_ARROW:case c.DOWN_ARROW:a._djpage||(b=!0);break;case c.PAGE_DOWN:a.ctrlKey&&(b=!0);break;case c.HOME:for(var d=this.getChildren(),f=0;f<d.length;f++){var g=d[f];if(!g.disabled){this.onButtonClick(g.page);
-break}}l.stop(a);break;case c.END:d=this.getChildren();for(f=d.length-1;0<=f;f--)if(g=d[f],!g.disabled){this.onButtonClick(g.page);break}l.stop(a);break;case c.DELETE:if(this._currentChild.closable)this.onCloseButtonClick(this._currentChild);l.stop(a);break;default:if(a.ctrlKey)if(a.charOrCode===c.TAB)this.onButtonClick(this.adjacent(!a.shiftKey).page),l.stop(a);else if("w"==a.charOrCode){if(this._currentChild.closable)this.onCloseButtonClick(this._currentChild);l.stop(a)}}null!==b&&(this.onButtonClick(this.adjacent(b).page),
-l.stop(a))}}},onContainerKeyPress:function(a){a.e._djpage=a.page;this.onkeypress(a.e)}});j.StackButton=p;return j})},"dijit/form/ToggleButton":function(){define(["dojo/_base/declare","dojo/_base/kernel","./Button","./_ToggleButtonMixin"],function(e,j,i,l){return e("dijit.form.ToggleButton",[i,l],{baseClass:"dijitToggleButton",setChecked:function(c){j.deprecated("setChecked("+c+") is deprecated. Use set('checked',"+c+") instead.","","2.0");this.set("checked",c)}})})},"dijit/form/_ToggleButtonMixin":function(){define(["dojo/_base/declare",
-"dojo/dom-attr"],function(e,j){return e("dijit.form._ToggleButtonMixin",null,{checked:!1,_aria_attr:"aria-pressed",_onClick:function(e){var l=this.checked;this._set("checked",!l);var c=this.inherited(arguments);this.set("checked",c?this.checked:l);return c},_setCheckedAttr:function(e,l){this._set("checked",e);j.set(this.focusNode||this.domNode,"checked",e);(this.focusNode||this.domNode).setAttribute(this._aria_attr,e?"true":"false");this._handleOnChange(e,l)},reset:function(){this._hasBeenBlurred=
+this._fadeInDeferred.cancel();this._fadeOutDeferred&&this._fadeOutDeferred.cancel();this._moveable&&this._moveable.destroy();for(var a;a=this._modalconnects.pop();)a.remove();w.hide(this);this.inherited(arguments)}}),A=j("dijit.Dialog",[S,u],{});A._DialogBase=u;var w=A._DialogLevelManager={_beginZIndex:950,show:function(a,b){x[x.length-1].focus=t.curNode;var c=E._singleton;!c||c._destroyed?c=B._underlay=E._singleton=new E(b):c.set(a.underlayAttrs);var d=x[x.length-1].dialog?x[x.length-1].zIndex+2:
+A._DialogLevelManager._beginZIndex;1==x.length&&c.show();g.set(E._singleton.domNode,"zIndex",d-1);g.set(a.domNode,"zIndex",d);x.push({dialog:a,underlayAttrs:b,zIndex:d})},hide:function(a){if(x[x.length-1].dialog==a){x.pop();var b=x[x.length-1];E._singleton._destroyed||(1==x.length?E._singleton.hide():(g.set(E._singleton.domNode,"zIndex",b.zIndex-1),E._singleton.set(b.underlayAttrs)));if(a.refocus){a=b.focus;if(b.dialog&&(!a||!c.isDescendant(a,b.dialog.domNode)))b.dialog._getFocusItems(b.dialog.domNode),
+a=b.dialog._firstFocusItem;if(a)try{a.focus()}catch(d){}}}else b=k.indexOf(k.map(x,function(a){return a.dialog}),a),-1!=b&&x.splice(b,1)},isTop:function(a){return x[x.length-1].dialog==a}},x=A._dialogStack=[{dialog:null,focus:null,underlayAttrs:null}];r("dijit-legacy-requires")&&o(0,function(){f(["dijit/TooltipDialog"])});return A})},"dojo/dnd/Moveable":function(){define("../_base/array,../_base/declare,../_base/event,../_base/lang,../dom,../dom-class,../Evented,../on,../topic,../touch,./common,./Mover,../_base/window".split(","),
+function(f,k,h,j,e,c,i,b,g,a,l,d,p){return k("dojo.dnd.Moveable",[i],{handle:"",delay:0,skip:!1,constructor:function(c,g){this.node=e.byId(c);g||(g={});this.handle=g.handle?e.byId(g.handle):null;if(!this.handle)this.handle=this.node;this.delay=0<g.delay?g.delay:0;this.skip=g.skip;this.mover=g.mover?g.mover:d;this.events=[b(this.handle,a.press,j.hitch(this,"onMouseDown")),b(this.handle,"dragstart",j.hitch(this,"onSelectStart")),b(this.handle,"selectstart",j.hitch(this,"onSelectStart"))]},markupFactory:function(a,
+b,c){return new c(b,a)},destroy:function(){f.forEach(this.events,function(a){a.remove()});this.events=this.node=this.handle=null},onMouseDown:function(c){if(!this.skip||!l.isFormElement(c)){if(this.delay)this.events.push(b(this.handle,a.move,j.hitch(this,"onMouseMove")),b(this.handle,a.release,j.hitch(this,"onMouseUp"))),this._lastX=c.pageX,this._lastY=c.pageY;else this.onDragDetected(c);h.stop(c)}},onMouseMove:function(a){if(Math.abs(a.pageX-this._lastX)>this.delay||Math.abs(a.pageY-this._lastY)>
+this.delay)this.onMouseUp(a),this.onDragDetected(a);h.stop(a)},onMouseUp:function(a){for(var b=0;2>b;++b)this.events.pop().remove();h.stop(a)},onSelectStart:function(a){(!this.skip||!l.isFormElement(a))&&h.stop(a)},onDragDetected:function(a){new this.mover(this.node,a,this)},onMoveStart:function(a){g.publish("/dnd/move/start",a);c.add(p.body(),"dojoMove");c.add(this.node,"dojoMoveItem")},onMoveStop:function(a){g.publish("/dnd/move/stop",a);c.remove(p.body(),"dojoMove");c.remove(this.node,"dojoMoveItem")},
+onFirstMove:function(){},onMove:function(a,b){this.onMoving(a,b);var c=a.node.style;c.left=b.l+"px";c.top=b.t+"px";this.onMoved(a,b)},onMoving:function(){},onMoved:function(){}})})},"dojo/dnd/common":function(){define(["../_base/connect","../_base/kernel","../_base/lang","../dom"],function(f,k,h,j){var e={};e.getCopyKeyState=f.isCopyKey;e._uniqueId=0;e.getUniqueId=function(){var c;do c=k._scopeName+"Unique"+ ++e._uniqueId;while(j.byId(c));return c};e._empty={};e.isFormElement=function(c){c=c.target;
+if(3==c.nodeType)c=c.parentNode;return 0<=" button textarea input select option ".indexOf(" "+c.tagName.toLowerCase()+" ")};h.mixin(h.getObject("dojo.dnd",!0),e);return e})},"dojo/dnd/Mover":function(){define("../_base/array,../_base/declare,../_base/event,../_base/lang,../sniff,../_base/window,../dom,../dom-geometry,../dom-style,../Evented,../on,../touch,./common,./autoscroll".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,p,m){return k("dojo.dnd.Mover",[a],{constructor:function(a,b,c){this.node=i.byId(a);
+this.marginBox={l:b.pageX,t:b.pageY};this.mouseButton=b.button;b=this.host=c;a=a.ownerDocument;this.events=[l(a,d.move,j.hitch(this,"onFirstMove")),l(a,d.move,j.hitch(this,"onMouseMove")),l(a,d.release,j.hitch(this,"onMouseUp")),l(a,"dragstart",h.stop),l(a.body,"selectstart",h.stop)];m.autoScrollStart(a);if(b&&b.onMoveStart)b.onMoveStart(this)},onMouseMove:function(a){m.autoScroll(a);var b=this.marginBox;this.host.onMove(this,{l:b.l+a.pageX,t:b.t+a.pageY},a);h.stop(a)},onMouseUp:function(a){(e("webkit")&&
+e("mac")&&2==this.mouseButton?0==a.button:this.mouseButton==a.button)&&this.destroy();h.stop(a)},onFirstMove:function(a){var d=this.node.style,e,f=this.host;switch(d.position){case "relative":case "absolute":e=Math.round(parseFloat(d.left))||0;d=Math.round(parseFloat(d.top))||0;break;default:d.position="absolute";d=b.getMarginBox(this.node);e=c.doc.body;var i=g.getComputedStyle(e),h=b.getMarginBox(e,i),i=b.getContentBox(e,i);e=d.l-(i.l-h.l);d=d.t-(i.t-h.t)}this.marginBox.l=e-this.marginBox.l;this.marginBox.t=
+d-this.marginBox.t;if(f&&f.onFirstMove)f.onFirstMove(this,a);this.events.shift().remove()},destroy:function(){f.forEach(this.events,function(a){a.remove()});var a=this.host;if(a&&a.onMoveStop)a.onMoveStop(this);this.events=this.node=this.host=null}})})},"dojo/dnd/autoscroll":function(){define("../_base/lang,../sniff,../_base/window,../dom-geometry,../dom-style,../window".split(","),function(f,k,h,j,e,c){var i={};f.setObject("dojo.dnd.autoscroll",i);i.getViewport=c.getBox;i.V_TRIGGER_AUTOSCROLL=32;
+i.H_TRIGGER_AUTOSCROLL=32;i.V_AUTOSCROLL_VALUE=16;i.H_AUTOSCROLL_VALUE=16;var b,g=h.doc,a=Infinity,l=Infinity;i.autoScrollStart=function(d){g=d;b=c.getBox(g);d=h.body(g).parentNode;a=Math.max(d.scrollHeight-b.h,0);l=Math.max(d.scrollWidth-b.w,0)};i.autoScroll=function(d){var e=b||c.getBox(g),f=h.body(g).parentNode,j=0,k=0;d.clientX<i.H_TRIGGER_AUTOSCROLL?j=-i.H_AUTOSCROLL_VALUE:d.clientX>e.w-i.H_TRIGGER_AUTOSCROLL&&(j=Math.min(i.H_AUTOSCROLL_VALUE,l-f.scrollLeft));d.clientY<i.V_TRIGGER_AUTOSCROLL?
+k=-i.V_AUTOSCROLL_VALUE:d.clientY>e.h-i.V_TRIGGER_AUTOSCROLL&&(k=Math.min(i.V_AUTOSCROLL_VALUE,a-f.scrollTop));window.scrollBy(j,k)};i._validNodes={div:1,p:1,td:1};i._validOverflow={auto:1,scroll:1};i.autoScrollNodes=function(a){for(var b,c,g,f,l,q,v=0,s=0,t=a.target;t;){if(1==t.nodeType&&t.tagName.toLowerCase()in i._validNodes){g=e.getComputedStyle(t);f=g.overflow.toLowerCase()in i._validOverflow;l=g.overflowX.toLowerCase()in i._validOverflow;q=g.overflowY.toLowerCase()in i._validOverflow;if(f||
+l||q)b=j.getContentBox(t,g),c=j.position(t,!0);if(f||l){g=Math.min(i.H_TRIGGER_AUTOSCROLL,b.w/2);l=a.pageX-c.x;if(k("webkit")||k("opera"))l+=h.body().scrollLeft;v=0;0<l&&l<b.w&&(l<g?v=-g:l>b.w-g&&(v=g),t.scrollLeft+=v)}if(f||q){f=Math.min(i.V_TRIGGER_AUTOSCROLL,b.h/2);q=a.pageY-c.y;if(k("webkit")||k("opera"))q+=h.body().scrollTop;s=0;0<q&&q<b.h&&(q<f?s=-f:q>b.h-f&&(s=f),t.scrollTop+=s)}if(v||s)return}try{t=t.parentNode}catch(u){t=null}}i.autoScroll(a)};return i})},"dojo/dnd/TimedMoveable":function(){define(["../_base/declare",
+"./Moveable"],function(f,k){var h=k.prototype.onMove;return f("dojo.dnd.TimedMoveable",k,{timeout:40,constructor:function(f,e){e||(e={});if(e.timeout&&"number"==typeof e.timeout&&0<=e.timeout)this.timeout=e.timeout},onMoveStop:function(f){f._timer&&(clearTimeout(f._timer),h.call(this,f,f._leftTop));k.prototype.onMoveStop.apply(this,arguments)},onMove:function(f,e){f._leftTop=e;if(!f._timer){var c=this;f._timer=setTimeout(function(){f._timer=null;h.call(c,f,f._leftTop)},this.timeout)}}})})},"dijit/_base/manager":function(){define(["dojo/_base/array",
+"dojo/_base/config","dojo/_base/lang","../registry","../main"],function(f,k,h,j,e){var c={};f.forEach("byId,getUniqueId,findWidgets,_destroyAll,byNode,getEnclosingWidget".split(","),function(e){c[e]=j[e]});h.mixin(c,{defaultDuration:k.defaultDuration||200});h.mixin(e,c);return e})},"dijit/_DialogMixin":function(){define(["dojo/_base/declare","./a11y"],function(f,k){return f("dijit._DialogMixin",null,{execute:function(){},onCancel:function(){},onExecute:function(){},_onSubmit:function(){this.onExecute();
+this.execute(this.get("value"))},_getFocusItems:function(){var f=k._getTabNavigable(this.containerNode);this._firstFocusItem=f.lowest||f.first||this.closeButtonNode||this.domNode;this._lastFocusItem=f.last||f.highest||this._firstFocusItem}})})},"dijit/DialogUnderlay":function(){define("dojo/_base/declare,dojo/dom-attr,dojo/window,./_Widget,./_TemplatedMixin,./BackgroundIframe".split(","),function(f,k,h,j,e,c){return f("dijit.DialogUnderlay",[j,e],{templateString:"<div class='dijitDialogUnderlayWrapper'><div class='dijitDialogUnderlay' data-dojo-attach-point='node'></div></div>",
+dialogId:"","class":"",_setDialogIdAttr:function(c){k.set(this.node,"id",c+"_underlay");this._set("dialogId",c)},_setClassAttr:function(c){this.node.className="dijitDialogUnderlay "+c;this._set("class",c)},postCreate:function(){this.ownerDocumentBody.appendChild(this.domNode)},layout:function(){var c=this.node.style,b=this.domNode.style;b.display="none";var g=h.getBox(this.ownerDocument);b.top=g.t+"px";b.left=g.l+"px";c.width=g.w+"px";c.height=g.h+"px";b.display="block"},show:function(){this.domNode.style.display=
+"block";this.layout();this.bgIframe=new c(this.domNode)},hide:function(){this.bgIframe.destroy();delete this.bgIframe;this.domNode.style.display="none"}})})},"url:dijit/templates/Dialog.html":'<div class="dijitDialog" role="dialog" aria-labelledby="${id}_title">\n\t<div data-dojo-attach-point="titleBar" class="dijitDialogTitleBar">\n\t\t<span data-dojo-attach-point="titleNode" class="dijitDialogTitle" id="${id}_title"\n\t\t\t\trole="header" level="1"></span>\n\t\t<span data-dojo-attach-point="closeButtonNode" class="dijitDialogCloseIcon" data-dojo-attach-event="ondijitclick: onCancel" title="${buttonCancel}" role="button" tabIndex="-1">\n\t\t\t<span data-dojo-attach-point="closeText" class="closeText" title="${buttonCancel}">x</span>\n\t\t</span>\n\t</div>\n\t<div data-dojo-attach-point="containerNode" class="dijitDialogPaneContent"></div>\n</div>\n',
+"dijit/layout/TabContainer":function(){define(["dojo/_base/lang","dojo/_base/declare","./_TabContainerBase","./TabController","./ScrollingTabController"],function(f,k,h,j,e){return k("dijit.layout.TabContainer",h,{useMenu:!0,useSlider:!0,controllerWidget:"",_makeController:function(c){var e=this.baseClass+"-tabs"+(this.doLayout?"":" dijitTabNoLayout");return new ("string"==typeof this.controllerWidget?f.getObject(this.controllerWidget):this.controllerWidget)({id:this.id+"_tablist",ownerDocument:this.ownerDocument,
+dir:this.dir,lang:this.lang,textDir:this.textDir,tabPosition:this.tabPosition,doLayout:this.doLayout,containerId:this.id,"class":e,nested:this.nested,useMenu:this.useMenu,useSlider:this.useSlider,tabStripClass:this.tabStrip?this.baseClass+(this.tabStrip?"":"No")+"Strip":null},c)},postMixInProperties:function(){this.inherited(arguments);if(!this.controllerWidget)this.controllerWidget=("top"==this.tabPosition||"bottom"==this.tabPosition)&&!this.nested?e:j}})})},"dijit/layout/_TabContainerBase":function(){define("dojo/text!./templates/TabContainer.html,./StackContainer,./utils,../_TemplatedMixin,dojo/_base/declare,dojo/dom-class,dojo/dom-geometry,dojo/dom-style".split(","),
+function(f,k,h,j,e,c,i,b){return e("dijit.layout._TabContainerBase",[k,j],{tabPosition:"top",baseClass:"dijitTabContainer",tabStrip:!1,nested:!1,templateString:f,postMixInProperties:function(){this.baseClass+=this.tabPosition.charAt(0).toUpperCase()+this.tabPosition.substr(1).replace(/-.*/,"");this.srcNodeRef&&b.set(this.srcNodeRef,"visibility","hidden");this.inherited(arguments)},buildRendering:function(){this.inherited(arguments);this.tablist=this._makeController(this.tablistNode);this.doLayout||
+c.add(this.domNode,"dijitTabContainerNoLayout");this.nested?(c.add(this.domNode,"dijitTabContainerNested"),c.add(this.tablist.containerNode,"dijitTabContainerTabListNested"),c.add(this.tablistSpacer,"dijitTabContainerSpacerNested"),c.add(this.containerNode,"dijitTabPaneWrapperNested")):c.add(this.domNode,"tabStrip-"+(this.tabStrip?"enabled":"disabled"))},_setupChild:function(b){c.add(b.domNode,"dijitTabPane");this.inherited(arguments)},startup:function(){this._started||(this.tablist.startup(),this.inherited(arguments))},
+layout:function(){if(this._contentBox&&"undefined"!=typeof this._contentBox.l){var b=this.selectedChildWidget;if(this.doLayout){var a=this.tabPosition.replace(/-h/,"");this.tablist.layoutAlign=a;a=[this.tablist,{domNode:this.tablistSpacer,layoutAlign:a},{domNode:this.containerNode,layoutAlign:"client"}];h.layoutChildren(this.domNode,this._contentBox,a);this._containerContentBox=h.marginBox2contentBox(this.containerNode,a[2]);b&&b.resize&&b.resize(this._containerContentBox)}else{if(this.tablist.resize){a=
+this.tablist.domNode.style;a.width="0";var c=i.getContentBox(this.domNode).w;a.width="";this.tablist.resize({w:c})}b&&b.resize&&b.resize()}}},destroy:function(){this.tablist&&this.tablist.destroy();this.inherited(arguments)}})})},"url:dijit/layout/templates/TabContainer.html":'<div class="dijitTabContainer">\n\t<div class="dijitTabListWrapper" data-dojo-attach-point="tablistNode"></div>\n\t<div data-dojo-attach-point="tablistSpacer" class="dijitTabSpacer ${baseClass}-spacer"></div>\n\t<div class="dijitTabPaneWrapper ${baseClass}-container" data-dojo-attach-point="containerNode"></div>\n</div>\n',
+"dijit/layout/StackContainer":function(){define("dojo/_base/array,dojo/cookie,dojo/_base/declare,dojo/dom-class,dojo/has,dojo/_base/lang,dojo/ready,dojo/topic,../registry,../_WidgetBase,./_LayoutWidget,dojo/i18n!../nls/common".split(","),function(f,k,h,j,e,c,i,b,g,a,l){e("dijit-legacy-requires")&&i(0,function(){require(["dijit/layout/StackController"])});h=h("dijit.layout.StackContainer",l,{doLayout:!0,persist:!1,baseClass:"dijitStackContainer",buildRendering:function(){this.inherited(arguments);
+j.add(this.domNode,"dijitLayoutContainer");this.containerNode.setAttribute("role","tabpanel")},postCreate:function(){this.inherited(arguments);this.connect(this.domNode,"onkeypress",this._onKeyPress)},startup:function(){if(!this._started){var a=this.getChildren();f.forEach(a,this._setupChild,this);this.persist?this.selectedChildWidget=g.byId(k(this.id+"_selectedChild")):f.some(a,function(a){if(a.selected)this.selectedChildWidget=a;return a.selected},this);var c=this.selectedChildWidget;if(!c&&a[0])c=
+this.selectedChildWidget=a[0],c.selected=!0;b.publish(this.id+"-startup",{children:a,selected:c});this.inherited(arguments)}},resize:function(){if(!this._hasBeenShown){this._hasBeenShown=!0;var a=this.selectedChildWidget;a&&this._showChild(a)}this.inherited(arguments)},_setupChild:function(a){this.inherited(arguments);j.replace(a.domNode,"dijitHidden","dijitVisible");a.domNode.title=""},addChild:function(a,c){this.inherited(arguments);this._started&&(b.publish(this.id+"-addChild",a,c),this.layout(),
+this.selectedChildWidget||this.selectChild(a))},removeChild:function(a){this.inherited(arguments);this._started&&b.publish(this.id+"-removeChild",a);if(!this._descendantsBeingDestroyed){if(this.selectedChildWidget===a&&(this.selectedChildWidget=void 0,this._started)){var c=this.getChildren();c.length&&this.selectChild(c[0])}this._started&&this.layout()}},selectChild:function(a,c){a=g.byId(a);if(this.selectedChildWidget!=a){var e=this._transition(a,this.selectedChildWidget,c);this._set("selectedChildWidget",
+a);b.publish(this.id+"-selectChild",a);this.persist&&k(this.id+"_selectedChild",this.selectedChildWidget.id)}return e},_transition:function(a,b){b&&this._hideChild(b);var c=this._showChild(a);a.resize&&(this.doLayout?a.resize(this._containerContentBox||this._contentBox):a.resize());return c},_adjacent:function(a){var b=this.getChildren(),c=f.indexOf(b,this.selectedChildWidget),c=c+(a?1:b.length-1);return b[c%b.length]},forward:function(){return this.selectChild(this._adjacent(!0),!0)},back:function(){return this.selectChild(this._adjacent(!1),
+!0)},_onKeyPress:function(a){b.publish(this.id+"-containerKeyPress",{e:a,page:this})},layout:function(){var a=this.selectedChildWidget;a&&a.resize&&(this.doLayout?a.resize(this._containerContentBox||this._contentBox):a.resize())},_showChild:function(a){var b=this.getChildren();a.isFirstChild=a==b[0];a.isLastChild=a==b[b.length-1];a._set("selected",!0);j.replace(a.domNode,"dijitVisible","dijitHidden");return a._onShow&&a._onShow()||!0},_hideChild:function(a){a._set("selected",!1);j.replace(a.domNode,
+"dijitHidden","dijitVisible");a.onHide&&a.onHide()},closeChild:function(a){a.onClose(this,a)&&(this.removeChild(a),a.destroyRecursive())},destroyDescendants:function(a){this._descendantsBeingDestroyed=!0;this.selectedChildWidget=void 0;f.forEach(this.getChildren(),function(b){a||this.removeChild(b);b.destroyRecursive(a)},this);this._descendantsBeingDestroyed=!1}});h.ChildWidgetProperties={selected:!1,disabled:!1,closable:!1,iconClass:"dijitNoIcon",showTitle:!0};c.extend(a,h.ChildWidgetProperties);
+return h})},"dijit/layout/TabController":function(){define("dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-class,dojo/i18n,dojo/_base/lang,./StackController,../registry,../Menu,../MenuItem,dojo/text!./templates/_TabButton.html,dojo/i18n!../nls/common".split(","),function(f,k,h,j,e,c,i,b,g,a,l){l=f("dijit.layout._TabButton",i.StackButton,{baseClass:"dijitTab",cssStateNodes:{closeNode:"dijitTabCloseButton"},templateString:l,scrollOnFocus:!1,buildRendering:function(){this.inherited(arguments);k.setSelectable(this.containerNode,
+!1)},startup:function(){this.inherited(arguments);var a=this.domNode;this.defer(function(){a.className=a.className},1)},_setCloseButtonAttr:function(a){this._set("closeButton",a);j.toggle(this.domNode,"dijitClosable",a);this.closeNode.style.display=a?"":"none";a&&(a=e.getLocalization("dijit","common"),this.closeNode&&h.set(this.closeNode,"title",a.itemClose))},_setDisabledAttr:function(a){this.inherited(arguments);if(this.closeNode)if(a)h.remove(this.closeNode,"title");else{var b=e.getLocalization("dijit",
+"common");h.set(this.closeNode,"title",b.itemClose)}},_setLabelAttr:function(a){this.inherited(arguments);if(!this.showLabel&&!this.params.title)this.iconNode.alt=c.trim(this.containerNode.innerText||this.containerNode.textContent||"")}});f=f("dijit.layout.TabController",i,{baseClass:"dijitTabController",templateString:"<div role='tablist' data-dojo-attach-event='onkeypress:onkeypress'></div>",tabPosition:"top",buttonWidget:l,buttonWidgetCloseClass:"dijitTabCloseButton",postCreate:function(){this.inherited(arguments);
+var c=new g({id:this.id+"_Menu",ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir,targetNodeIds:[this.domNode],selector:function(a){return j.contains(a,"dijitClosable")&&!j.contains(a,"dijitTabDisabled")}});this.own(c);var f=e.getLocalization("dijit","common"),i=this;c.addChild(new a({label:f.itemClose,ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir,onClick:function(){var a=b.byNode(this.getParent().currentTarget);i.onCloseButtonClick(a.page)}}))}});
+f.TabButton=l;return f})},"dijit/layout/StackController":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom-class,dojo/_base/event,dojo/keys,dojo/_base/lang,dojo/on,../focus,../registry,../_Widget,../_TemplatedMixin,../_Container,../form/ToggleButton,dojo/i18n!../nls/common".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,p){p=k("dijit.layout._StackButton",p,{tabIndex:"-1",closeButton:!1,_aria_attr:"aria-selected",buildRendering:function(a){this.inherited(arguments);(this.focusNode||this.domNode).setAttribute("role",
+"tab")}});k=k("dijit.layout.StackController",[a,l,d],{baseClass:"dijitStackController",templateString:"<span role='tablist' data-dojo-attach-event='onkeypress'></span>",containerId:"",buttonWidget:p,buttonWidgetCloseClass:"dijitStackCloseButton",constructor:function(){this.pane2button={}},postCreate:function(){this.inherited(arguments);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");this.connect(this.containerNode,"click",function(a){var b=g.getEnclosingWidget(a.target);if(b!=this.containerNode&&!b.disabled&&b.page)for(a=a.target;a!==this.containerNode;a=a.parentNode)if(h.contains(a,this.buttonWidgetCloseClass)){this.onCloseButtonClick(b.page);break}else if(a==b.domNode){this.onButtonClick(b.page);break}})},onStartup:function(a){f.forEach(a.children,
+this.onAddChild,this);if(a.selected)this.onSelectChild(a.selected);var b=g.byId(this.containerId).containerNode,c=this.pane2button,a={title:"label",showtitle:"showLabel",iconclass:"iconClass",closable:"closeButton",tooltip:"title",disabled:"disabled"},d=function(a,d){return i(b,"attrmodified-"+a,function(a){var b=c[a.detail&&a.detail.widget&&a.detail.widget.id];b&&b.set(d,a.detail.newValue)})},e;for(e in a)this.own(d(e,a[e]))},destroy:function(){for(var a in this.pane2button)this.onRemoveChild(g.byId(a));
+this.inherited(arguments)},onAddChild:function(a,b){var d=new (c.isString(this.buttonWidget)?c.getObject(this.buttonWidget):this.buttonWidget)({id:this.id+"_"+a.id,name:this.id+"_"+a.id,label:a.title,disabled:a.disabled,ownerDocument:this.ownerDocument,dir:a.dir,lang:a.lang,textDir:a.textDir,showLabel:a.showTitle,iconClass:a.iconClass,closeButton:a.closable,title:a.tooltip,page:a});this.addChild(d,b);this.pane2button[a.id]=d;a.controlButton=d;if(!this._currentChild)this.onSelectChild(a)},onRemoveChild:function(a){if(this._currentChild===
+a)this._currentChild=null;var b=this.pane2button[a.id];b&&(this.removeChild(b),delete this.pane2button[a.id],b.destroy());delete a.controlButton},onSelectChild:function(a){if(a){if(this._currentChild){var b=this.pane2button[this._currentChild.id];b.set("checked",!1);b.focusNode.setAttribute("tabIndex","-1")}b=this.pane2button[a.id];b.set("checked",!0);this._currentChild=a;b.focusNode.setAttribute("tabIndex","0");g.byId(this.containerId).containerNode.setAttribute("aria-labelledby",b.id)}},onButtonClick:function(a){var c=
+this.pane2button[a.id];b.focus(c.focusNode);this._currentChild&&this._currentChild.id===a.id&&c.set("checked",!0);g.byId(this.containerId).selectChild(a)},onCloseButtonClick:function(a){g.byId(this.containerId).closeChild(a);this._currentChild&&(a=this.pane2button[this._currentChild.id])&&b.focus(a.focusNode||a.domNode)},adjacent:function(a){if(!this.isLeftToRight()&&(!this.tabPosition||/top|bottom/.test(this.tabPosition)))a=!a;var b=this.getChildren(),c=f.indexOf(b,this.pane2button[this._currentChild.id]),
+d=b[c],g;do c=(c+(a?1:b.length-1))%b.length,g=b[c];while(g.disabled&&g!=d);return g},onkeypress:function(a){if(!this.disabled&&!a.altKey){var b=null;if(a.ctrlKey||!a._djpage){switch(a.charOrCode){case e.LEFT_ARROW:case e.UP_ARROW:a._djpage||(b=!1);break;case e.PAGE_UP:a.ctrlKey&&(b=!1);break;case e.RIGHT_ARROW:case e.DOWN_ARROW:a._djpage||(b=!0);break;case e.PAGE_DOWN:a.ctrlKey&&(b=!0);break;case e.HOME:for(var c=this.getChildren(),d=0;d<c.length;d++){var g=c[d];if(!g.disabled){this.onButtonClick(g.page);
+break}}j.stop(a);break;case e.END:c=this.getChildren();for(d=c.length-1;0<=d;d--)if(g=c[d],!g.disabled){this.onButtonClick(g.page);break}j.stop(a);break;case e.DELETE:if(this._currentChild.closable)this.onCloseButtonClick(this._currentChild);j.stop(a);break;default:if(a.ctrlKey)if(a.charOrCode===e.TAB)this.onButtonClick(this.adjacent(!a.shiftKey).page),j.stop(a);else if("w"==a.charOrCode){if(this._currentChild.closable)this.onCloseButtonClick(this._currentChild);j.stop(a)}}null!==b&&(this.onButtonClick(this.adjacent(b).page),
+j.stop(a))}}},onContainerKeyPress:function(a){a.e._djpage=a.page;this.onkeypress(a.e)}});k.StackButton=p;return k})},"dijit/form/ToggleButton":function(){define(["dojo/_base/declare","dojo/_base/kernel","./Button","./_ToggleButtonMixin"],function(f,k,h,j){return f("dijit.form.ToggleButton",[h,j],{baseClass:"dijitToggleButton",setChecked:function(e){k.deprecated("setChecked("+e+") is deprecated. Use set('checked',"+e+") instead.","","2.0");this.set("checked",e)}})})},"dijit/form/_ToggleButtonMixin":function(){define(["dojo/_base/declare",
+"dojo/dom-attr"],function(f,k){return f("dijit.form._ToggleButtonMixin",null,{checked:!1,_aria_attr:"aria-pressed",_onClick:function(f){var j=this.checked;this._set("checked",!j);var e=this.inherited(arguments);this.set("checked",e?this.checked:j);return e},_setCheckedAttr:function(f,j){this._set("checked",f);k.set(this.focusNode||this.domNode,"checked",f);(this.focusNode||this.domNode).setAttribute(this._aria_attr,f?"true":"false");this._handleOnChange(f,j)},reset:function(){this._hasBeenBlurred=
!1;this.set("checked",this.params.checked||!1)}})})},"url:dijit/layout/templates/_TabButton.html":'<div role="presentation" data-dojo-attach-point="titleNode,innerDiv,tabContent" class="dijitTabInner dijitTabContent">\n\t<img src="${_blankGif}" alt="" class="dijitIcon dijitTabButtonIcon" data-dojo-attach-point=\'iconNode\'/>\n\t<span data-dojo-attach-point=\'containerNode,focusNode\' class=\'tabLabel\'></span>\n\t<span class="dijitInline dijitTabCloseButton dijitTabCloseIcon" data-dojo-attach-point=\'closeNode\'\n\t\t role="presentation">\n\t\t<span data-dojo-attach-point=\'closeText\' class=\'dijitTabCloseText\'>[x]</span\n\t\t\t\t></span>\n</div>\n',
-"dijit/layout/ScrollingTabController":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom-class,dojo/dom-geometry,dojo/dom-style,dojo/_base/fx,dojo/_base/lang,dojo/on,dojo/query,dojo/sniff,../registry,dojo/text!./templates/ScrollingTabController.html,dojo/text!./templates/_ScrollingTabControllerButton.html,./TabController,./utils,../_WidgetsInTemplateMixin,../Menu,../MenuItem,../form/Button,../_HasDropDown,dojo/NodeList-dom".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o,r,q,v,s){d=
-j("dijit.layout.ScrollingTabController",[m,o],{baseClass:"dijitTabController dijitScrollingTabController",templateString:d,useMenu:!0,useSlider:!0,tabStripClass:"",widgetsInTemplate:!0,_minScroll:5,_setClassAttr:{node:"containerNode",type:"class"},buildRendering:function(){this.inherited(arguments);var a=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",i.add(a,"tabStrip-disabled");i.add(this.tablistWrapper,this.tabStripClass)},onStartup:function(){this.inherited(arguments);c.set(this.domNode,"visibility","");this._postStartup=!0;this.own(b(this.containerNode,"attrmodified-label, attrmodified-iconclass",h.hitch(this,function(){this._dim&&this.resize(this._dim)})))},onAddChild:function(a,b){this.inherited(arguments);c.set(this.containerNode,"width",c.get(this.containerNode,"width")+200+"px")},onRemoveChild:function(a,b){if(this._selectedTab===
-this.pane2button[a.id].domNode)this._selectedTab=null;this.inherited(arguments)},_initButtons:function(){this._btnWidth=0;this._buttons=f("> .tabStripButton",this.domNode).filter(function(a){if(this.useMenu&&a==this._menuBtn.domNode||this.useSlider&&(a==this._rightBtn.domNode||a==this._leftBtn.domNode))return this._btnWidth+=l.getMarginSize(a).w,!0;c.set(a,"display","none");return!1},this)},_getTabsWidth:function(){var a=this.getChildren();if(a.length){var b=a[this.isLeftToRight()?0:a.length-1].domNode,
-a=a[this.isLeftToRight()?a.length-1:0].domNode;return a.offsetLeft+a.offsetWidth-b.offsetLeft}return 0},_enableBtn:function(a){var b=this._getTabsWidth(),a=a||c.get(this.scrollNode,"width");return 0<b&&a<b},resize:function(a){this._dim=a;this.scrollNode.style.height="auto";var b=this._contentBox=n.marginBox2contentBox(this.domNode,{h:0,w:a.w});b.h=this.scrollNode.offsetHeight;l.setContentSize(this.domNode,b);this._buttons.style("display",this._enableBtn(this._contentBox.w)?"":"none");this._leftBtn.layoutAlign=
+"dijit/layout/ScrollingTabController":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom-class,dojo/dom-geometry,dojo/dom-style,dojo/_base/fx,dojo/_base/lang,dojo/on,dojo/query,dojo/sniff,../registry,dojo/text!./templates/ScrollingTabController.html,dojo/text!./templates/_ScrollingTabControllerButton.html,./TabController,./utils,../_WidgetsInTemplateMixin,../Menu,../MenuItem,../form/Button,../_HasDropDown,dojo/NodeList-dom".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o,r,q,v,s){d=
+k("dijit.layout.ScrollingTabController",[m,o],{baseClass:"dijitTabController dijitScrollingTabController",templateString:d,useMenu:!0,useSlider:!0,tabStripClass:"",widgetsInTemplate:!0,_minScroll:5,_setClassAttr:{node:"containerNode",type:"class"},buildRendering:function(){this.inherited(arguments);var a=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",h.add(a,"tabStrip-disabled");h.add(this.tablistWrapper,this.tabStripClass)},onStartup:function(){this.inherited(arguments);e.set(this.domNode,"visibility","");this._postStartup=!0;this.own(b(this.containerNode,"attrmodified-label, attrmodified-iconclass",i.hitch(this,function(){this._dim&&this.resize(this._dim)})))},onAddChild:function(a,b){this.inherited(arguments);e.set(this.containerNode,"width",e.get(this.containerNode,"width")+200+"px")},onRemoveChild:function(a,b){if(this._selectedTab===
+this.pane2button[a.id].domNode)this._selectedTab=null;this.inherited(arguments)},_initButtons:function(){this._btnWidth=0;this._buttons=g("> .tabStripButton",this.domNode).filter(function(a){if(this.useMenu&&a==this._menuBtn.domNode||this.useSlider&&(a==this._rightBtn.domNode||a==this._leftBtn.domNode))return this._btnWidth+=j.getMarginSize(a).w,!0;e.set(a,"display","none");return!1},this)},_getTabsWidth:function(){var a=this.getChildren();if(a.length){var b=a[this.isLeftToRight()?0:a.length-1].domNode,
+a=a[this.isLeftToRight()?a.length-1:0].domNode;return a.offsetLeft+a.offsetWidth-b.offsetLeft}return 0},_enableBtn:function(a){var b=this._getTabsWidth(),a=a||e.get(this.scrollNode,"width");return 0<b&&a<b},resize:function(a){this._dim=a;this.scrollNode.style.height="auto";var b=this._contentBox=n.marginBox2contentBox(this.domNode,{h:0,w:a.w});b.h=this.scrollNode.offsetHeight;j.setContentSize(this.domNode,b);this._buttons.style("display",this._enableBtn(this._contentBox.w)?"":"none");this._leftBtn.layoutAlign=
"left";this._rightBtn.layoutAlign="right";this._menuBtn.layoutAlign=this.isLeftToRight()?"right":"left";n.layoutChildren(this.domNode,this._contentBox,[this._menuBtn,this._leftBtn,this._rightBtn,{domNode:this.scrollNode,layoutAlign:"client"}]);if(this._selectedTab)this._anim&&"playing"==this._anim.status()&&this._anim.stop(),this.scrollNode.scrollLeft=this._convertToScrollLeft(this._getScrollForSelectedTab());this._setButtonClass(this._getScroll());this._postResize=!0;return{h:this._contentBox.h,
-w:a.w}},_getScroll:function(){return this.isLeftToRight()||8>a("ie")||a("ie")&&a("quirks")||a("webkit")?this.scrollNode.scrollLeft:c.get(this.containerNode,"width")-c.get(this.scrollNode,"width")+(8<=a("ie")?-1:1)*this.scrollNode.scrollLeft},_convertToScrollLeft:function(b){if(this.isLeftToRight()||8>a("ie")||a("ie")&&a("quirks")||a("webkit"))return b;var d=c.get(this.containerNode,"width")-c.get(this.scrollNode,"width");return(8<=a("ie")?-1:1)*(b-d)},onSelectChild:function(a){var b=this.pane2button[a.id];
-if(b&&a){b=b.domNode;if(b!=this._selectedTab&&(this._selectedTab=b,this._postResize)){var d=this._getScroll();(d>b.offsetLeft||d+c.get(this.scrollNode,"width")<b.offsetLeft+c.get(b,"width"))&&this.createSmoothScroll().play()}this.inherited(arguments)}},_getScrollBounds:function(){var a=this.getChildren(),b=c.get(this.scrollNode,"width"),d=c.get(this.containerNode,"width")-b,f=this._getTabsWidth();if(a.length&&f>b)return{min:this.isLeftToRight()?0:a[a.length-1].domNode.offsetLeft,max:this.isLeftToRight()?
-a[a.length-1].domNode.offsetLeft+a[a.length-1].domNode.offsetWidth-b:d};a=this.isLeftToRight()?0:d;return{min:a,max:a}},_getScrollForSelectedTab:function(){var a=this._selectedTab,b=c.get(this.scrollNode,"width"),d=this._getScrollBounds(),a=a.offsetLeft+c.get(a,"width")/2-b/2;return a=Math.min(Math.max(a,d.min),d.max)},createSmoothScroll:function(a){if(0<arguments.length)var b=this._getScrollBounds(),a=Math.min(Math.max(a,b.min),b.max);else a=this._getScrollForSelectedTab();this._anim&&"playing"==
-this._anim.status()&&this._anim.stop();var c=this,d=this.scrollNode,f=new g.Animation({beforeBegin:function(){this.curve&&delete this.curve;var b=d.scrollLeft,e=c._convertToScrollLeft(a);f.curve=new g._Line(b,e)},onAnimate:function(a){d.scrollLeft=a}});this._anim=f;this._setButtonClass(a);return f},_getBtnNode:function(a){for(a=a.target;a&&!i.contains(a,"tabStripButton");)a=a.parentNode;return a},doSlideRight:function(a){this.doSlide(1,this._getBtnNode(a))},doSlideLeft:function(a){this.doSlide(-1,
-this._getBtnNode(a))},doSlide:function(a,b){if(!b||!i.contains(b,"dijitTabDisabled")){var d=0.75*c.get(this.scrollNode,"width")*a,d=this._getScroll()+d;this._setButtonClass(d);this.createSmoothScroll(d).play()}},_setButtonClass:function(a){var b=this._getScrollBounds();this._leftBtn.set("disabled",a<=b.min);this._rightBtn.set("disabled",a>=b.max)}});p=j("dijit.layout._ScrollingTabControllerButtonMixin",null,{baseClass:"dijitTab tabStripButton",templateString:p,tabIndex:"",isFocusable:function(){return!1}});
-j("dijit.layout._ScrollingTabControllerButton",[v,p]);j("dijit.layout._ScrollingTabControllerMenuButton",[v,s,p],{containerId:"",tabIndex:"-1",isLoaded:function(){return!1},loadDropDown:function(a){this.dropDown=new r({id:this.containerId+"_menu",ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir});var b=k.byId(this.containerId);e.forEach(b.getChildren(),function(a){this.dropDown.addChild(new q({id:a.id+"_stcMi",label:a.title,iconClass:a.iconClass,disabled:a.disabled,
+w:a.w}},_getScroll:function(){return this.isLeftToRight()||8>a("ie")||a("ie")&&a("quirks")||a("webkit")?this.scrollNode.scrollLeft:e.get(this.containerNode,"width")-e.get(this.scrollNode,"width")+(8<=a("ie")?-1:1)*this.scrollNode.scrollLeft},_convertToScrollLeft:function(b){if(this.isLeftToRight()||8>a("ie")||a("ie")&&a("quirks")||a("webkit"))return b;var c=e.get(this.containerNode,"width")-e.get(this.scrollNode,"width");return(8<=a("ie")?-1:1)*(b-c)},onSelectChild:function(a){var b=this.pane2button[a.id];
+if(b&&a){b=b.domNode;if(b!=this._selectedTab&&(this._selectedTab=b,this._postResize)){var c=this._getScroll();(c>b.offsetLeft||c+e.get(this.scrollNode,"width")<b.offsetLeft+e.get(b,"width"))&&this.createSmoothScroll().play()}this.inherited(arguments)}},_getScrollBounds:function(){var a=this.getChildren(),b=e.get(this.scrollNode,"width"),c=e.get(this.containerNode,"width")-b,d=this._getTabsWidth();if(a.length&&d>b)return{min:this.isLeftToRight()?0:a[a.length-1].domNode.offsetLeft,max:this.isLeftToRight()?
+a[a.length-1].domNode.offsetLeft+a[a.length-1].domNode.offsetWidth-b:c};a=this.isLeftToRight()?0:c;return{min:a,max:a}},_getScrollForSelectedTab:function(){var a=this._selectedTab,b=e.get(this.scrollNode,"width"),c=this._getScrollBounds(),a=a.offsetLeft+e.get(a,"width")/2-b/2;return a=Math.min(Math.max(a,c.min),c.max)},createSmoothScroll:function(a){if(0<arguments.length)var b=this._getScrollBounds(),a=Math.min(Math.max(a,b.min),b.max);else a=this._getScrollForSelectedTab();this._anim&&"playing"==
+this._anim.status()&&this._anim.stop();var d=this,g=this.scrollNode,e=new c.Animation({beforeBegin:function(){this.curve&&delete this.curve;var b=g.scrollLeft,f=d._convertToScrollLeft(a);e.curve=new c._Line(b,f)},onAnimate:function(a){g.scrollLeft=a}});this._anim=e;this._setButtonClass(a);return e},_getBtnNode:function(a){for(a=a.target;a&&!h.contains(a,"tabStripButton");)a=a.parentNode;return a},doSlideRight:function(a){this.doSlide(1,this._getBtnNode(a))},doSlideLeft:function(a){this.doSlide(-1,
+this._getBtnNode(a))},doSlide:function(a,b){if(!b||!h.contains(b,"dijitTabDisabled")){var c=0.75*e.get(this.scrollNode,"width")*a,c=this._getScroll()+c;this._setButtonClass(c);this.createSmoothScroll(c).play()}},_setButtonClass:function(a){var b=this._getScrollBounds();this._leftBtn.set("disabled",a<=b.min);this._rightBtn.set("disabled",a>=b.max)}});p=k("dijit.layout._ScrollingTabControllerButtonMixin",null,{baseClass:"dijitTab tabStripButton",templateString:p,tabIndex:"",isFocusable:function(){return!1}});
+k("dijit.layout._ScrollingTabControllerButton",[v,p]);k("dijit.layout._ScrollingTabControllerMenuButton",[v,s,p],{containerId:"",tabIndex:"-1",isLoaded:function(){return!1},loadDropDown:function(a){this.dropDown=new r({id:this.containerId+"_menu",ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir});var b=l.byId(this.containerId);f.forEach(b.getChildren(),function(a){this.dropDown.addChild(new q({id:a.id+"_stcMi",label:a.title,iconClass:a.iconClass,disabled:a.disabled,
ownerDocument:this.ownerDocument,dir:a.dir,lang:a.lang,textDir:a.textDir,onClick:function(){b.selectChild(a)}}))},this);a()},closeDropDown:function(a){this.inherited(arguments);this.dropDown&&(this.dropDown.destroyRecursive(),delete this.dropDown)}});return d})},"url:dijit/layout/templates/ScrollingTabController.html":'<div class="dijitTabListContainer-${tabPosition}" style="visibility:hidden">\n\t<div data-dojo-type="dijit.layout._ScrollingTabControllerMenuButton"\n\t\t\tclass="tabStripButton-${tabPosition}"\n\t\t\tid="${id}_menuBtn"\n\t\t\tdata-dojo-props="containerId: \'${containerId}\', iconClass: \'dijitTabStripMenuIcon\',\n\t\t\t\t\tdropDownPosition: [\'below-alt\', \'above-alt\']"\n\t\t\tdata-dojo-attach-point="_menuBtn" showLabel="false" title="">&#9660;</div>\n\t<div data-dojo-type="dijit.layout._ScrollingTabControllerButton"\n\t\t\tclass="tabStripButton-${tabPosition}"\n\t\t\tid="${id}_leftBtn"\n\t\t\tdata-dojo-props="iconClass:\'dijitTabStripSlideLeftIcon\', showLabel:false, title:\'\'"\n\t\t\tdata-dojo-attach-point="_leftBtn" data-dojo-attach-event="onClick: doSlideLeft">&#9664;</div>\n\t<div data-dojo-type="dijit.layout._ScrollingTabControllerButton"\n\t\t\tclass="tabStripButton-${tabPosition}"\n\t\t\tid="${id}_rightBtn"\n\t\t\tdata-dojo-props="iconClass:\'dijitTabStripSlideRightIcon\', showLabel:false, title:\'\'"\n\t\t\tdata-dojo-attach-point="_rightBtn" data-dojo-attach-event="onClick: doSlideRight">&#9654;</div>\n\t<div class=\'dijitTabListWrapper\' data-dojo-attach-point=\'tablistWrapper\'>\n\t\t<div role=\'tablist\' data-dojo-attach-event=\'onkeypress:onkeypress\'\n\t\t\t\tdata-dojo-attach-point=\'containerNode\' class=\'nowrapTabStrip\'></div>\n\t</div>\n</div>',
"url:dijit/layout/templates/_ScrollingTabControllerButton.html":'<div data-dojo-attach-event="onclick:_onClick" class="dijitTabInnerDiv dijitTabContent dijitButtonContents" data-dojo-attach-point="focusNode">\n\t<img role="presentation" alt="" src="${_blankGif}" class="dijitTabStripIcon" data-dojo-attach-point="iconNode"/>\n\t<span data-dojo-attach-point="containerNode,titleNode" class="dijitButtonText"></span>\n</div>',"dijit/_WidgetsInTemplateMixin":function(){define(["dojo/_base/array","dojo/_base/declare",
-"dojo/parser"],function(e,j,i){return j("dijit._WidgetsInTemplateMixin",null,{_earlyTemplatedStartup:!1,widgetsInTemplate:!0,_beforeFillContent:function(){if(this.widgetsInTemplate){var e=this._startupWidgets=i.parse(this.domNode,{noStart:!this._earlyTemplatedStartup,template:!0,inherited:{dir:this.dir,lang:this.lang,textDir:this.textDir},propsThis:this,scope:"dojo"});if(!e.isFulfilled())throw Error(this.declaredClass+": parser returned unfilled promise (probably waiting for module auto-load), unsupported by _WidgetsInTemplateMixin. Must pre-load all supporting widgets before instantiation.");
-this._attachTemplateNodes(e,function(c,g){return c[g]})}},startup:function(){e.forEach(this._startupWidgets,function(e){e&&!e._started&&e.startup&&e.startup()});this.inherited(arguments)}})})},"dijit/_HasDropDown":function(){define("dojo/_base/declare,dojo/_base/Deferred,dojo/_base/event,dojo/dom,dojo/dom-attr,dojo/dom-class,dojo/dom-geometry,dojo/dom-style,dojo/has,dojo/keys,dojo/_base/lang,dojo/on,dojo/window,./registry,./focus,./popup,./_FocusMixin".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,
-p,m,n,o,r){return e("dijit._HasDropDown",r,{_buttonNode:null,_arrowWrapperNode:null,_popupStateNode:null,_aroundNode:null,dropDown:null,autoWidth:!0,forceWidth:!1,maxHeight:0,dropDownPosition:["below","above"],_stopClickEvents:!0,_onDropDownMouseDown:function(a){if(!this.disabled&&!this.readOnly)a.preventDefault(),this._docHandler=this.connect(this.ownerDocument,"mouseup","_onDropDownMouseUp"),this.toggleDropDown()},_onDropDownMouseUp:function(a){a&&this._docHandler&&this.disconnect(this._docHandler);
-var b=this.dropDown,c=!1;if(a&&this._opened){var d=h.position(this._buttonNode,!0);if(!(a.pageX>=d.x&&a.pageX<=d.x+d.w)||!(a.pageY>=d.y&&a.pageY<=d.y+d.h)){for(d=a.target;d&&!c;)g.contains(d,"dijitPopup")?c=!0:d=d.parentNode;if(c){d=a.target;if(b.onItemClick){for(var e;d&&!(e=m.byNode(d));)d=d.parentNode;if(e&&e.onClick&&e.getParent)e.getParent().onItemClick(e,a)}return}}}if(this._opened){if(b.focus&&!1!==b.autoFocus)this._focusDropDownTimer=this.defer(function(){b.focus();delete this._focusDropDownTimer})}else this.defer("focus");
-if(f("ios"))this._justGotMouseUp=!0,this.defer(function(){this._justGotMouseUp=!1})},_onDropDownClick:function(a){f("touch")&&!this._justGotMouseUp&&(this._onDropDownMouseDown(a),this._onDropDownMouseUp(a));this._stopClickEvents&&i.stop(a)},buildRendering:function(){this.inherited(arguments);this._buttonNode=this._buttonNode||this.focusNode||this.domNode;this._popupStateNode=this._popupStateNode||this.focusNode||this._buttonNode;var a={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";g.add(this._arrowWrapperNode||this._buttonNode,"dijit"+a+"ArrowButton")},postCreate:function(){this.inherited(arguments);this.own(d(this._buttonNode,"mousedown",k.hitch(this,"_onDropDownMouseDown")),d(this._buttonNode,"click",k.hitch(this,"_onDropDownClick")),d(this.focusNode,"keydown",k.hitch(this,"_onKey")),d(this.focusNode,"keyup",k.hitch(this,"_onKeyUp")))},destroy:function(){this.dropDown&&
-(this.dropDown._destroyed||this.dropDown.destroyRecursive(),delete this.dropDown);this.inherited(arguments)},_onKey:function(b){if(!this.disabled&&!this.readOnly){var c=this.dropDown,d=b.target;if(c&&this._opened&&c.handleKey&&!1===c.handleKey(b))i.stop(b);else if(c&&this._opened&&b.keyCode==a.ESCAPE)this.closeDropDown(),i.stop(b);else if(!this._opened&&(b.keyCode==a.DOWN_ARROW||(b.keyCode==a.ENTER||b.keyCode==a.SPACE)&&("input"!==(d.tagName||"").toLowerCase()||d.type&&"text"!==d.type.toLowerCase())))this._toggleOnKeyUp=
-!0,i.stop(b)}},_onKeyUp:function(){if(this._toggleOnKeyUp){delete this._toggleOnKeyUp;this.toggleDropDown();var a=this.dropDown;a&&a.focus&&this.defer(k.hitch(a,"focus"),1)}},_onBlur:function(){this.closeDropDown(n.curNode&&this.dropDown&&l.isDescendant(n.curNode,this.dropDown.domNode));this.inherited(arguments)},isLoaded:function(){return!0},loadDropDown:function(a){a()},loadAndOpenDropDown:function(){var a=new j,b=k.hitch(this,function(){this.openDropDown();a.resolve(this.dropDown)});this.isLoaded()?
-b():this.loadDropDown(b);return a},toggleDropDown:function(){!this.disabled&&!this.readOnly&&(this._opened?this.closeDropDown():this.loadAndOpenDropDown())},openDropDown:function(){var a=this.dropDown,d=a.domNode,f=this._aroundNode||this.domNode,e=this;if(!this._preparedNode){this._preparedNode=!0;if(d.style.width)this._explicitDDWidth=!0;if(d.style.height)this._explicitDDHeight=!0}if(this.maxHeight||this.forceWidth||this.autoWidth){var m={display:"",visibility:"hidden"};if(!this._explicitDDWidth)m.width=
-"";if(!this._explicitDDHeight)m.height="";b.set(d,m);m=this.maxHeight;if(-1==m)var m=p.getBox(this.ownerDocument),i=h.position(f,!1),m=Math.floor(Math.max(i.y,m.h-(i.y+i.h)));o.moveOffScreen(a);a.startup&&!a._started&&a.startup();var i=h.getMarginSize(d),l=m&&i.h>m;b.set(d,{overflowX:"visible",overflowY:l?"auto":"visible"});l?(i.h=m,"w"in i&&(i.w+=16)):delete i.h;this.forceWidth?i.w=f.offsetWidth:this.autoWidth?i.w=Math.max(i.w,f.offsetWidth):delete i.w;k.isFunction(a.resize)?a.resize(i):h.setMarginBox(d,
-i)}a=o.open({parent:this,popup:a,around:f,orient:this.dropDownPosition,onExecute:function(){e.closeDropDown(!0)},onCancel:function(){e.closeDropDown(!0)},onClose:function(){c.set(e._popupStateNode,"popupActive",!1);g.remove(e._popupStateNode,"dijitHasDropDownOpen");e._set("_opened",!1)}});c.set(this._popupStateNode,"popupActive","true");g.add(this._popupStateNode,"dijitHasDropDownOpen");this._set("_opened",!0);this.domNode.setAttribute("aria-expanded","true");return a},closeDropDown:function(a){this._focusDropDownTimer&&
-(this._focusDropDownTimer.remove(),delete this._focusDropDownTimer);if(this._opened)this.domNode.setAttribute("aria-expanded","false"),a&&this.focus(),o.close(this.dropDown),this._opened=!1}})})},"dijit/form/RadioButton":function(){define(["dojo/_base/declare","./CheckBox","./_RadioButtonMixin"],function(e,j,i){return e("dijit.form.RadioButton",[j,i],{baseClass:"dijitRadio"})})},"dijit/form/CheckBox":function(){define("require,dojo/_base/declare,dojo/dom-attr,dojo/has,dojo/query,dojo/ready,./ToggleButton,./_CheckBoxMixin,dojo/text!./templates/CheckBox.html,dojo/NodeList-dom".split(","),
-function(e,j,i,l,c,g,h,b,f){l("dijit-legacy-requires")&&g(0,function(){e(["dijit/form/RadioButton"])});return j("dijit.form.CheckBox",[h,b],{templateString:f,baseClass:"dijitCheckBox",_setValueAttr:function(a,b){"string"==typeof a&&(this.inherited(arguments),a=!0);this._created&&this.set("checked",a,b)},_getValueAttr:function(){return this.checked?this.value:!1},_setIconClassAttr:null,postMixInProperties:function(){this.inherited(arguments);this.checkedAttrSetting=this.checked?"checked":""},_fillContent:function(){},
-_onFocus:function(){this.id&&c("label[for='"+this.id+"']").addClass("dijitFocusedLabel");this.inherited(arguments)},_onBlur:function(){this.id&&c("label[for='"+this.id+"']").removeClass("dijitFocusedLabel");this.inherited(arguments)}})})},"dijit/form/_CheckBoxMixin":function(){define(["dojo/_base/declare","dojo/dom-attr","dojo/_base/event"],function(e,j,i){return e("dijit.form._CheckBoxMixin",null,{type:"checkbox",value:"on",readOnly:!1,_aria_attr:"aria-checked",_setReadOnlyAttr:function(e){this._set("readOnly",
-e);j.set(this.focusNode,"readOnly",e);this.focusNode.setAttribute("aria-readonly",e)},_setLabelAttr:void 0,_getSubmitValue:function(e){return!e&&0!==e?"on":e},_setValueAttr:function(e){e=this._getSubmitValue(e);this._set("value",e);j.set(this.focusNode,"value",e)},reset:function(){this.inherited(arguments);this._set("value",this.params.value||"on");j.set(this.focusNode,"value",this.value)},_onClick:function(e){return this.readOnly?(i.stop(e),!1):this.inherited(arguments)}})})},"url:dijit/form/templates/CheckBox.html":'<div class="dijit dijitReset dijitInline" role="presentation"\n\t><input\n\t \t${!nameAttrSetting} type="${type}" ${checkedAttrSetting}\n\t\tclass="dijitReset dijitCheckBoxInput"\n\t\tdata-dojo-attach-point="focusNode"\n\t \tdata-dojo-attach-event="onclick:_onClick"\n/></div>\n',
-"dijit/form/_RadioButtonMixin":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom-attr,dojo/_base/event,dojo/_base/lang,dojo/query,../registry".split(","),function(e,j,i,l,c,g,h){return j("dijit.form._RadioButtonMixin",null,{type:"radio",_getRelatedWidgets:function(){var b=[];g("input[type=radio]",this.focusNode.form||this.ownerDocument).forEach(c.hitch(this,function(c){c.name==this.name&&c.form==this.focusNode.form&&(c=h.getEnclosingWidget(c))&&b.push(c)}));return b},_setCheckedAttr:function(b){this.inherited(arguments);
-this._created&&b&&e.forEach(this._getRelatedWidgets(),c.hitch(this,function(b){b!=this&&b.checked&&b.set("checked",!1)}))},_getSubmitValue:function(b){return null===b?"on":b},_onClick:function(b){if(this.checked||this.disabled)return l.stop(b),!1;return this.readOnly?(l.stop(b),e.forEach(this._getRelatedWidgets(),c.hitch(this,function(b){i.set(this.focusNode||this.domNode,"checked",b.checked)})),!1):this.inherited(arguments)}})})},"dijit/form/Select":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom-attr,dojo/dom-class,dojo/dom-geometry,dojo/_base/event,dojo/i18n,dojo/_base/lang,dojo/sniff,./_FormSelectWidget,../_HasDropDown,../Menu,../MenuItem,../MenuSeparator,../Tooltip,dojo/text!./templates/Select.html,dojo/i18n!./nls/validate".split(","),
-function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o){var r=j("dijit.form._SelectMenu",d,{autoFocus:!0,buildRendering:function(){this.inherited(arguments);var a=this.menuTableNode=this.domNode,b=this.domNode=this.ownerDocument.createElement("div");b.style.cssText="overflow-x: hidden; overflow-y: scroll";a.parentNode&&a.parentNode.replaceChild(b,a);l.remove(a,"dijitMenuTable");b.className=a.className+" dijitSelectMenu";a.className="dijitReset dijitMenuTable";a.setAttribute("role","listbox");b.setAttribute("role",
-"presentation");b.appendChild(a)},postCreate:function(){this.inherited(arguments);this.connect(this.domNode,"onselectstart",g.stop)},focus:function(){var a=!1,c=this.parentWidget.value;b.isArray(c)&&(c=c[c.length-1]);c&&e.forEach(this.parentWidget._getChildren(),function(b){b.option&&c===b.option.value&&(a=!0,this.focusChild(b,!1))},this);a||this.inherited(arguments)},resize:function(a){if(a&&(c.setMarginBox(this.domNode,a),"w"in a))this.menuTableNode.style.width="100%"}}),j=j("dijit.form.Select",
-[a,k],{baseClass:"dijitSelect dijitValidationTextBox",templateString:o,_buttonInputDisabled:f("ie")?"disabled":"",required:!1,state:"",message:"",tooltipPosition:[],emptyLabel:"&#160;",_isLoaded:!1,_childrenLoaded:!1,_fillContent:function(){this.inherited(arguments);if(this.options.length&&!this.value&&this.srcNodeRef){var a=this.srcNodeRef.selectedIndex||0;this.value=this.options[0<=a?a:0].value}this.dropDown=new r({id:this.id+"_menu",parentWidget:this});l.add(this.dropDown.domNode,this.baseClass.replace(/\s+|$/g,
+"dojo/parser"],function(f,k,h){return k("dijit._WidgetsInTemplateMixin",null,{_earlyTemplatedStartup:!1,widgetsInTemplate:!0,_beforeFillContent:function(){if(this.widgetsInTemplate){var f=this._startupWidgets=h.parse(this.domNode,{noStart:!this._earlyTemplatedStartup,template:!0,inherited:{dir:this.dir,lang:this.lang,textDir:this.textDir},propsThis:this,scope:"dojo"});if(!f.isFulfilled())throw Error(this.declaredClass+": parser returned unfilled promise (probably waiting for module auto-load), unsupported by _WidgetsInTemplateMixin. Must pre-load all supporting widgets before instantiation.");
+this._attachTemplateNodes(f,function(e,c){return e[c]})}},startup:function(){f.forEach(this._startupWidgets,function(f){f&&!f._started&&f.startup&&f.startup()});this.inherited(arguments)}})})},"dijit/_HasDropDown":function(){define("dojo/_base/declare,dojo/_base/Deferred,dojo/_base/event,dojo/dom,dojo/dom-attr,dojo/dom-class,dojo/dom-geometry,dojo/dom-style,dojo/has,dojo/keys,dojo/_base/lang,dojo/on,dojo/window,./registry,./focus,./popup,./_FocusMixin".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,
+p,m,n,o,r){return f("dijit._HasDropDown",r,{_buttonNode:null,_arrowWrapperNode:null,_popupStateNode:null,_aroundNode:null,dropDown:null,autoWidth:!0,forceWidth:!1,maxHeight:0,dropDownPosition:["below","above"],_stopClickEvents:!0,_onDropDownMouseDown:function(a){if(!this.disabled&&!this.readOnly)a.preventDefault(),this._docHandler=this.connect(this.ownerDocument,"mouseup","_onDropDownMouseUp"),this.toggleDropDown()},_onDropDownMouseUp:function(a){a&&this._docHandler&&this.disconnect(this._docHandler);
+var b=this.dropDown,d=!1;if(a&&this._opened){var e=i.position(this._buttonNode,!0);if(!(a.pageX>=e.x&&a.pageX<=e.x+e.w)||!(a.pageY>=e.y&&a.pageY<=e.y+e.h)){for(e=a.target;e&&!d;)c.contains(e,"dijitPopup")?d=!0:e=e.parentNode;if(d){e=a.target;if(b.onItemClick){for(var f;e&&!(f=m.byNode(e));)e=e.parentNode;if(f&&f.onClick&&f.getParent)f.getParent().onItemClick(f,a)}return}}}if(this._opened){if(b.focus&&!1!==b.autoFocus)this._focusDropDownTimer=this.defer(function(){b.focus();delete this._focusDropDownTimer})}else this.defer("focus");
+if(g("ios"))this._justGotMouseUp=!0,this.defer(function(){this._justGotMouseUp=!1})},_onDropDownClick:function(a){g("touch")&&!this._justGotMouseUp&&(this._onDropDownMouseDown(a),this._onDropDownMouseUp(a));this._stopClickEvents&&h.stop(a)},buildRendering:function(){this.inherited(arguments);this._buttonNode=this._buttonNode||this.focusNode||this.domNode;this._popupStateNode=this._popupStateNode||this.focusNode||this._buttonNode;var a={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";c.add(this._arrowWrapperNode||this._buttonNode,"dijit"+a+"ArrowButton")},postCreate:function(){this.inherited(arguments);this.own(d(this._buttonNode,"mousedown",l.hitch(this,"_onDropDownMouseDown")),d(this._buttonNode,"click",l.hitch(this,"_onDropDownClick")),d(this.focusNode,"keydown",l.hitch(this,"_onKey")),d(this.focusNode,"keyup",l.hitch(this,"_onKeyUp")))},destroy:function(){this.dropDown&&
+(this.dropDown._destroyed||this.dropDown.destroyRecursive(),delete this.dropDown);this.inherited(arguments)},_onKey:function(b){if(!this.disabled&&!this.readOnly){var c=this.dropDown,d=b.target;if(c&&this._opened&&c.handleKey&&!1===c.handleKey(b))h.stop(b);else if(c&&this._opened&&b.keyCode==a.ESCAPE)this.closeDropDown(),h.stop(b);else if(!this._opened&&(b.keyCode==a.DOWN_ARROW||(b.keyCode==a.ENTER||b.keyCode==a.SPACE)&&("input"!==(d.tagName||"").toLowerCase()||d.type&&"text"!==d.type.toLowerCase())))this._toggleOnKeyUp=
+!0,h.stop(b)}},_onKeyUp:function(){if(this._toggleOnKeyUp){delete this._toggleOnKeyUp;this.toggleDropDown();var a=this.dropDown;a&&a.focus&&this.defer(l.hitch(a,"focus"),1)}},_onBlur:function(){this.closeDropDown(n.curNode&&this.dropDown&&j.isDescendant(n.curNode,this.dropDown.domNode));this.inherited(arguments)},isLoaded:function(){return!0},loadDropDown:function(a){a()},loadAndOpenDropDown:function(){var a=new k,b=l.hitch(this,function(){this.openDropDown();a.resolve(this.dropDown)});this.isLoaded()?
+b():this.loadDropDown(b);return a},toggleDropDown:function(){!this.disabled&&!this.readOnly&&(this._opened?this.closeDropDown():this.loadAndOpenDropDown())},openDropDown:function(){var a=this.dropDown,d=a.domNode,g=this._aroundNode||this.domNode,f=this;if(!this._preparedNode){this._preparedNode=!0;if(d.style.width)this._explicitDDWidth=!0;if(d.style.height)this._explicitDDHeight=!0}if(this.maxHeight||this.forceWidth||this.autoWidth){var h={display:"",visibility:"hidden"};if(!this._explicitDDWidth)h.width=
+"";if(!this._explicitDDHeight)h.height="";b.set(d,h);h=this.maxHeight;if(-1==h)var h=p.getBox(this.ownerDocument),j=i.position(g,!1),h=Math.floor(Math.max(j.y,h.h-(j.y+j.h)));o.moveOffScreen(a);a.startup&&!a._started&&a.startup();var j=i.getMarginSize(d),k=h&&j.h>h;b.set(d,{overflowX:"visible",overflowY:k?"auto":"visible"});k?(j.h=h,"w"in j&&(j.w+=16)):delete j.h;this.forceWidth?j.w=g.offsetWidth:this.autoWidth?j.w=Math.max(j.w,g.offsetWidth):delete j.w;l.isFunction(a.resize)?a.resize(j):i.setMarginBox(d,
+j)}a=o.open({parent:this,popup:a,around:g,orient:this.dropDownPosition,onExecute:function(){f.closeDropDown(!0)},onCancel:function(){f.closeDropDown(!0)},onClose:function(){e.set(f._popupStateNode,"popupActive",!1);c.remove(f._popupStateNode,"dijitHasDropDownOpen");f._set("_opened",!1)}});e.set(this._popupStateNode,"popupActive","true");c.add(this._popupStateNode,"dijitHasDropDownOpen");this._set("_opened",!0);this.domNode.setAttribute("aria-expanded","true");return a},closeDropDown:function(a){this._focusDropDownTimer&&
+(this._focusDropDownTimer.remove(),delete this._focusDropDownTimer);if(this._opened)this.domNode.setAttribute("aria-expanded","false"),a&&this.focus(),o.close(this.dropDown),this._opened=!1}})})},"dijit/form/RadioButton":function(){define(["dojo/_base/declare","./CheckBox","./_RadioButtonMixin"],function(f,k,h){return f("dijit.form.RadioButton",[k,h],{baseClass:"dijitRadio"})})},"dijit/form/CheckBox":function(){define("require,dojo/_base/declare,dojo/dom-attr,dojo/has,dojo/query,dojo/ready,./ToggleButton,./_CheckBoxMixin,dojo/text!./templates/CheckBox.html,dojo/NodeList-dom".split(","),
+function(f,k,h,j,e,c,i,b,g){j("dijit-legacy-requires")&&c(0,function(){f(["dijit/form/RadioButton"])});return k("dijit.form.CheckBox",[i,b],{templateString:g,baseClass:"dijitCheckBox",_setValueAttr:function(a,b){"string"==typeof a&&(this.inherited(arguments),a=!0);this._created&&this.set("checked",a,b)},_getValueAttr:function(){return this.checked?this.value:!1},_setIconClassAttr:null,postMixInProperties:function(){this.inherited(arguments);this.checkedAttrSetting=this.checked?"checked":""},_fillContent:function(){},
+_onFocus:function(){this.id&&e("label[for='"+this.id+"']").addClass("dijitFocusedLabel");this.inherited(arguments)},_onBlur:function(){this.id&&e("label[for='"+this.id+"']").removeClass("dijitFocusedLabel");this.inherited(arguments)}})})},"dijit/form/_CheckBoxMixin":function(){define(["dojo/_base/declare","dojo/dom-attr","dojo/_base/event"],function(f,k,h){return f("dijit.form._CheckBoxMixin",null,{type:"checkbox",value:"on",readOnly:!1,_aria_attr:"aria-checked",_setReadOnlyAttr:function(f){this._set("readOnly",
+f);k.set(this.focusNode,"readOnly",f);this.focusNode.setAttribute("aria-readonly",f)},_setLabelAttr:void 0,_getSubmitValue:function(f){return!f&&0!==f?"on":f},_setValueAttr:function(f){f=this._getSubmitValue(f);this._set("value",f);k.set(this.focusNode,"value",f)},reset:function(){this.inherited(arguments);this._set("value",this.params.value||"on");k.set(this.focusNode,"value",this.value)},_onClick:function(f){return this.readOnly?(h.stop(f),!1):this.inherited(arguments)}})})},"url:dijit/form/templates/CheckBox.html":'<div class="dijit dijitReset dijitInline" role="presentation"\n\t><input\n\t \t${!nameAttrSetting} type="${type}" ${checkedAttrSetting}\n\t\tclass="dijitReset dijitCheckBoxInput"\n\t\tdata-dojo-attach-point="focusNode"\n\t \tdata-dojo-attach-event="onclick:_onClick"\n/></div>\n',
+"dijit/form/_RadioButtonMixin":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom-attr,dojo/_base/event,dojo/_base/lang,dojo/query,../registry".split(","),function(f,k,h,j,e,c,i){return k("dijit.form._RadioButtonMixin",null,{type:"radio",_getRelatedWidgets:function(){var b=[];c("input[type=radio]",this.focusNode.form||this.ownerDocument).forEach(e.hitch(this,function(c){c.name==this.name&&c.form==this.focusNode.form&&(c=i.getEnclosingWidget(c))&&b.push(c)}));return b},_setCheckedAttr:function(b){this.inherited(arguments);
+this._created&&b&&f.forEach(this._getRelatedWidgets(),e.hitch(this,function(b){b!=this&&b.checked&&b.set("checked",!1)}))},_getSubmitValue:function(b){return null===b?"on":b},_onClick:function(b){if(this.checked||this.disabled)return j.stop(b),!1;return this.readOnly?(j.stop(b),f.forEach(this._getRelatedWidgets(),e.hitch(this,function(b){h.set(this.focusNode||this.domNode,"checked",b.checked)})),!1):this.inherited(arguments)}})})},"dijit/form/Select":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom-attr,dojo/dom-class,dojo/dom-geometry,dojo/_base/event,dojo/i18n,dojo/_base/lang,dojo/sniff,./_FormSelectWidget,../_HasDropDown,../Menu,../MenuItem,../MenuSeparator,../Tooltip,dojo/text!./templates/Select.html,dojo/i18n!./nls/validate".split(","),
+function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o){var r=k("dijit.form._SelectMenu",d,{autoFocus:!0,buildRendering:function(){this.inherited(arguments);var a=this.menuTableNode=this.domNode,b=this.domNode=this.ownerDocument.createElement("div");b.style.cssText="overflow-x: hidden; overflow-y: scroll";a.parentNode&&a.parentNode.replaceChild(b,a);j.remove(a,"dijitMenuTable");b.className=a.className+" dijitSelectMenu";a.className="dijitReset dijitMenuTable";a.setAttribute("role","listbox");b.setAttribute("role",
+"presentation");b.appendChild(a)},postCreate:function(){this.inherited(arguments);this.connect(this.domNode,"onselectstart",c.stop)},focus:function(){var a=!1,c=this.parentWidget.value;b.isArray(c)&&(c=c[c.length-1]);c&&f.forEach(this.parentWidget._getChildren(),function(b){b.option&&c===b.option.value&&(a=!0,this.focusChild(b,!1))},this);a||this.inherited(arguments)},resize:function(a){if(a&&(e.setMarginBox(this.domNode,a),"w"in a))this.menuTableNode.style.width="100%"}}),k=k("dijit.form.Select",
+[a,l],{baseClass:"dijitSelect dijitValidationTextBox",templateString:o,_buttonInputDisabled:g("ie")?"disabled":"",required:!1,state:"",message:"",tooltipPosition:[],emptyLabel:"&#160;",_isLoaded:!1,_childrenLoaded:!1,_fillContent:function(){this.inherited(arguments);if(this.options.length&&!this.value&&this.srcNodeRef){var a=this.srcNodeRef.selectedIndex||0;this.value=this.options[0<=a?a:0].value}this.dropDown=new r({id:this.id+"_menu",parentWidget:this});j.add(this.dropDown.domNode,this.baseClass.replace(/\s+|$/g,
"Menu "))},_getMenuItemForOption:function(a){if(!a.value&&!a.label)return new m({ownerDocument:this.ownerDocument});var c=b.hitch(this,"_setValueAttr",a),a=new p({option:a,label:a.label||this.emptyLabel,onClick:c,ownerDocument:this.ownerDocument,dir:this.dir,disabled:a.disabled||!1});a.focusNode.setAttribute("role","option");return a},_addOptionItem:function(a){this.dropDown&&this.dropDown.addChild(this._getMenuItemForOption(a))},_getChildren:function(){return!this.dropDown?[]:this.dropDown.getChildren()},
-_loadChildren:function(a){!0===a?(this.dropDown&&delete this.dropDown.focusedChild,this.options.length?this.inherited(arguments):(e.forEach(this._getChildren(),function(a){a.destroyRecursive()}),this.dropDown.addChild(new p({ownerDocument:this.ownerDocument,label:this.emptyLabel})))):this._updateSelection();this._isLoaded=!1;this._childrenLoaded=!0;this._loadingStore||this._setValueAttr(this.value,!1)},_refreshState:function(){this._started&&this.validate(this.focused)},startup:function(){this.inherited(arguments);
-this._refreshState()},_setValueAttr:function(a){this.inherited(arguments);i.set(this.valueNode,"value",this.get("value"));this._refreshState()},_setDisabledAttr:function(a){this.inherited(arguments);this._refreshState()},_setRequiredAttr:function(a){this._set("required",a);this.focusNode.setAttribute("aria-required",a);this._refreshState()},_setOptionsAttr:function(a){this._isLoaded=!1;this._set("options",a)},_setDisplay:function(a){a=a||this.emptyLabel;this.containerNode.innerHTML='<span role="option" class="dijitReset dijitInline '+
+_loadChildren:function(a){!0===a?(this.dropDown&&delete this.dropDown.focusedChild,this.options.length?this.inherited(arguments):(f.forEach(this._getChildren(),function(a){a.destroyRecursive()}),this.dropDown.addChild(new p({ownerDocument:this.ownerDocument,label:this.emptyLabel})))):this._updateSelection();this._isLoaded=!1;this._childrenLoaded=!0;this._loadingStore||this._setValueAttr(this.value,!1)},_refreshState:function(){this._started&&this.validate(this.focused)},startup:function(){this.inherited(arguments);
+this._refreshState()},_setValueAttr:function(a){this.inherited(arguments);h.set(this.valueNode,"value",this.get("value"));this._refreshState()},_setDisabledAttr:function(a){this.inherited(arguments);this._refreshState()},_setRequiredAttr:function(a){this._set("required",a);this.focusNode.setAttribute("aria-required",a);this._refreshState()},_setOptionsAttr:function(a){this._isLoaded=!1;this._set("options",a)},_setDisplay:function(a){a=a||this.emptyLabel;this.containerNode.innerHTML='<span role="option" class="dijitReset dijitInline '+
this.baseClass.replace(/\s+|$/g,"Label ")+'">'+a+"</span>"},validate:function(a){a=this.disabled||this.isValid(a);this._set("state",a?"":this._hasBeenBlurred?"Error":"Incomplete");this.focusNode.setAttribute("aria-invalid",a?"false":"true");var b=a?"":this._missingMsg;b&&this.focused&&this._hasBeenBlurred?n.show(b,this.domNode,this.tooltipPosition,!this.isLeftToRight()):n.hide(this.domNode);this._set("message",b);return a},isValid:function(){return!this.required||0===this.value||!/^\s*$/.test(this.value||
-"")},reset:function(){this.inherited(arguments);n.hide(this.domNode);this._refreshState()},postMixInProperties:function(){this.inherited(arguments);this._missingMsg=h.getLocalization("dijit.form","validate",this.lang).missingMessage},postCreate:function(){this.inherited(arguments);this.connect(this.domNode,"onselectstart",g.stop);this.domNode.setAttribute("aria-expanded","false");9>f("ie")&&this.defer(function(){try{var a=domStyle.getComputedStyle(this.domNode);if(a){var b=a.fontFamily;if(b){var c=
-this.domNode.getElementsByTagName("INPUT");if(c)for(a=0;a<c.length;a++)c[a].style.fontFamily=b}}}catch(d){}})},_setStyleAttr:function(a){this.inherited(arguments);l.toggle(this.domNode,this.baseClass.replace(/\s+|$/g,"FixedWidth "),!!this.domNode.style.width)},isLoaded:function(){return this._isLoaded},loadDropDown:function(a){this._loadChildren(!0);this._isLoaded=!0;a()},closeDropDown:function(){this.inherited(arguments);if(this.dropDown&&this.dropDown.menuTableNode)this.dropDown.menuTableNode.style.width=
-""},destroy:function(a){this.dropDown&&!this.dropDown._destroyed&&(this.dropDown.destroyRecursive(a),delete this.dropDown);this.inherited(arguments)},_onFocus:function(){this.validate(!0);this.inherited(arguments)},_onBlur:function(){n.hide(this.domNode);this.inherited(arguments);this.validate(!1)}});j._Menu=r;return j})},"dijit/form/_FormSelectWidget":function(){define("dojo/_base/array,dojo/_base/Deferred,dojo/aspect,dojo/data/util/sorter,dojo/_base/declare,dojo/dom,dojo/dom-class,dojo/_base/kernel,dojo/_base/lang,dojo/query,dojo/when,dojo/store/util/QueryResults,./_FormValueWidget".split(","),
-function(e,j,i,l,c,g,h,b,f,a,k,d,p){return c("dijit.form._FormSelectWidget",p,{multiple:!1,options:null,store:null,query:null,queryOptions:null,labelAttr:"",onFetch:null,sortByLabel:!0,loadChildrenOnOpen:!1,onLoadDeferred:null,getOptions:function(a){var b=a,c=this.options||[],d=c.length;if(void 0===b)return c;if(f.isArray(b))return e.map(b,"return this.getOptions(item);",this);f.isObject(a)&&(e.some(this.options,function(a,c){return a===b||a.value&&a.value===b.value?(b=c,!0):!1})||(b=-1));if("string"==
-typeof b)for(a=0;a<d;a++)if(c[a].value===b){b=a;break}return"number"==typeof b&&0<=b&&b<d?this.options[b]:null},addOption:function(a){f.isArray(a)||(a=[a]);e.forEach(a,function(a){a&&f.isObject(a)&&this.options.push(a)},this);this._loadChildren()},removeOption:function(a){f.isArray(a)||(a=[a]);a=this.getOptions(a);e.forEach(a,function(a){if(a)this.options=e.filter(this.options,function(b){return b.value!==a.value||b.label!==a.label}),this._removeOptionItem(a)},this);this._loadChildren()},updateOption:function(a){f.isArray(a)||
-(a=[a]);e.forEach(a,function(a){var b=this.getOptions(a),c;if(b)for(c in a)b[c]=a[c]},this);this._loadChildren()},setStore:function(a,b,c){var g=this.store,c=c||{};if(g!==a){for(var h;h=this._notifyConnections.pop();)h.remove();if(!a.get&&(f.mixin(a,{_oldAPI:!0,get:function(a){var b=new j;this.fetchItemByIdentity({identity:a,onItem:function(a){b.resolve(a)},onError:function(a){b.reject(a)}});return b.promise},query:function(a,b){var c=new j(function(){e.abort&&e.abort()});c.total=new j;var e=this.fetch(f.mixin({query:a,
-onBegin:function(a){c.total.resolve(a)},onComplete:function(a){c.resolve(a)},onError:function(a){c.reject(a)}},b));return new d(c)}}),a.getFeatures()["dojo.data.api.Notification"]))this._notifyConnections=[i.after(a,"onNew",f.hitch(this,"_onNewItem"),!0),i.after(a,"onDelete",f.hitch(this,"_onDeleteItem"),!0),i.after(a,"onSet",f.hitch(this,"_onSetItem"),!0)];this._set("store",a)}this.options&&this.options.length&&this.removeOption(this.options);this._queryRes&&this._queryRes.close&&this._queryRes.close();
-c.query&&(this._set("query",c.query),this._set("queryOptions",c.queryOptions));if(a)this._loadingStore=!0,this.onLoadDeferred=new j,this._queryRes=a.query(this.query,this.queryOptions),k(this._queryRes,f.hitch(this,function(d){if(this.sortByLabel&&!c.sort&&d.length)if(d[0].getValue)d.sort(l.createSortFunction([{attribute:a.getLabelAttributes(d[0])[0]}],a));else{var g=this.labelAttr;d.sort(function(a,b){return a[g]>b[g]?1:b[g]>a[g]?-1:0})}c.onFetch&&(d=c.onFetch.call(this,d,c));e.forEach(d,function(a){this._addOptionForItem(a)},
-this);this._queryRes.observe&&this._queryRes.observe(f.hitch(this,function(a,b,c){b==c?this._onSetItem(a):(-1!=b&&this._onDeleteItem(a),-1!=c&&this._onNewItem(a))}),!0);this._loadingStore=!1;this.set("value","_pendingValue"in this?this._pendingValue:b);delete this._pendingValue;this.loadChildrenOnOpen?this._pseudoLoadChildren(d):this._loadChildren();this.onLoadDeferred.resolve(!0);this.onSetStore()}),function(a){this.onLoadDeferred.reject(a)});return g},_setValueAttr:function(a,b){this._onChangeActive||
-(b=null);if(this._loadingStore)this._pendingValue=a;else{var c=this.getOptions()||[];f.isArray(a)||(a=[a]);e.forEach(a,function(b,d){f.isObject(b)||(b+="");"string"===typeof b&&(a[d]=e.filter(c,function(a){return a.value===b})[0]||{value:"",label:""})},this);a=e.filter(a,function(a){return a&&a.value});if(!this.multiple&&(!a[0]||!a[0].value)&&c.length)a[0]=c[0];e.forEach(c,function(b){b.selected=e.some(a,function(a){return a.value===b.value})});var d=e.map(a,function(a){return a.value}),g=e.map(a,
-function(a){return a.label});"undefined"==typeof d||"undefined"==typeof d[0]||(this._setDisplay(this.multiple?g:g[0]),this.inherited(arguments,[this.multiple?d:d[0],b]),this._updateSelection())}},_getDisplayedValueAttr:function(){var a=this.get("value");f.isArray(a)||(a=[a]);a=e.map(this.getOptions(a),function(a){return a&&"label"in a?a.label:a?a.value:null},this);return this.multiple?a:a[0]},_loadChildren:function(){this._loadingStore||(e.forEach(this._getChildren(),function(a){a.destroyRecursive()}),
-e.forEach(this.options,this._addOptionItem,this),this._updateSelection())},_updateSelection:function(){this._set("value",this._getValueFromOpts());var a=this.value;f.isArray(a)||(a=[a]);a&&a[0]&&e.forEach(this._getChildren(),function(b){var c=e.some(a,function(a){return b.option&&a===b.option.value});h.toggle(b.domNode,this.baseClass.replace(/\s+|$/g,"SelectedOption "),c);b.domNode.setAttribute("aria-selected",c?"true":"false")},this)},_getValueFromOpts:function(){var a=this.getOptions()||[];if(!this.multiple&&
-a.length){var b=e.filter(a,function(a){return a.selected})[0];if(b&&b.value)return b.value;a[0].selected=!0;return a[0].value}return this.multiple?e.map(e.filter(a,function(a){return a.selected}),function(a){return a.value})||[]:""},_onNewItem:function(a,b){(!b||!b.parent)&&this._addOptionForItem(a)},_onDeleteItem:function(a){this.removeOption(this.store.getIdentity(a))},_onSetItem:function(a){this.updateOption(this._getOptionObjForItem(a))},_getOptionObjForItem:function(a){var b=this.store,c=this.labelAttr&&
-this.labelAttr in a?a[this.labelAttr]:b.getLabel(a);return{value:c?b.getIdentity(a):null,label:c,item:a}},_addOptionForItem:function(a){var b=this.store;b.isItemLoaded&&!b.isItemLoaded(a)?b.loadItem({item:a,onItem:function(a){this._addOptionForItem(a)},scope:this}):this.addOption(this._getOptionObjForItem(a))},constructor:function(a){this._oValue=(a||{}).value||null;this._notifyConnections=[]},buildRendering:function(){this.inherited(arguments);g.setSelectable(this.focusNode,!1)},_fillContent:function(){if(!this.options)this.options=
+"")},reset:function(){this.inherited(arguments);n.hide(this.domNode);this._refreshState()},postMixInProperties:function(){this.inherited(arguments);this._missingMsg=i.getLocalization("dijit.form","validate",this.lang).missingMessage},postCreate:function(){this.inherited(arguments);this.connect(this.domNode,"onselectstart",c.stop);this.domNode.setAttribute("aria-expanded","false");9>g("ie")&&this.defer(function(){try{var a=domStyle.getComputedStyle(this.domNode);if(a){var b=a.fontFamily;if(b){var c=
+this.domNode.getElementsByTagName("INPUT");if(c)for(a=0;a<c.length;a++)c[a].style.fontFamily=b}}}catch(d){}})},_setStyleAttr:function(a){this.inherited(arguments);j.toggle(this.domNode,this.baseClass.replace(/\s+|$/g,"FixedWidth "),!!this.domNode.style.width)},isLoaded:function(){return this._isLoaded},loadDropDown:function(a){this._loadChildren(!0);this._isLoaded=!0;a()},closeDropDown:function(){this.inherited(arguments);if(this.dropDown&&this.dropDown.menuTableNode)this.dropDown.menuTableNode.style.width=
+""},destroy:function(a){this.dropDown&&!this.dropDown._destroyed&&(this.dropDown.destroyRecursive(a),delete this.dropDown);this.inherited(arguments)},_onFocus:function(){this.validate(!0);this.inherited(arguments)},_onBlur:function(){n.hide(this.domNode);this.inherited(arguments);this.validate(!1)}});k._Menu=r;return k})},"dijit/form/_FormSelectWidget":function(){define("dojo/_base/array,dojo/_base/Deferred,dojo/aspect,dojo/data/util/sorter,dojo/_base/declare,dojo/dom,dojo/dom-class,dojo/_base/kernel,dojo/_base/lang,dojo/query,dojo/when,dojo/store/util/QueryResults,./_FormValueWidget".split(","),
+function(f,k,h,j,e,c,i,b,g,a,l,d,p){return e("dijit.form._FormSelectWidget",p,{multiple:!1,options:null,store:null,query:null,queryOptions:null,labelAttr:"",onFetch:null,sortByLabel:!0,loadChildrenOnOpen:!1,onLoadDeferred:null,getOptions:function(a){var b=a,c=this.options||[],d=c.length;if(void 0===b)return c;if(g.isArray(b))return f.map(b,"return this.getOptions(item);",this);g.isObject(a)&&(f.some(this.options,function(a,c){return a===b||a.value&&a.value===b.value?(b=c,!0):!1})||(b=-1));if("string"==
+typeof b)for(a=0;a<d;a++)if(c[a].value===b){b=a;break}return"number"==typeof b&&0<=b&&b<d?this.options[b]:null},addOption:function(a){g.isArray(a)||(a=[a]);f.forEach(a,function(a){a&&g.isObject(a)&&this.options.push(a)},this);this._loadChildren()},removeOption:function(a){g.isArray(a)||(a=[a]);a=this.getOptions(a);f.forEach(a,function(a){if(a)this.options=f.filter(this.options,function(b){return b.value!==a.value||b.label!==a.label}),this._removeOptionItem(a)},this);this._loadChildren()},updateOption:function(a){g.isArray(a)||
+(a=[a]);f.forEach(a,function(a){var b=this.getOptions(a),c;if(b)for(c in a)b[c]=a[c]},this);this._loadChildren()},setStore:function(a,b,c){var e=this.store,c=c||{};if(e!==a){for(var i;i=this._notifyConnections.pop();)i.remove();if(!a.get&&(g.mixin(a,{_oldAPI:!0,get:function(a){var b=new k;this.fetchItemByIdentity({identity:a,onItem:function(a){b.resolve(a)},onError:function(a){b.reject(a)}});return b.promise},query:function(a,b){var c=new k(function(){e.abort&&e.abort()});c.total=new k;var e=this.fetch(g.mixin({query:a,
+onBegin:function(a){c.total.resolve(a)},onComplete:function(a){c.resolve(a)},onError:function(a){c.reject(a)}},b));return new d(c)}}),a.getFeatures()["dojo.data.api.Notification"]))this._notifyConnections=[h.after(a,"onNew",g.hitch(this,"_onNewItem"),!0),h.after(a,"onDelete",g.hitch(this,"_onDeleteItem"),!0),h.after(a,"onSet",g.hitch(this,"_onSetItem"),!0)];this._set("store",a)}this.options&&this.options.length&&this.removeOption(this.options);this._queryRes&&this._queryRes.close&&this._queryRes.close();
+c.query&&(this._set("query",c.query),this._set("queryOptions",c.queryOptions));if(a)this._loadingStore=!0,this.onLoadDeferred=new k,this._queryRes=a.query(this.query,this.queryOptions),l(this._queryRes,g.hitch(this,function(d){if(this.sortByLabel&&!c.sort&&d.length)if(d[0].getValue)d.sort(j.createSortFunction([{attribute:a.getLabelAttributes(d[0])[0]}],a));else{var e=this.labelAttr;d.sort(function(a,b){return a[e]>b[e]?1:b[e]>a[e]?-1:0})}c.onFetch&&(d=c.onFetch.call(this,d,c));f.forEach(d,function(a){this._addOptionForItem(a)},
+this);this._queryRes.observe&&this._queryRes.observe(g.hitch(this,function(a,b,c){b==c?this._onSetItem(a):(-1!=b&&this._onDeleteItem(a),-1!=c&&this._onNewItem(a))}),!0);this._loadingStore=!1;this.set("value","_pendingValue"in this?this._pendingValue:b);delete this._pendingValue;this.loadChildrenOnOpen?this._pseudoLoadChildren(d):this._loadChildren();this.onLoadDeferred.resolve(!0);this.onSetStore()}),function(a){this.onLoadDeferred.reject(a)});return e},_setValueAttr:function(a,b){this._onChangeActive||
+(b=null);if(this._loadingStore)this._pendingValue=a;else{var c=this.getOptions()||[];g.isArray(a)||(a=[a]);f.forEach(a,function(b,d){g.isObject(b)||(b+="");"string"===typeof b&&(a[d]=f.filter(c,function(a){return a.value===b})[0]||{value:"",label:""})},this);a=f.filter(a,function(a){return a&&a.value});if(!this.multiple&&(!a[0]||!a[0].value)&&c.length)a[0]=c[0];f.forEach(c,function(b){b.selected=f.some(a,function(a){return a.value===b.value})});var d=f.map(a,function(a){return a.value}),e=f.map(a,
+function(a){return a.label});"undefined"==typeof d||"undefined"==typeof d[0]||(this._setDisplay(this.multiple?e:e[0]),this.inherited(arguments,[this.multiple?d:d[0],b]),this._updateSelection())}},_getDisplayedValueAttr:function(){var a=this.get("value");g.isArray(a)||(a=[a]);a=f.map(this.getOptions(a),function(a){return a&&"label"in a?a.label:a?a.value:null},this);return this.multiple?a:a[0]},_loadChildren:function(){this._loadingStore||(f.forEach(this._getChildren(),function(a){a.destroyRecursive()}),
+f.forEach(this.options,this._addOptionItem,this),this._updateSelection())},_updateSelection:function(){this._set("value",this._getValueFromOpts());var a=this.value;g.isArray(a)||(a=[a]);a&&a[0]&&f.forEach(this._getChildren(),function(b){var c=f.some(a,function(a){return b.option&&a===b.option.value});i.toggle(b.domNode,this.baseClass.replace(/\s+|$/g,"SelectedOption "),c);b.domNode.setAttribute("aria-selected",c?"true":"false")},this)},_getValueFromOpts:function(){var a=this.getOptions()||[];if(!this.multiple&&
+a.length){var b=f.filter(a,function(a){return a.selected})[0];if(b&&b.value)return b.value;a[0].selected=!0;return a[0].value}return this.multiple?f.map(f.filter(a,function(a){return a.selected}),function(a){return a.value})||[]:""},_onNewItem:function(a,b){(!b||!b.parent)&&this._addOptionForItem(a)},_onDeleteItem:function(a){this.removeOption(this.store.getIdentity(a))},_onSetItem:function(a){this.updateOption(this._getOptionObjForItem(a))},_getOptionObjForItem:function(a){var b=this.store,c=this.labelAttr&&
+this.labelAttr in a?a[this.labelAttr]:b.getLabel(a);return{value:c?b.getIdentity(a):null,label:c,item:a}},_addOptionForItem:function(a){var b=this.store;b.isItemLoaded&&!b.isItemLoaded(a)?b.loadItem({item:a,onItem:function(a){this._addOptionForItem(a)},scope:this}):this.addOption(this._getOptionObjForItem(a))},constructor:function(a){this._oValue=(a||{}).value||null;this._notifyConnections=[]},buildRendering:function(){this.inherited(arguments);c.setSelectable(this.focusNode,!1)},_fillContent:function(){if(!this.options)this.options=
this.srcNodeRef?a("> *",this.srcNodeRef).map(function(a){return"separator"===a.getAttribute("type")?{value:"",label:"",selected:!1,disabled:!1}:{value:a.getAttribute("data-"+b._scopeName+"-value")||a.getAttribute("value"),label:""+a.innerHTML,selected:a.getAttribute("selected")||!1,disabled:a.getAttribute("disabled")||!1}},this):[];this.value?this.multiple&&"string"==typeof this.value&&this._set("value",this.value.split(",")):this._set("value",this._getValueFromOpts())},postCreate:function(){this.inherited(arguments);
this.connect(this,"onChange","_updateSelection");var a=this.store;if(a&&(a.getIdentity||a.getFeatures()["dojo.data.api.Identity"]))this.store=null,this.setStore(a,this._oValue)},startup:function(){this._loadChildren();this.inherited(arguments)},destroy:function(){for(var a;a=this._notifyConnections.pop();)a.remove();this._queryRes&&this._queryRes.close&&this._queryRes.close();this.inherited(arguments)},_addOptionItem:function(){},_removeOptionItem:function(){},_setDisplay:function(){},_getChildren:function(){return[]},
-_getSelectedOptionsAttr:function(){return this.getOptions(this.get("value"))},_pseudoLoadChildren:function(){},onSetStore:function(){}})})},"dojo/data/util/sorter":function(){define(["../../_base/lang"],function(e){var j={};e.setObject("dojo.data.util.sorter",j);j.basicComparator=function(e,l){var c=-1;null===e&&(e=void 0);null===l&&(l=void 0);if(e==l)c=0;else if(e>l||null==e)c=1;return c};j.createSortFunction=function(e,l){function c(a,b,c,d){return function(f,e){var g=d.getValue(f,a),h=d.getValue(e,
-a);return b*c(g,h)}}for(var g=[],h,b=l.comparatorMap,f=j.basicComparator,a=0;a<e.length;a++){h=e[a];var k=h.attribute;if(k){h=h.descending?-1:1;var d=f;b&&("string"!==typeof k&&"toString"in k&&(k=k.toString()),d=b[k]||f);g.push(c(k,h,d,l))}}return function(a,b){for(var c=0;c<g.length;){var d=g[c++](a,b);if(0!==d)return d}return 0}};return j})},"dojo/store/util/QueryResults":function(){define(["../../_base/array","../../_base/lang","../../_base/Deferred"],function(e,j,i){var l=function(c){function g(g){c[g]||
-(c[g]=function(){var b=arguments;return i.when(c,function(c){Array.prototype.unshift.call(b,c);return l(e[g].apply(e,b))})})}if(!c)return c;c.then&&(c=j.delegate(c));g("forEach");g("filter");g("map");if(!c.total)c.total=i.when(c,function(c){return c.length});return c};j.setObject("dojo.store.util.QueryResults",l);return l})},"dijit/MenuSeparator":function(){define("dojo/_base/declare,dojo/dom,./_WidgetBase,./_TemplatedMixin,./_Contained,dojo/text!./templates/MenuSeparator.html".split(","),function(e,
-j,i,l,c,g){return e("dijit.MenuSeparator",[i,l,c],{templateString:g,buildRendering:function(){this.inherited(arguments);j.setSelectable(this.domNode,!1)},isFocusable:function(){return!1}})})},"url: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>',
-"dijit/Tooltip":function(){define("dojo/_base/array,dojo/_base/declare,dojo/_base/fx,dojo/dom,dojo/dom-class,dojo/dom-geometry,dojo/dom-style,dojo/_base/lang,dojo/mouse,dojo/on,dojo/sniff,./_base/manager,./place,./_Widget,./_TemplatedMixin,./BackgroundIframe,dojo/text!./templates/Tooltip.html,./main".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o,r,q){var v=j("dijit._MasterTooltip",[m,n],{duration:d.defaultDuration,templateString:r,postCreate:function(){this.ownerDocumentBody.appendChild(this.domNode);
-this.bgIframe=new o(this.domNode);this.fadeIn=i.fadeIn({node:this.domNode,duration:this.duration,onEnd:b.hitch(this,"_onShow")});this.fadeOut=i.fadeOut({node:this.domNode,duration:this.duration,onEnd:b.hitch(this,"_onHide")})},show:function(a,c,d,f,e){if(!this.aroundNode||!(this.aroundNode===c&&this.containerNode.innerHTML==a))if("playing"==this.fadeOut.status())this._onDeck=arguments;else{this.containerNode.innerHTML=a;e&&this.set("textDir",e);this.containerNode.align=f?"right":"left";var g=p.around(this.domNode,
-c,d&&d.length?d:s.defaultPosition,!f,b.hitch(this,"orient")),k=g.aroundNodePos;"M"==g.corner.charAt(0)&&"M"==g.aroundCorner.charAt(0)?(this.connectorNode.style.top=k.y+(k.h-this.connectorNode.offsetHeight>>1)-g.y+"px",this.connectorNode.style.left=""):"M"==g.corner.charAt(1)&&"M"==g.aroundCorner.charAt(1)?this.connectorNode.style.left=k.x+(k.w-this.connectorNode.offsetWidth>>1)-g.x+"px":(this.connectorNode.style.left="",this.connectorNode.style.top="");h.set(this.domNode,"opacity",0);this.fadeIn.play();
-this.isShowingNow=!0;this.aroundNode=c}},orient:function(a,b,c,d,f){this.connectorNode.style.top="";var e=d.h,d=d.w;a.className="dijitTooltip "+{"MR-ML":"dijitTooltipRight","ML-MR":"dijitTooltipLeft","TM-BM":"dijitTooltipAbove","BM-TM":"dijitTooltipBelow","BL-TL":"dijitTooltipBelow dijitTooltipABLeft","TL-BL":"dijitTooltipAbove dijitTooltipABLeft","BR-TR":"dijitTooltipBelow dijitTooltipABRight","TR-BR":"dijitTooltipAbove dijitTooltipABRight","BR-BL":"dijitTooltipRight","BL-BR":"dijitTooltipLeft"}[b+
-"-"+c];this.domNode.style.width="auto";var h=g.position(this.domNode);9==k("ie")&&(h.w+=2);var i=Math.min(Math.max(d,1),h.w);g.setMarginBox(this.domNode,{w:i});"B"==c.charAt(0)&&"B"==b.charAt(0)?(a=g.position(a),b=this.connectorNode.offsetHeight,a.h>e?(this.connectorNode.style.top=e-(f.h+b>>1)+"px",this.connectorNode.style.bottom=""):(this.connectorNode.style.bottom=Math.min(Math.max(f.h/2-b/2,0),a.h-b)+"px",this.connectorNode.style.top="")):(this.connectorNode.style.top="",this.connectorNode.style.bottom=
-"");return Math.max(0,h.w-d)},_onShow:function(){if(k("ie"))this.domNode.style.filter=""},hide:function(a){if(this._onDeck&&this._onDeck[1]==a)this._onDeck=null;else if(this.aroundNode===a)this.fadeIn.stop(),this.isShowingNow=!1,this.aroundNode=null,this.fadeOut.play()},_onHide:function(){this.domNode.style.cssText="";this.containerNode.innerHTML="";if(this._onDeck)this.show.apply(this,this._onDeck),this._onDeck=null},_setAutoTextDir:function(a){this.applyTextDir(a,k("ie")?a.outerText:a.textContent);
-e.forEach(a.children,function(a){this._setAutoTextDir(a)},this)},_setTextDirAttr:function(a){this._set("textDir",a);"auto"==a?this._setAutoTextDir(this.containerNode):this.containerNode.dir=this.textDir}});q.showTooltip=function(a,b,c,d,f){c&&(c=e.map(c,function(a){return{after:"after-centered",before:"before-centered"}[a]||a}));if(!s._masterTT)q._masterTT=s._masterTT=new v;return s._masterTT.show(a,b,c,d,f)};q.hideTooltip=function(a){return s._masterTT&&s._masterTT.hide(a)};var s=j("dijit.Tooltip",
-m,{label:"",showDelay:400,connectId:[],position:[],selector:"",_setConnectIdAttr:function(c){e.forEach(this._connections||[],function(a){e.forEach(a,function(a){a.remove()})},this);this._connectIds=e.filter(b.isArrayLike(c)?c:c?[c]:[],function(a){return l.byId(a,this.ownerDocument)},this);this._connections=e.map(this._connectIds,function(c){var c=l.byId(c,this.ownerDocument),d=this.selector,e=d?function(b){return a.selector(d,b)}:function(a){return a},g=this;return[a(c,e(f.enter),function(){g._onHover(this)}),
-a(c,e("focusin"),function(){g._onHover(this)}),a(c,e(f.leave),b.hitch(g,"_onUnHover")),a(c,e("focusout"),b.hitch(g,"_onUnHover"))]},this);this._set("connectId",c)},addTarget:function(a){a=a.id||a;-1==e.indexOf(this._connectIds,a)&&this.set("connectId",this._connectIds.concat(a))},removeTarget:function(a){a=e.indexOf(this._connectIds,a.id||a);0<=a&&(this._connectIds.splice(a,1),this.set("connectId",this._connectIds))},buildRendering:function(){this.inherited(arguments);c.add(this.domNode,"dijitTooltipData")},
-startup:function(){this.inherited(arguments);var a=this.connectId;e.forEach(b.isArrayLike(a)?a:[a],this.addTarget,this)},getContent:function(){return this.label||this.domNode.innerHTML},_onHover:function(a){if(!this._showTimer)this._showTimer=this.defer(function(){this.open(a)},this.showDelay)},_onUnHover:function(){this._showTimer&&(this._showTimer.remove(),delete this._showTimer);this.close()},open:function(a){this._showTimer&&(this._showTimer.remove(),delete this._showTimer);var b=this.getContent(a);
-if(b)s.show(b,a,this.position,!this.isLeftToRight(),this.textDir),this._connectNode=a,this.onShow(a,this.position)},close:function(){this._connectNode&&(s.hide(this._connectNode),delete this._connectNode,this.onHide());this._showTimer&&(this._showTimer.remove(),delete this._showTimer)},onShow:function(){},onHide:function(){},destroy:function(){this.close();e.forEach(this._connections||[],function(a){e.forEach(a,function(a){a.remove()})},this);this.inherited(arguments)}});s._MasterTooltip=v;s.show=
+_getSelectedOptionsAttr:function(){return this.getOptions(this.get("value"))},_pseudoLoadChildren:function(){},onSetStore:function(){}})})},"dojo/data/util/sorter":function(){define(["../../_base/lang"],function(f){var k={};f.setObject("dojo.data.util.sorter",k);k.basicComparator=function(f,j){var e=-1;null===f&&(f=void 0);null===j&&(j=void 0);if(f==j)e=0;else if(f>j||null==f)e=1;return e};k.createSortFunction=function(f,j){function e(a,b,c,d){return function(g,e){var f=d.getValue(g,a),i=d.getValue(e,
+a);return b*c(f,i)}}for(var c=[],i,b=j.comparatorMap,g=k.basicComparator,a=0;a<f.length;a++){i=f[a];var l=i.attribute;if(l){i=i.descending?-1:1;var d=g;b&&("string"!==typeof l&&"toString"in l&&(l=l.toString()),d=b[l]||g);c.push(e(l,i,d,j))}}return function(a,b){for(var d=0;d<c.length;){var g=c[d++](a,b);if(0!==g)return g}return 0}};return k})},"dojo/store/util/QueryResults":function(){define(["../../_base/array","../../_base/lang","../../_base/Deferred"],function(f,k,h){var j=function(e){function c(c){e[c]||
+(e[c]=function(){var b=arguments;return h.when(e,function(g){Array.prototype.unshift.call(b,g);return j(f[c].apply(f,b))})})}if(!e)return e;e.then&&(e=k.delegate(e));c("forEach");c("filter");c("map");if(!e.total)e.total=h.when(e,function(c){return c.length});return e};k.setObject("dojo.store.util.QueryResults",j);return j})},"dijit/MenuSeparator":function(){define("dojo/_base/declare,dojo/dom,./_WidgetBase,./_TemplatedMixin,./_Contained,dojo/text!./templates/MenuSeparator.html".split(","),function(f,
+k,h,j,e,c){return f("dijit.MenuSeparator",[h,j,e],{templateString:c,buildRendering:function(){this.inherited(arguments);k.setSelectable(this.domNode,!1)},isFocusable:function(){return!1}})})},"url: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>',
+"dijit/Tooltip":function(){define("dojo/_base/array,dojo/_base/declare,dojo/_base/fx,dojo/dom,dojo/dom-class,dojo/dom-geometry,dojo/dom-style,dojo/_base/lang,dojo/mouse,dojo/on,dojo/sniff,./_base/manager,./place,./_Widget,./_TemplatedMixin,./BackgroundIframe,dojo/text!./templates/Tooltip.html,./main".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o,r,q){var v=k("dijit._MasterTooltip",[m,n],{duration:d.defaultDuration,templateString:r,postCreate:function(){this.ownerDocumentBody.appendChild(this.domNode);
+this.bgIframe=new o(this.domNode);this.fadeIn=h.fadeIn({node:this.domNode,duration:this.duration,onEnd:b.hitch(this,"_onShow")});this.fadeOut=h.fadeOut({node:this.domNode,duration:this.duration,onEnd:b.hitch(this,"_onHide")})},show:function(a,c,d,g,e){if(!this.aroundNode||!(this.aroundNode===c&&this.containerNode.innerHTML==a))if("playing"==this.fadeOut.status())this._onDeck=arguments;else{this.containerNode.innerHTML=a;e&&this.set("textDir",e);this.containerNode.align=g?"right":"left";var f=p.around(this.domNode,
+c,d&&d.length?d:s.defaultPosition,!g,b.hitch(this,"orient")),h=f.aroundNodePos;"M"==f.corner.charAt(0)&&"M"==f.aroundCorner.charAt(0)?(this.connectorNode.style.top=h.y+(h.h-this.connectorNode.offsetHeight>>1)-f.y+"px",this.connectorNode.style.left=""):"M"==f.corner.charAt(1)&&"M"==f.aroundCorner.charAt(1)?this.connectorNode.style.left=h.x+(h.w-this.connectorNode.offsetWidth>>1)-f.x+"px":(this.connectorNode.style.left="",this.connectorNode.style.top="");i.set(this.domNode,"opacity",0);this.fadeIn.play();
+this.isShowingNow=!0;this.aroundNode=c}},orient:function(a,b,d,g,e){this.connectorNode.style.top="";var f=g.h,g=g.w;a.className="dijitTooltip "+{"MR-ML":"dijitTooltipRight","ML-MR":"dijitTooltipLeft","TM-BM":"dijitTooltipAbove","BM-TM":"dijitTooltipBelow","BL-TL":"dijitTooltipBelow dijitTooltipABLeft","TL-BL":"dijitTooltipAbove dijitTooltipABLeft","BR-TR":"dijitTooltipBelow dijitTooltipABRight","TR-BR":"dijitTooltipAbove dijitTooltipABRight","BR-BL":"dijitTooltipRight","BL-BR":"dijitTooltipLeft"}[b+
+"-"+d];this.domNode.style.width="auto";var i=c.position(this.domNode);9==l("ie")&&(i.w+=2);var h=Math.min(Math.max(g,1),i.w);c.setMarginBox(this.domNode,{w:h});"B"==d.charAt(0)&&"B"==b.charAt(0)?(a=c.position(a),b=this.connectorNode.offsetHeight,a.h>f?(this.connectorNode.style.top=f-(e.h+b>>1)+"px",this.connectorNode.style.bottom=""):(this.connectorNode.style.bottom=Math.min(Math.max(e.h/2-b/2,0),a.h-b)+"px",this.connectorNode.style.top="")):(this.connectorNode.style.top="",this.connectorNode.style.bottom=
+"");return Math.max(0,i.w-g)},_onShow:function(){if(l("ie"))this.domNode.style.filter=""},hide:function(a){if(this._onDeck&&this._onDeck[1]==a)this._onDeck=null;else if(this.aroundNode===a)this.fadeIn.stop(),this.isShowingNow=!1,this.aroundNode=null,this.fadeOut.play()},_onHide:function(){this.domNode.style.cssText="";this.containerNode.innerHTML="";if(this._onDeck)this.show.apply(this,this._onDeck),this._onDeck=null},_setAutoTextDir:function(a){this.applyTextDir(a,l("ie")?a.outerText:a.textContent);
+f.forEach(a.children,function(a){this._setAutoTextDir(a)},this)},_setTextDirAttr:function(a){this._set("textDir",a);"auto"==a?this._setAutoTextDir(this.containerNode):this.containerNode.dir=this.textDir}});q.showTooltip=function(a,b,c,d,g){c&&(c=f.map(c,function(a){return{after:"after-centered",before:"before-centered"}[a]||a}));if(!s._masterTT)q._masterTT=s._masterTT=new v;return s._masterTT.show(a,b,c,d,g)};q.hideTooltip=function(a){return s._masterTT&&s._masterTT.hide(a)};var s=k("dijit.Tooltip",
+m,{label:"",showDelay:400,connectId:[],position:[],selector:"",_setConnectIdAttr:function(c){f.forEach(this._connections||[],function(a){f.forEach(a,function(a){a.remove()})},this);this._connectIds=f.filter(b.isArrayLike(c)?c:c?[c]:[],function(a){return j.byId(a,this.ownerDocument)},this);this._connections=f.map(this._connectIds,function(c){var c=j.byId(c,this.ownerDocument),d=this.selector,e=d?function(b){return a.selector(d,b)}:function(a){return a},f=this;return[a(c,e(g.enter),function(){f._onHover(this)}),
+a(c,e("focusin"),function(){f._onHover(this)}),a(c,e(g.leave),b.hitch(f,"_onUnHover")),a(c,e("focusout"),b.hitch(f,"_onUnHover"))]},this);this._set("connectId",c)},addTarget:function(a){a=a.id||a;-1==f.indexOf(this._connectIds,a)&&this.set("connectId",this._connectIds.concat(a))},removeTarget:function(a){a=f.indexOf(this._connectIds,a.id||a);0<=a&&(this._connectIds.splice(a,1),this.set("connectId",this._connectIds))},buildRendering:function(){this.inherited(arguments);e.add(this.domNode,"dijitTooltipData")},
+startup:function(){this.inherited(arguments);var a=this.connectId;f.forEach(b.isArrayLike(a)?a:[a],this.addTarget,this)},getContent:function(){return this.label||this.domNode.innerHTML},_onHover:function(a){if(!this._showTimer)this._showTimer=this.defer(function(){this.open(a)},this.showDelay)},_onUnHover:function(){this._showTimer&&(this._showTimer.remove(),delete this._showTimer);this.close()},open:function(a){this._showTimer&&(this._showTimer.remove(),delete this._showTimer);var b=this.getContent(a);
+if(b)s.show(b,a,this.position,!this.isLeftToRight(),this.textDir),this._connectNode=a,this.onShow(a,this.position)},close:function(){this._connectNode&&(s.hide(this._connectNode),delete this._connectNode,this.onHide());this._showTimer&&(this._showTimer.remove(),delete this._showTimer)},onShow:function(){},onHide:function(){},destroy:function(){this.close();f.forEach(this._connections||[],function(a){f.forEach(a,function(a){a.remove()})},this);this.inherited(arguments)}});s._MasterTooltip=v;s.show=
q.showTooltip;s.hide=q.hideTooltip;s.defaultPosition=["after-centered","before-centered"];return s})},"url:dijit/templates/Tooltip.html":'<div class="dijitTooltip dijitTooltipLeft" id="dojoTooltip"\n\t><div class="dijitTooltipContainer dijitTooltipContents" data-dojo-attach-point="containerNode" role=\'alert\'></div\n\t><div class="dijitTooltipConnector" data-dojo-attach-point="connectorNode"></div\n></div>\n',"url:dijit/form/templates/Select.html":'<table class="dijit dijitReset dijitInline dijitLeft"\n\tdata-dojo-attach-point="_buttonNode,tableNode,focusNode" cellspacing=\'0\' cellpadding=\'0\'\n\trole="listbox" aria-haspopup="true"\n\t><tbody role="presentation"><tr role="presentation"\n\t\t><td class="dijitReset dijitStretch dijitButtonContents" role="presentation"\n\t\t\t><div class="dijitReset dijitInputField dijitButtonText" data-dojo-attach-point="containerNode,_popupStateNode" role="presentation"></div\n\t\t\t><div class="dijitReset dijitValidationContainer"\n\t\t\t\t><input class="dijitReset dijitInputField dijitValidationIcon dijitValidationInner" value="&#935; " type="text" tabIndex="-1" readonly="readonly" role="presentation"\n\t\t\t/></div\n\t\t\t><input type="hidden" ${!nameAttrSetting} data-dojo-attach-point="valueNode" value="${value}" aria-hidden="true"\n\t\t/></td\n\t\t><td class="dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton dijitArrowButtonContainer"\n\t\t\tdata-dojo-attach-point="titleNode" role="presentation"\n\t\t\t><input class="dijitReset dijitInputField dijitArrowButtonInner" value="&#9660; " type="text" tabIndex="-1" readonly="readonly" role="presentation"\n\t\t\t\t${_buttonInputDisabled}\n\t\t/></td\n\t></tr></tbody\n></table>\n',
-"dijit/form/HorizontalSlider":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dnd/move,dojo/_base/event,dojo/_base/fx,dojo/dom-geometry,dojo/dom-style,dojo/keys,dojo/_base/lang,dojo/sniff,dojo/dnd/Moveable,dojo/dnd/Mover,dojo/query,dojo/mouse,../registry,../focus,../typematic,./Button,./_FormValueWidget,../_Container,dojo/text!./templates/HorizontalSlider.html".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o,r,q,v,s,u){var t=j("dijit.form._SliderMover",d,{onMouseMove:function(a){var b=
-this.widget,c=b._abspos;if(!c)c=b._abspos=g.position(b.sliderBarContainer,!0),b._setPixelValue_=f.hitch(b,"_setPixelValue"),b._isReversed_=b._isReversed();a=a[b._mousePixelCoord]-c[b._startingPixelCoord];b._setPixelValue_(b._isReversed_?c[b._pixelCount]-a:a,c[b._pixelCount],!1)},destroy:function(a){d.prototype.destroy.apply(this,arguments);var b=this.widget;b._abspos=null;b._setValueAttr(b.value,!0)}}),i=j("dijit.form.HorizontalSlider",[v,s],{templateString:u,value:0,showButtons:!0,minimum:0,maximum:100,
+"dijit/form/HorizontalSlider":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dnd/move,dojo/_base/event,dojo/_base/fx,dojo/dom-geometry,dojo/dom-style,dojo/keys,dojo/_base/lang,dojo/sniff,dojo/dnd/Moveable,dojo/dnd/Mover,dojo/query,dojo/mouse,../registry,../focus,../typematic,./Button,./_FormValueWidget,../_Container,dojo/text!./templates/HorizontalSlider.html".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o,r,q,v,s,t){var u=k("dijit.form._SliderMover",d,{onMouseMove:function(a){var b=
+this.widget,d=b._abspos;if(!d)d=b._abspos=c.position(b.sliderBarContainer,!0),b._setPixelValue_=g.hitch(b,"_setPixelValue"),b._isReversed_=b._isReversed();a=a[b._mousePixelCoord]-d[b._startingPixelCoord];b._setPixelValue_(b._isReversed_?d[b._pixelCount]-a:a,d[b._pixelCount],!1)},destroy:function(a){d.prototype.destroy.apply(this,arguments);var b=this.widget;b._abspos=null;b._setValueAttr(b.value,!0)}}),h=k("dijit.form.HorizontalSlider",[v,s],{templateString:t,value:0,showButtons:!0,minimum:0,maximum:100,
discreteValues:Infinity,pageIncrement:2,clickSelect:!0,slideDuration:n.defaultDuration,_setIdAttr:"",baseClass:"dijitSlider",cssStateNodes:{incrementButton:"dijitSliderIncrementButton",decrementButton:"dijitSliderDecrementButton",focusNode:"dijitSliderThumb"},_mousePixelCoord:"pageX",_pixelCount:"w",_startingPixelCoord:"x",_handleOffsetCoord:"left",_progressPixelSize:"width",_onKeyUp:function(a){!this.disabled&&!this.readOnly&&!a.altKey&&!a.ctrlKey&&!a.metaKey&&this._setValueAttr(this.value,!0)},
_onKeyPress:function(a){if(!this.disabled&&!this.readOnly&&!a.altKey&&!a.ctrlKey&&!a.metaKey){switch(a.charOrCode){case b.HOME:this._setValueAttr(this.minimum,!1);break;case b.END:this._setValueAttr(this.maximum,!1);break;case this._descending||this.isLeftToRight()?b.RIGHT_ARROW:b.LEFT_ARROW:case !1===this._descending?b.DOWN_ARROW:b.UP_ARROW:case !1===this._descending?b.PAGE_DOWN:b.PAGE_UP:this.increment(a);break;case this._descending||this.isLeftToRight()?b.LEFT_ARROW:b.RIGHT_ARROW:case !1===this._descending?
-b.UP_ARROW:b.DOWN_ARROW:case !1===this._descending?b.PAGE_UP:b.PAGE_DOWN:this.decrement(a);break;default:return}l.stop(a)}},_onHandleClick:function(b){!this.disabled&&!this.readOnly&&(a("ie")||o.focus(this.sliderHandle),l.stop(b))},_isReversed:function(){return!this.isLeftToRight()},_onBarClick:function(a){if(!this.disabled&&!this.readOnly&&this.clickSelect){o.focus(this.sliderHandle);l.stop(a);var b=g.position(this.sliderBarContainer,!0),c=a[this._mousePixelCoord]-b[this._startingPixelCoord];this._setPixelValue(this._isReversed()?
-b[this._pixelCount]-c:c,b[this._pixelCount],!0);this._movable.onMouseDown(a)}},_setPixelValue:function(a,b,c){if(!this.disabled&&!this.readOnly){var d=this.discreteValues;if(1>=d||Infinity==d)d=b;d--;a=Math.round(a/(b/d));this._setValueAttr(Math.max(Math.min((this.maximum-this.minimum)*a/d+this.minimum,this.maximum),this.minimum),c)}},_setValueAttr:function(a,b){this._set("value",a);this.valueNode.value=a;this.focusNode.setAttribute("aria-valuenow",a);this.inherited(arguments);var d=(a-this.minimum)/
-(this.maximum-this.minimum),f=!1===this._descending?this.remainingBar:this.progressBar,e=!1===this._descending?this.progressBar:this.remainingBar;this._inProgressAnim&&"stopped"!=this._inProgressAnim.status&&this._inProgressAnim.stop(!0);if(b&&0<this.slideDuration&&f.style[this._progressPixelSize]){var g=this,h={},k=parseFloat(f.style[this._progressPixelSize]),i=this.slideDuration*(d-k/100);if(0!=i)0>i&&(i=0-i),h[this._progressPixelSize]={start:k,end:100*d,units:"%"},this._inProgressAnim=c.animateProperty({node:f,
-duration:i,onAnimate:function(a){e.style[g._progressPixelSize]=100-parseFloat(a[g._progressPixelSize])+"%"},onEnd:function(){delete g._inProgressAnim},properties:h}),this._inProgressAnim.play()}else f.style[this._progressPixelSize]=100*d+"%",e.style[this._progressPixelSize]=100*(1-d)+"%"},_bumpValue:function(a,b){if(!this.disabled&&!this.readOnly){var c=h.getComputedStyle(this.sliderBarContainer),d=g.getContentBox(this.sliderBarContainer,c),c=this.discreteValues;if(1>=c||Infinity==c)c=d[this._pixelCount];
-c--;d=(this.value-this.minimum)*c/(this.maximum-this.minimum)+a;0>d&&(d=0);d>c&&(d=c);d=d*(this.maximum-this.minimum)/c+this.minimum;this._setValueAttr(d,b)}},_onClkBumper:function(a){!this.disabled&&!this.readOnly&&this.clickSelect&&this._setValueAttr(a,!0)},_onClkIncBumper:function(){this._onClkBumper(!1===this._descending?this.minimum:this.maximum)},_onClkDecBumper:function(){this._onClkBumper(!1===this._descending?this.maximum:this.minimum)},decrement:function(a){this._bumpValue(a.charOrCode==
-b.PAGE_DOWN?-this.pageIncrement:-1)},increment:function(a){this._bumpValue(a.charOrCode==b.PAGE_UP?this.pageIncrement:1)},_mouseWheeled:function(a){l.stop(a);this._bumpValue(0>a.wheelDelta?-1:1,!0)},startup:function(){this._started||(e.forEach(this.getChildren(),function(a){this[a.container]!=this.containerNode&&this[a.container].appendChild(a.domNode)},this),this.inherited(arguments))},_typematicCallback:function(a,b,c){if(-1==a)this._setValueAttr(this.value,!0);else this[b==(this._descending?this.incrementButton:
+b.UP_ARROW:b.DOWN_ARROW:case !1===this._descending?b.PAGE_UP:b.PAGE_DOWN:this.decrement(a);break;default:return}j.stop(a)}},_onHandleClick:function(b){!this.disabled&&!this.readOnly&&(a("ie")||o.focus(this.sliderHandle),j.stop(b))},_isReversed:function(){return!this.isLeftToRight()},_onBarClick:function(a){if(!this.disabled&&!this.readOnly&&this.clickSelect){o.focus(this.sliderHandle);j.stop(a);var b=c.position(this.sliderBarContainer,!0),d=a[this._mousePixelCoord]-b[this._startingPixelCoord];this._setPixelValue(this._isReversed()?
+b[this._pixelCount]-d:d,b[this._pixelCount],!0);this._movable.onMouseDown(a)}},_setPixelValue:function(a,b,c){if(!this.disabled&&!this.readOnly){var d=this.discreteValues;if(1>=d||Infinity==d)d=b;d--;a=Math.round(a/(b/d));this._setValueAttr(Math.max(Math.min((this.maximum-this.minimum)*a/d+this.minimum,this.maximum),this.minimum),c)}},_setValueAttr:function(a,b){this._set("value",a);this.valueNode.value=a;this.focusNode.setAttribute("aria-valuenow",a);this.inherited(arguments);var c=(a-this.minimum)/
+(this.maximum-this.minimum),d=!1===this._descending?this.remainingBar:this.progressBar,g=!1===this._descending?this.progressBar:this.remainingBar;this._inProgressAnim&&"stopped"!=this._inProgressAnim.status&&this._inProgressAnim.stop(!0);if(b&&0<this.slideDuration&&d.style[this._progressPixelSize]){var f=this,i={},h=parseFloat(d.style[this._progressPixelSize]),l=this.slideDuration*(c-h/100);if(0!=l)0>l&&(l=0-l),i[this._progressPixelSize]={start:h,end:100*c,units:"%"},this._inProgressAnim=e.animateProperty({node:d,
+duration:l,onAnimate:function(a){g.style[f._progressPixelSize]=100-parseFloat(a[f._progressPixelSize])+"%"},onEnd:function(){delete f._inProgressAnim},properties:i}),this._inProgressAnim.play()}else d.style[this._progressPixelSize]=100*c+"%",g.style[this._progressPixelSize]=100*(1-c)+"%"},_bumpValue:function(a,b){if(!this.disabled&&!this.readOnly){var d=i.getComputedStyle(this.sliderBarContainer),g=c.getContentBox(this.sliderBarContainer,d),d=this.discreteValues;if(1>=d||Infinity==d)d=g[this._pixelCount];
+d--;g=(this.value-this.minimum)*d/(this.maximum-this.minimum)+a;0>g&&(g=0);g>d&&(g=d);g=g*(this.maximum-this.minimum)/d+this.minimum;this._setValueAttr(g,b)}},_onClkBumper:function(a){!this.disabled&&!this.readOnly&&this.clickSelect&&this._setValueAttr(a,!0)},_onClkIncBumper:function(){this._onClkBumper(!1===this._descending?this.minimum:this.maximum)},_onClkDecBumper:function(){this._onClkBumper(!1===this._descending?this.maximum:this.minimum)},decrement:function(a){this._bumpValue(a.charOrCode==
+b.PAGE_DOWN?-this.pageIncrement:-1)},increment:function(a){this._bumpValue(a.charOrCode==b.PAGE_UP?this.pageIncrement:1)},_mouseWheeled:function(a){j.stop(a);this._bumpValue(0>a.wheelDelta?-1:1,!0)},startup:function(){this._started||(f.forEach(this.getChildren(),function(a){this[a.container]!=this.containerNode&&this[a.container].appendChild(a.domNode)},this),this.inherited(arguments))},_typematicCallback:function(a,b,c){if(-1==a)this._setValueAttr(this.value,!0);else this[b==(this._descending?this.incrementButton:
this.decrementButton)?"decrement":"increment"](c)},buildRendering:function(){this.inherited(arguments);if(this.showButtons)this.incrementButton.style.display="",this.decrementButton.style.display="";var a=p('label[for="'+this.id+'"]');if(a.length){if(!a[0].id)a[0].id=this.id+"_label";this.focusNode.setAttribute("aria-labelledby",a[0].id)}this.focusNode.setAttribute("aria-valuemin",this.minimum);this.focusNode.setAttribute("aria-valuemax",this.maximum)},postCreate:function(){this.inherited(arguments);
-this.showButtons&&this.own(r.addMouseListener(this.decrementButton,this,"_typematicCallback",25,500),r.addMouseListener(this.incrementButton,this,"_typematicCallback",25,500));this.connect(this.domNode,m.wheel,"_mouseWheeled");var a=j(t,{widget:this});this._movable=new k(this.sliderHandle,{mover:a});this._layoutHackIE7()},destroy:function(){this._movable.destroy();this._inProgressAnim&&"stopped"!=this._inProgressAnim.status&&this._inProgressAnim.stop(!0);this.inherited(arguments)}});i._Mover=t;return i})},
-"dojo/dnd/move":function(){define("../_base/declare,../dom-geometry,../dom-style,./common,./Mover,./Moveable".split(","),function(e,j,i,l,c,g){l=e("dojo.dnd.move.constrainedMoveable",g,{constraints:function(){},within:!1,constructor:function(c,b){b||(b={});this.constraints=b.constraints;this.within=b.within},onFirstMove:function(c){var b=this.constraintBox=this.constraints.call(this,c);b.r=b.l+b.w;b.b=b.t+b.h;this.within&&(c=j.getMarginSize(c.node),b.r-=c.w,b.b-=c.h)},onMove:function(c,b){var f=this.constraintBox,
-a=c.node.style;this.onMoving(c,b);b.l=b.l<f.l?f.l:f.r<b.l?f.r:b.l;b.t=b.t<f.t?f.t:f.b<b.t?f.b:b.t;a.left=b.l+"px";a.top=b.t+"px";this.onMoved(c,b)}});c=e("dojo.dnd.move.boxConstrainedMoveable",l,{box:{},constructor:function(c,b){var f=b&&b.box;this.constraints=function(){return f}}});e=e("dojo.dnd.move.parentConstrainedMoveable",l,{area:"content",constructor:function(c,b){var f=b&&b.area;this.constraints=function(){var a=this.node.parentNode,b=i.getComputedStyle(a),c=j.getMarginBox(a,b);if("margin"==
-f)return c;var e=j.getMarginExtents(a,b);c.l+=e.l;c.t+=e.t;c.w-=e.w;c.h-=e.h;if("border"==f)return c;e=j.getBorderExtents(a,b);c.l+=e.l;c.t+=e.t;c.w-=e.w;c.h-=e.h;if("padding"==f)return c;e=j.getPadExtents(a,b);c.l+=e.l;c.t+=e.t;c.w-=e.w;c.h-=e.h;return c}}});return{constrainedMoveable:l,boxConstrainedMoveable:c,parentConstrainedMoveable:e}})},"dijit/typematic":function(){define("dojo/_base/array,dojo/_base/connect,dojo/_base/event,dojo/_base/kernel,dojo/_base/lang,dojo/on,dojo/sniff,./main".split(","),
-function(e,j,i,l,c,g,h,b){var f=b.typematic={_fireEventAndReload:function(){this._timer=null;this._callback(++this._count,this._node,this._evt);this._currentTimeout=Math.max(0>this._currentTimeout?this._initialDelay:1<this._subsequentDelay?this._subsequentDelay:Math.round(this._currentTimeout*this._subsequentDelay),this._minDelay);this._timer=setTimeout(c.hitch(this,"_fireEventAndReload"),this._currentTimeout)},trigger:function(a,b,d,f,e,g,h,i){if(e!=this._obj){this.stop();this._initialDelay=h||500;
-this._subsequentDelay=g||0.9;this._minDelay=i||10;this._obj=e;this._node=d;this._count=this._currentTimeout=-1;this._callback=c.hitch(b,f);this._evt={faux:!0};for(var l in a)"layerX"!=l&&"layerY"!=l&&(b=a[l],"function"!=typeof b&&"undefined"!=typeof b&&(this._evt[l]=b));this._fireEventAndReload()}},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(a,b,d,h,m,n,o){if(b.keyCode)b.charOrCode=
-b.keyCode,l.deprecated("keyCode attribute parameter for dijit.typematic.addKeyListener is deprecated. Use charOrCode instead.","","2.0");else if(b.charCode)b.charOrCode=String.fromCharCode(b.charCode),l.deprecated("charCode attribute parameter for dijit.typematic.addKeyListener is deprecated. Use charOrCode instead.","","2.0");var r=[g(a,j._keypress,c.hitch(this,function(c){c.charOrCode==b.charOrCode&&(void 0===b.ctrlKey||b.ctrlKey==c.ctrlKey)&&(void 0===b.altKey||b.altKey==c.altKey)&&(void 0===b.metaKey||
-b.metaKey==(c.metaKey||!1))&&(void 0===b.shiftKey||b.shiftKey==c.shiftKey)?(i.stop(c),f.trigger(c,d,a,h,b,m,n,o)):f._obj==b&&f.stop()})),g(a,"keyup",c.hitch(this,function(){f._obj==b&&f.stop()}))];return{remove:function(){e.forEach(r,function(a){a.remove()})}}},addMouseListener:function(a,b,d,i,m,l){var j=[g(a,"mousedown",c.hitch(this,function(c){c.preventDefault();f.trigger(c,b,a,d,a,i,m,l)})),g(a,"mouseup",c.hitch(this,function(a){this._obj&&a.preventDefault();f.stop()})),g(a,"mouseout",c.hitch(this,
-function(a){this._obj&&a.preventDefault();f.stop()})),g(a,"dblclick",c.hitch(this,function(e){e.preventDefault();9>h("ie")&&(f.trigger(e,b,a,d,a,i,m,l),setTimeout(c.hitch(this,f.stop),50))}))];return{remove:function(){e.forEach(j,function(a){a.remove()})}}},addListener:function(a,b,c,f,g,h,i,l){var j=[this.addKeyListener(b,c,f,g,h,i,l),this.addMouseListener(a,f,g,h,i,l)];return{remove:function(){e.forEach(j,function(a){a.remove()})}}}};return f})},"url:dijit/form/templates/HorizontalSlider.html":'<table class="dijit dijitReset dijitSlider dijitSliderH" cellspacing="0" cellpadding="0" border="0" rules="none" data-dojo-attach-event="onkeypress:_onKeyPress,onkeyup:_onKeyUp"\n\trole="presentation"\n\t><tr class="dijitReset"\n\t\t><td class="dijitReset" colspan="2"></td\n\t\t><td data-dojo-attach-point="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" style="display:none" data-dojo-attach-point="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" data-dojo-attach-event="press:_onClkDecBumper"></div\n\t\t></td\n\t\t><td class="dijitReset"\n\t\t\t><input data-dojo-attach-point="valueNode" type="hidden" ${!nameAttrSetting}\n\t\t\t/><div class="dijitReset dijitSliderBarContainerH" role="presentation" data-dojo-attach-point="sliderBarContainer"\n\t\t\t\t><div role="presentation" data-dojo-attach-point="progressBar" class="dijitSliderBar dijitSliderBarH dijitSliderProgressBar dijitSliderProgressBarH" data-dojo-attach-event="press:_onBarClick"\n\t\t\t\t\t><div class="dijitSliderMoveable dijitSliderMoveableH"\n\t\t\t\t\t\t><div data-dojo-attach-point="sliderHandle,focusNode" class="dijitSliderImageHandle dijitSliderImageHandleH" data-dojo-attach-event="press:_onHandleClick" role="slider"></div\n\t\t\t\t\t></div\n\t\t\t\t></div\n\t\t\t\t><div role="presentation" data-dojo-attach-point="remainingBar" class="dijitSliderBar dijitSliderBarH dijitSliderRemainingBar dijitSliderRemainingBarH" data-dojo-attach-event="press:_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" data-dojo-attach-event="press:_onClkIncBumper"></div\n\t\t></td\n\t\t><td class="dijitReset dijitSliderButtonContainer dijitSliderButtonContainerH"\n\t\t\t><div class="dijitSliderIncrementIconH" style="display:none" data-dojo-attach-point="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 data-dojo-attach-point="containerNode,bottomDecoration" class="dijitReset dijitSliderDecoration dijitSliderDecorationB dijitSliderDecorationH"></td\n\t\t><td class="dijitReset" colspan="2"></td\n\t></tr\n></table>\n',
-"dijit/form/NumberTextBox":function(){define(["dojo/_base/declare","dojo/_base/lang","dojo/number","./RangeBoundTextBox"],function(e,j,i,l){var c=e("dijit.form.NumberTextBoxMixin",null,{pattern:i.regexp,value:NaN,editOptions:{pattern:"#.######"},_formatter:i.format,postMixInProperties:function(){this.inherited(arguments);this._set("type","text")},_setConstraintsAttr:function(c){var e="number"==typeof c.places?c.places:0;e&&e++;if("number"!=typeof c.max)c.max=9*Math.pow(10,15-e);if("number"!=typeof c.min)c.min=
+this.showButtons&&this.own(r.addMouseListener(this.decrementButton,this,"_typematicCallback",25,500),r.addMouseListener(this.incrementButton,this,"_typematicCallback",25,500));this.connect(this.domNode,m.wheel,"_mouseWheeled");var a=k(u,{widget:this});this._movable=new l(this.sliderHandle,{mover:a});this._layoutHackIE7()},destroy:function(){this._movable.destroy();this._inProgressAnim&&"stopped"!=this._inProgressAnim.status&&this._inProgressAnim.stop(!0);this.inherited(arguments)}});h._Mover=u;return h})},
+"dojo/dnd/move":function(){define("../_base/declare,../dom-geometry,../dom-style,./common,./Mover,./Moveable".split(","),function(f,k,h,j,e,c){j=f("dojo.dnd.move.constrainedMoveable",c,{constraints:function(){},within:!1,constructor:function(c,b){b||(b={});this.constraints=b.constraints;this.within=b.within},onFirstMove:function(c){var b=this.constraintBox=this.constraints.call(this,c);b.r=b.l+b.w;b.b=b.t+b.h;this.within&&(c=k.getMarginSize(c.node),b.r-=c.w,b.b-=c.h)},onMove:function(c,b){var g=this.constraintBox,
+a=c.node.style;this.onMoving(c,b);b.l=b.l<g.l?g.l:g.r<b.l?g.r:b.l;b.t=b.t<g.t?g.t:g.b<b.t?g.b:b.t;a.left=b.l+"px";a.top=b.t+"px";this.onMoved(c,b)}});e=f("dojo.dnd.move.boxConstrainedMoveable",j,{box:{},constructor:function(c,b){var g=b&&b.box;this.constraints=function(){return g}}});f=f("dojo.dnd.move.parentConstrainedMoveable",j,{area:"content",constructor:function(c,b){var g=b&&b.area;this.constraints=function(){var a=this.node.parentNode,b=h.getComputedStyle(a),c=k.getMarginBox(a,b);if("margin"==
+g)return c;var e=k.getMarginExtents(a,b);c.l+=e.l;c.t+=e.t;c.w-=e.w;c.h-=e.h;if("border"==g)return c;e=k.getBorderExtents(a,b);c.l+=e.l;c.t+=e.t;c.w-=e.w;c.h-=e.h;if("padding"==g)return c;e=k.getPadExtents(a,b);c.l+=e.l;c.t+=e.t;c.w-=e.w;c.h-=e.h;return c}}});return{constrainedMoveable:j,boxConstrainedMoveable:e,parentConstrainedMoveable:f}})},"dijit/typematic":function(){define("dojo/_base/array,dojo/_base/connect,dojo/_base/event,dojo/_base/kernel,dojo/_base/lang,dojo/on,dojo/sniff,./main".split(","),
+function(f,k,h,j,e,c,i,b){var g=b.typematic={_fireEventAndReload:function(){this._timer=null;this._callback(++this._count,this._node,this._evt);this._currentTimeout=Math.max(0>this._currentTimeout?this._initialDelay:1<this._subsequentDelay?this._subsequentDelay:Math.round(this._currentTimeout*this._subsequentDelay),this._minDelay);this._timer=setTimeout(e.hitch(this,"_fireEventAndReload"),this._currentTimeout)},trigger:function(a,b,c,g,f,i,h,j){if(f!=this._obj){this.stop();this._initialDelay=h||500;
+this._subsequentDelay=i||0.9;this._minDelay=j||10;this._obj=f;this._node=c;this._count=this._currentTimeout=-1;this._callback=e.hitch(b,g);this._evt={faux:!0};for(var k in a)"layerX"!=k&&"layerY"!=k&&(b=a[k],"function"!=typeof b&&"undefined"!=typeof b&&(this._evt[k]=b));this._fireEventAndReload()}},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(a,b,d,i,m,n,o){if(b.keyCode)b.charOrCode=
+b.keyCode,j.deprecated("keyCode attribute parameter for dijit.typematic.addKeyListener is deprecated. Use charOrCode instead.","","2.0");else if(b.charCode)b.charOrCode=String.fromCharCode(b.charCode),j.deprecated("charCode attribute parameter for dijit.typematic.addKeyListener is deprecated. Use charOrCode instead.","","2.0");var r=[c(a,k._keypress,e.hitch(this,function(c){c.charOrCode==b.charOrCode&&(void 0===b.ctrlKey||b.ctrlKey==c.ctrlKey)&&(void 0===b.altKey||b.altKey==c.altKey)&&(void 0===b.metaKey||
+b.metaKey==(c.metaKey||!1))&&(void 0===b.shiftKey||b.shiftKey==c.shiftKey)?(h.stop(c),g.trigger(c,d,a,i,b,m,n,o)):g._obj==b&&g.stop()})),c(a,"keyup",e.hitch(this,function(){g._obj==b&&g.stop()}))];return{remove:function(){f.forEach(r,function(a){a.remove()})}}},addMouseListener:function(a,b,d,h,j,k){var o=[c(a,"mousedown",e.hitch(this,function(c){c.preventDefault();g.trigger(c,b,a,d,a,h,j,k)})),c(a,"mouseup",e.hitch(this,function(a){this._obj&&a.preventDefault();g.stop()})),c(a,"mouseout",e.hitch(this,
+function(a){this._obj&&a.preventDefault();g.stop()})),c(a,"dblclick",e.hitch(this,function(c){c.preventDefault();9>i("ie")&&(g.trigger(c,b,a,d,a,h,j,k),setTimeout(e.hitch(this,g.stop),50))}))];return{remove:function(){f.forEach(o,function(a){a.remove()})}}},addListener:function(a,b,c,g,e,i,h,j){var k=[this.addKeyListener(b,c,g,e,i,h,j),this.addMouseListener(a,g,e,i,h,j)];return{remove:function(){f.forEach(k,function(a){a.remove()})}}}};return g})},"url:dijit/form/templates/HorizontalSlider.html":'<table class="dijit dijitReset dijitSlider dijitSliderH" cellspacing="0" cellpadding="0" border="0" rules="none" data-dojo-attach-event="onkeypress:_onKeyPress,onkeyup:_onKeyUp"\n\trole="presentation"\n\t><tr class="dijitReset"\n\t\t><td class="dijitReset" colspan="2"></td\n\t\t><td data-dojo-attach-point="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" style="display:none" data-dojo-attach-point="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" data-dojo-attach-event="press:_onClkDecBumper"></div\n\t\t></td\n\t\t><td class="dijitReset"\n\t\t\t><input data-dojo-attach-point="valueNode" type="hidden" ${!nameAttrSetting}\n\t\t\t/><div class="dijitReset dijitSliderBarContainerH" role="presentation" data-dojo-attach-point="sliderBarContainer"\n\t\t\t\t><div role="presentation" data-dojo-attach-point="progressBar" class="dijitSliderBar dijitSliderBarH dijitSliderProgressBar dijitSliderProgressBarH" data-dojo-attach-event="press:_onBarClick"\n\t\t\t\t\t><div class="dijitSliderMoveable dijitSliderMoveableH"\n\t\t\t\t\t\t><div data-dojo-attach-point="sliderHandle,focusNode" class="dijitSliderImageHandle dijitSliderImageHandleH" data-dojo-attach-event="press:_onHandleClick" role="slider"></div\n\t\t\t\t\t></div\n\t\t\t\t></div\n\t\t\t\t><div role="presentation" data-dojo-attach-point="remainingBar" class="dijitSliderBar dijitSliderBarH dijitSliderRemainingBar dijitSliderRemainingBarH" data-dojo-attach-event="press:_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" data-dojo-attach-event="press:_onClkIncBumper"></div\n\t\t></td\n\t\t><td class="dijitReset dijitSliderButtonContainer dijitSliderButtonContainerH"\n\t\t\t><div class="dijitSliderIncrementIconH" style="display:none" data-dojo-attach-point="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 data-dojo-attach-point="containerNode,bottomDecoration" class="dijitReset dijitSliderDecoration dijitSliderDecorationB dijitSliderDecorationH"></td\n\t\t><td class="dijitReset" colspan="2"></td\n\t></tr\n></table>\n',
+"dijit/form/NumberTextBox":function(){define(["dojo/_base/declare","dojo/_base/lang","dojo/number","./RangeBoundTextBox"],function(f,k,h,j){var e=f("dijit.form.NumberTextBoxMixin",null,{pattern:h.regexp,value:NaN,editOptions:{pattern:"#.######"},_formatter:h.format,postMixInProperties:function(){this.inherited(arguments);this._set("type","text")},_setConstraintsAttr:function(c){var e="number"==typeof c.places?c.places:0;e&&e++;if("number"!=typeof c.max)c.max=9*Math.pow(10,15-e);if("number"!=typeof c.min)c.min=
-9*Math.pow(10,15-e);this.inherited(arguments,[c]);this.focusNode&&this.focusNode.value&&!isNaN(this.value)&&this.set("value",this.value)},_onFocus:function(){if(!this.disabled){var c=this.get("value");if("number"==typeof c&&!isNaN(c)&&(c=this.format(c,this.constraints),void 0!==c))this.textbox.value=c;this.inherited(arguments)}},format:function(c,e){var b=""+c;if("number"!=typeof c)return b;if(isNaN(c))return"";if(!("rangeCheck"in this&&this.rangeCheck(c,e))&&!1!==e.exponent&&/\de[-+]?\d/i.test(b))return b;
-this.editOptions&&this.focused&&(e=j.mixin({},e,this.editOptions));return this._formatter(c,e)},_parser:i.parse,parse:function(c,e){var b=this._parser(c,j.mixin({},e,this.editOptions&&this.focused?this.editOptions:{}));this.editOptions&&this.focused&&isNaN(b)&&(b=this._parser(c,e));return b},_getDisplayedValueAttr:function(){var c=this.inherited(arguments);return isNaN(c)?this.textbox.value:c},filter:function(c){return null==c||""===c?NaN:this.inherited(arguments)},serialize:function(c,e){return"number"!=
-typeof c||isNaN(c)?"":this.inherited(arguments)},_setBlurValue:function(){this._setValueAttr(j.hitch(j.mixin({},this,{focused:!0}),"get")("value"),!0)},_setValueAttr:function(c,e,b){if(void 0!==c&&void 0===b)if(b=""+c,"number"==typeof c)if(isNaN(c))b="";else{if("rangeCheck"in this&&this.rangeCheck(c,this.constraints)||!1===this.constraints.exponent||!/\de[-+]?\d/i.test(b))b=void 0}else c?c=void 0:(b="",c=NaN);this.inherited(arguments,[c,e,b])},_getValueAttr:function(){var c=this.inherited(arguments);
-if(isNaN(c)&&""!==this.textbox.value){if(!1!==this.constraints.exponent&&/\de[-+]?\d/i.test(this.textbox.value)&&RegExp("^"+i._realNumberRegexp(j.mixin({},this.constraints))+"$").test(this.textbox.value))return c=Number(this.textbox.value),isNaN(c)?void 0:c}else return c},isValid:function(c){if(!this.focused||this._isEmpty(this.textbox.value))return this.inherited(arguments);var e=this.get("value");return!isNaN(e)&&this.rangeCheck(e,this.constraints)?!1!==this.constraints.exponent&&/\de[-+]?\d/i.test(this.textbox.value)?
-!0:this.inherited(arguments):!1}}),e=e("dijit.form.NumberTextBox",[l,c],{baseClass:"dijitTextBox dijitNumberTextBox"});e.Mixin=c;return e})},"dojo/number":function(){define(["./_base/lang","./i18n","./i18n!./cldr/nls/number","./string","./regexp"],function(e,j,i,l,c){var g={};e.setObject("dojo.number",g);g.format=function(b,c){var c=e.mixin({},c||{}),a=j.normalizeLocale(c.locale),a=j.getLocalization("dojo.cldr","number",a);c.customs=a;a=c.pattern||a[(c.type||"decimal")+"Format"];return isNaN(b)||
-Infinity==Math.abs(b)?null:g._applyPattern(b,a,c)};g._numberPatternRE=/[#0,]*[#0](?:\.0*#*)?/;g._applyPattern=function(b,c,a){var a=a||{},e=a.customs.group,d=a.customs.decimal,c=c.split(";"),h=c[0],c=c[0>b?1:0]||"-"+h;if(-1!=c.indexOf("%"))b*=100;else if(-1!=c.indexOf("\u2030"))b*=1E3;else if(-1!=c.indexOf("\u00a4"))e=a.customs.currencyGroup||e,d=a.customs.currencyDecimal||d,c=c.replace(/\u00a4{1,3}/,function(b){return a[["symbol","currency","displayName"][b.length-1]]||a.currency||""});else if(-1!=
-c.indexOf("E"))throw Error("exponential notation not supported");var i=g._numberPatternRE,h=h.match(i);if(!h)throw Error("unable to find a number expression in pattern: "+c);if(!1===a.fractional)a.places=0;return c.replace(i,g._formatAbsolute(b,h[0],{decimal:d,group:e,places:a.places,round:a.round}))};g.round=function(b,c,a){a=10/(a||10);return(a*+b).toFixed(c)/a};if(0==(0.9).toFixed()){var h=g.round;g.round=function(b,c,a){var e=Math.pow(10,-c||0),d=Math.abs(b);if(!b||d>=e||5>d*Math.pow(10,c+1))e=
-0;return h(b,c,a)+(0<b?e:-e)}}g._formatAbsolute=function(b,c,a){a=a||{};if(!0===a.places)a.places=0;if(Infinity===a.places)a.places=6;var c=c.split("."),e="string"==typeof a.places&&a.places.indexOf(","),d=a.places;if(e)d=a.places.substring(e+1);else if(!(0<=d))d=(c[1]||[]).length;0>a.round||(b=g.round(b,d,a.round));var b=(""+Math.abs(b)).split("."),h=b[1]||"";if(c[1]||a.places){if(e)a.places=a.places.substring(0,e);e=void 0!==a.places?a.places:c[1]&&c[1].lastIndexOf("0")+1;e>h.length&&(b[1]=l.pad(h,
-e,"0",!0));d<h.length&&(b[1]=h.substr(0,d))}else b[1]&&b.pop();d=c[0].replace(",","");e=d.indexOf("0");-1!=e&&(e=d.length-e,e>b[0].length&&(b[0]=l.pad(b[0],e)),-1==d.indexOf("#")&&(b[0]=b[0].substr(b[0].length-e)));var d=c[0].lastIndexOf(","),i,j;-1!=d&&(i=c[0].length-d-1,c=c[0].substr(0,d),d=c.lastIndexOf(","),-1!=d&&(j=c.length-d-1));c=[];for(d=b[0];d;)e=d.length-i,c.push(0<e?d.substr(e):d),d=0<e?d.slice(0,e):"",j&&(i=j,delete j);b[0]=c.reverse().join(a.group||",");return b.join(a.decimal||".")};
-g.regexp=function(b){return g._parseInfo(b).regexp};g._parseInfo=function(b){var b=b||{},f=j.normalizeLocale(b.locale),f=j.getLocalization("dojo.cldr","number",f),a=b.pattern||f[(b.type||"decimal")+"Format"],e=f.group,d=f.decimal,h=1;if(-1!=a.indexOf("%"))h/=100;else if(-1!=a.indexOf("\u2030"))h/=1E3;else{var i=-1!=a.indexOf("\u00a4");i&&(e=f.currencyGroup||e,d=f.currencyDecimal||d)}f=a.split(";");1==f.length&&f.push("-"+f[0]);f=c.buildGroupRE(f,function(a){a="(?:"+c.escapeString(a,".")+")";return a.replace(g._numberPatternRE,
-function(a){var c={signed:!1,separator:b.strict?e:[e,""],fractional:b.fractional,decimal:d,exponent:!1},a=a.split("."),f=b.places;1==a.length&&1!=h&&(a[1]="###");if(1==a.length||0===f)c.fractional=!1;else{void 0===f&&(f=b.pattern?a[1].lastIndexOf("0")+1:Infinity);if(f&&void 0==b.fractional)c.fractional=!0;!b.places&&f<a[1].length&&(f+=","+a[1].length);c.places=f}a=a[0].split(",");if(1<a.length&&(c.groupSize=a.pop().length,1<a.length))c.groupSize2=a.pop().length;return"("+g._realNumberRegexp(c)+")"})},
-!0);i&&(f=f.replace(/([\s\xa0]*)(\u00a4{1,3})([\s\xa0]*)/g,function(a,d,f,e){a=c.escapeString(b[["symbol","currency","displayName"][f.length-1]]||b.currency||"");d=d?"[\\s\\xa0]":"";e=e?"[\\s\\xa0]":"";return!b.strict?(d&&(d+="*"),e&&(e+="*"),"(?:"+d+a+e+")?"):d+a+e}));return{regexp:f.replace(/[\xa0 ]/g,"[\\s\\xa0]"),group:e,decimal:d,factor:h}};g.parse=function(b,c){var a=g._parseInfo(c),e=RegExp("^"+a.regexp+"$").exec(b);if(!e)return NaN;var d=e[1];if(!e[1]){if(!e[2])return NaN;d=e[2];a.factor*=
--1}d=d.replace(RegExp("["+a.group+"\\s\\xa0]","g"),"").replace(a.decimal,".");return d*a.factor};g._realNumberRegexp=function(b){b=b||{};if(!("places"in b))b.places=Infinity;if("string"!=typeof b.decimal)b.decimal=".";if(!("fractional"in b)||/^0/.test(b.places))b.fractional=[!0,!1];if(!("exponent"in b))b.exponent=[!0,!1];if(!("eSigned"in b))b.eSigned=[!0,!1];var f=g._integerRegexp(b),a=c.buildGroupRE(b.fractional,function(a){var c="";a&&0!==b.places&&(c="\\"+b.decimal,c=Infinity==b.places?"(?:"+c+
-"\\d+)?":c+("\\d{"+b.places+"}"));return c},!0),e=c.buildGroupRE(b.exponent,function(a){return a?"([eE]"+g._integerRegexp({signed:b.eSigned})+")":""}),f=f+a;a&&(f="(?:(?:"+f+")|(?:"+a+"))");return f+e};g._integerRegexp=function(b){b=b||{};if(!("signed"in b))b.signed=[!0,!1];if("separator"in b){if(!("groupSize"in b))b.groupSize=3}else b.separator="";var f=c.buildGroupRE(b.signed,function(a){return a?"[-+]":""},!0),a=c.buildGroupRE(b.separator,function(a){if(!a)return"(?:\\d+)";a=c.escapeString(a);
-" "==a?a="\\s":"\u00a0"==a&&(a="\\s\\xa0");var d=b.groupSize,f=b.groupSize2;return f?(a="(?:0|[1-9]\\d{0,"+(f-1)+"}(?:["+a+"]\\d{"+f+"})*["+a+"]\\d{"+d+"})",0<d-f?"(?:"+a+"|(?:0|[1-9]\\d{0,"+(d-1)+"}))":a):"(?:0|[1-9]\\d{0,"+(d-1)+"}(?:["+a+"]\\d{"+d+"})*)"},!0);return f+a};return g})},"dijit/form/RangeBoundTextBox":function(){define(["dojo/_base/declare","dojo/i18n","./MappedTextBox"],function(e,j,i){return e("dijit.form.RangeBoundTextBox",i,{rangeMessage:"",rangeCheck:function(e,c){return("min"in
-c?0<=this.compare(e,c.min):!0)&&("max"in c?0>=this.compare(e,c.max):!0)},isInRange:function(){return this.rangeCheck(this.get("value"),this.constraints)},_isDefinitelyOutOfRange:function(){var e=this.get("value");if(null==e)return!1;var c=!1;if("min"in this.constraints)c=this.constraints.min,c=0>this.compare(e,"number"==typeof c&&0<=c&&0!=e?0:c);if(!c&&"max"in this.constraints)c=this.constraints.max,c=0<this.compare(e,"number"!=typeof c||0<c?c:0);return c},_isValidSubset:function(){return this.inherited(arguments)&&
-!this._isDefinitelyOutOfRange()},isValid:function(e){return this.inherited(arguments)&&(this._isEmpty(this.textbox.value)&&!this.required||this.isInRange(e))},getErrorMessage:function(e){var c=this.get("value");return null!=c&&""!==c&&("number"!=typeof c||!isNaN(c))&&!this.isInRange(e)?this.rangeMessage:this.inherited(arguments)},postMixInProperties:function(){this.inherited(arguments);if(!this.rangeMessage)this.messages=j.getLocalization("dijit.form","validate",this.lang),this.rangeMessage=this.messages.rangeMessage},
-_setConstraintsAttr:function(e){this.inherited(arguments);this.focusNode&&(void 0!==this.constraints.min?this.focusNode.setAttribute("aria-valuemin",this.constraints.min):this.focusNode.removeAttribute("aria-valuemin"),void 0!==this.constraints.max?this.focusNode.setAttribute("aria-valuemax",this.constraints.max):this.focusNode.removeAttribute("aria-valuemax"))},_setValueAttr:function(e,c){this.focusNode.setAttribute("aria-valuenow",e);this.inherited(arguments)},applyTextDir:function(){}})})},"dijit/form/MappedTextBox":function(){define(["dojo/_base/declare",
-"dojo/dom-construct","./ValidationTextBox"],function(e,j,i){return e("dijit.form.MappedTextBox",i,{postMixInProperties:function(){this.inherited(arguments);this.nameAttrSetting=""},_setNameAttr:null,serialize:function(e){return e.toString?e.toString():""},toString:function(){var e=this.filter(this.get("value"));return null!=e?"string"==typeof e?e:this.serialize(e,this.constraints):""},validate:function(){this.valueNode.value=this.toString();return this.inherited(arguments)},buildRendering:function(){this.inherited(arguments);
-this.valueNode=j.place("<input type='hidden'"+(this.name?' name="'+this.name.replace(/"/g,"&quot;")+'"':"")+"/>",this.textbox,"after")},reset:function(){this.valueNode.value="";this.inherited(arguments)}})})},"dijit/form/ValidationTextBox":function(){define("dojo/_base/declare,dojo/_base/kernel,dojo/i18n,./TextBox,../Tooltip,dojo/text!./templates/ValidationTextBox.html,dojo/i18n!./nls/validate".split(","),function(e,j,i,l,c,g){var h;return h=e("dijit.form.ValidationTextBox",l,{templateString:g,required:!1,
-promptMessage:"",invalidMessage:"$_unset_$",missingMessage:"$_unset_$",message:"",constraints:{},pattern:".*",regExp:"",regExpGen:function(){},state:"",tooltipPosition:[],_deprecateRegExp:function(b,c){c!=h.prototype[b]&&(j.deprecated("ValidationTextBox id="+this.id+", set('"+b+"', ...) is deprecated. Use set('pattern', ...) instead.","","2.0"),this.set("pattern",c))},_setRegExpGenAttr:function(b){this._deprecateRegExp("regExpGen",b);this.regExpGen=this._getPatternAttr},_setRegExpAttr:function(b){this._deprecateRegExp("regExp",
+this.editOptions&&this.focused&&(e=k.mixin({},e,this.editOptions));return this._formatter(c,e)},_parser:h.parse,parse:function(c,e){var b=this._parser(c,k.mixin({},e,this.editOptions&&this.focused?this.editOptions:{}));this.editOptions&&this.focused&&isNaN(b)&&(b=this._parser(c,e));return b},_getDisplayedValueAttr:function(){var c=this.inherited(arguments);return isNaN(c)?this.textbox.value:c},filter:function(c){return null==c||""===c?NaN:this.inherited(arguments)},serialize:function(c,e){return"number"!=
+typeof c||isNaN(c)?"":this.inherited(arguments)},_setBlurValue:function(){this._setValueAttr(k.hitch(k.mixin({},this,{focused:!0}),"get")("value"),!0)},_setValueAttr:function(c,e,b){if(void 0!==c&&void 0===b)if(b=""+c,"number"==typeof c)if(isNaN(c))b="";else{if("rangeCheck"in this&&this.rangeCheck(c,this.constraints)||!1===this.constraints.exponent||!/\de[-+]?\d/i.test(b))b=void 0}else c?c=void 0:(b="",c=NaN);this.inherited(arguments,[c,e,b])},_getValueAttr:function(){var c=this.inherited(arguments);
+if(isNaN(c)&&""!==this.textbox.value){if(!1!==this.constraints.exponent&&/\de[-+]?\d/i.test(this.textbox.value)&&RegExp("^"+h._realNumberRegexp(k.mixin({},this.constraints))+"$").test(this.textbox.value))return c=Number(this.textbox.value),isNaN(c)?void 0:c}else return c},isValid:function(c){if(!this.focused||this._isEmpty(this.textbox.value))return this.inherited(arguments);var e=this.get("value");return!isNaN(e)&&this.rangeCheck(e,this.constraints)?!1!==this.constraints.exponent&&/\de[-+]?\d/i.test(this.textbox.value)?
+!0:this.inherited(arguments):!1}}),f=f("dijit.form.NumberTextBox",[j,e],{baseClass:"dijitTextBox dijitNumberTextBox"});f.Mixin=e;return f})},"dojo/number":function(){define(["./_base/lang","./i18n","./i18n!./cldr/nls/number","./string","./regexp"],function(f,k,h,j,e){var c={};f.setObject("dojo.number",c);c.format=function(b,e){var e=f.mixin({},e||{}),a=k.normalizeLocale(e.locale),a=k.getLocalization("dojo.cldr","number",a);e.customs=a;a=e.pattern||a[(e.type||"decimal")+"Format"];return isNaN(b)||
+Infinity==Math.abs(b)?null:c._applyPattern(b,a,e)};c._numberPatternRE=/[#0,]*[#0](?:\.0*#*)?/;c._applyPattern=function(b,e,a){var a=a||{},f=a.customs.group,d=a.customs.decimal,e=e.split(";"),i=e[0],e=e[0>b?1:0]||"-"+i;if(-1!=e.indexOf("%"))b*=100;else if(-1!=e.indexOf("\u2030"))b*=1E3;else if(-1!=e.indexOf("\u00a4"))f=a.customs.currencyGroup||f,d=a.customs.currencyDecimal||d,e=e.replace(/\u00a4{1,3}/,function(b){return a[["symbol","currency","displayName"][b.length-1]]||a.currency||""});else if(-1!=
+e.indexOf("E"))throw Error("exponential notation not supported");var h=c._numberPatternRE,i=i.match(h);if(!i)throw Error("unable to find a number expression in pattern: "+e);if(!1===a.fractional)a.places=0;return e.replace(h,c._formatAbsolute(b,i[0],{decimal:d,group:f,places:a.places,round:a.round}))};c.round=function(b,c,a){a=10/(a||10);return(a*+b).toFixed(c)/a};if(0==(0.9).toFixed()){var i=c.round;c.round=function(b,c,a){var e=Math.pow(10,-c||0),d=Math.abs(b);if(!b||d>=e||5>d*Math.pow(10,c+1))e=
+0;return i(b,c,a)+(0<b?e:-e)}}c._formatAbsolute=function(b,e,a){a=a||{};if(!0===a.places)a.places=0;if(Infinity===a.places)a.places=6;var e=e.split("."),f="string"==typeof a.places&&a.places.indexOf(","),d=a.places;if(f)d=a.places.substring(f+1);else if(!(0<=d))d=(e[1]||[]).length;0>a.round||(b=c.round(b,d,a.round));var b=(""+Math.abs(b)).split("."),i=b[1]||"";if(e[1]||a.places){if(f)a.places=a.places.substring(0,f);f=void 0!==a.places?a.places:e[1]&&e[1].lastIndexOf("0")+1;f>i.length&&(b[1]=j.pad(i,
+f,"0",!0));d<i.length&&(b[1]=i.substr(0,d))}else b[1]&&b.pop();d=e[0].replace(",","");f=d.indexOf("0");-1!=f&&(f=d.length-f,f>b[0].length&&(b[0]=j.pad(b[0],f)),-1==d.indexOf("#")&&(b[0]=b[0].substr(b[0].length-f)));var d=e[0].lastIndexOf(","),h,k;-1!=d&&(h=e[0].length-d-1,e=e[0].substr(0,d),d=e.lastIndexOf(","),-1!=d&&(k=e.length-d-1));e=[];for(d=b[0];d;)f=d.length-h,e.push(0<f?d.substr(f):d),d=0<f?d.slice(0,f):"",k&&(h=k,delete k);b[0]=e.reverse().join(a.group||",");return b.join(a.decimal||".")};
+c.regexp=function(b){return c._parseInfo(b).regexp};c._parseInfo=function(b){var b=b||{},g=k.normalizeLocale(b.locale),g=k.getLocalization("dojo.cldr","number",g),a=b.pattern||g[(b.type||"decimal")+"Format"],f=g.group,d=g.decimal,i=1;if(-1!=a.indexOf("%"))i/=100;else if(-1!=a.indexOf("\u2030"))i/=1E3;else{var h=-1!=a.indexOf("\u00a4");h&&(f=g.currencyGroup||f,d=g.currencyDecimal||d)}g=a.split(";");1==g.length&&g.push("-"+g[0]);g=e.buildGroupRE(g,function(a){a="(?:"+e.escapeString(a,".")+")";return a.replace(c._numberPatternRE,
+function(a){var e={signed:!1,separator:b.strict?f:[f,""],fractional:b.fractional,decimal:d,exponent:!1},a=a.split("."),g=b.places;1==a.length&&1!=i&&(a[1]="###");if(1==a.length||0===g)e.fractional=!1;else{void 0===g&&(g=b.pattern?a[1].lastIndexOf("0")+1:Infinity);if(g&&void 0==b.fractional)e.fractional=!0;!b.places&&g<a[1].length&&(g+=","+a[1].length);e.places=g}a=a[0].split(",");if(1<a.length&&(e.groupSize=a.pop().length,1<a.length))e.groupSize2=a.pop().length;return"("+c._realNumberRegexp(e)+")"})},
+!0);h&&(g=g.replace(/([\s\xa0]*)(\u00a4{1,3})([\s\xa0]*)/g,function(a,c,d,g){a=e.escapeString(b[["symbol","currency","displayName"][d.length-1]]||b.currency||"");c=c?"[\\s\\xa0]":"";g=g?"[\\s\\xa0]":"";return!b.strict?(c&&(c+="*"),g&&(g+="*"),"(?:"+c+a+g+")?"):c+a+g}));return{regexp:g.replace(/[\xa0 ]/g,"[\\s\\xa0]"),group:f,decimal:d,factor:i}};c.parse=function(b,e){var a=c._parseInfo(e),f=RegExp("^"+a.regexp+"$").exec(b);if(!f)return NaN;var d=f[1];if(!f[1]){if(!f[2])return NaN;d=f[2];a.factor*=
+-1}d=d.replace(RegExp("["+a.group+"\\s\\xa0]","g"),"").replace(a.decimal,".");return d*a.factor};c._realNumberRegexp=function(b){b=b||{};if(!("places"in b))b.places=Infinity;if("string"!=typeof b.decimal)b.decimal=".";if(!("fractional"in b)||/^0/.test(b.places))b.fractional=[!0,!1];if(!("exponent"in b))b.exponent=[!0,!1];if(!("eSigned"in b))b.eSigned=[!0,!1];var g=c._integerRegexp(b),a=e.buildGroupRE(b.fractional,function(a){var c="";a&&0!==b.places&&(c="\\"+b.decimal,c=Infinity==b.places?"(?:"+c+
+"\\d+)?":c+("\\d{"+b.places+"}"));return c},!0),f=e.buildGroupRE(b.exponent,function(a){return a?"([eE]"+c._integerRegexp({signed:b.eSigned})+")":""}),g=g+a;a&&(g="(?:(?:"+g+")|(?:"+a+"))");return g+f};c._integerRegexp=function(b){b=b||{};if(!("signed"in b))b.signed=[!0,!1];if("separator"in b){if(!("groupSize"in b))b.groupSize=3}else b.separator="";var c=e.buildGroupRE(b.signed,function(a){return a?"[-+]":""},!0),a=e.buildGroupRE(b.separator,function(a){if(!a)return"(?:\\d+)";a=e.escapeString(a);
+" "==a?a="\\s":"\u00a0"==a&&(a="\\s\\xa0");var c=b.groupSize,g=b.groupSize2;return g?(a="(?:0|[1-9]\\d{0,"+(g-1)+"}(?:["+a+"]\\d{"+g+"})*["+a+"]\\d{"+c+"})",0<c-g?"(?:"+a+"|(?:0|[1-9]\\d{0,"+(c-1)+"}))":a):"(?:0|[1-9]\\d{0,"+(c-1)+"}(?:["+a+"]\\d{"+c+"})*)"},!0);return c+a};return c})},"dijit/form/RangeBoundTextBox":function(){define(["dojo/_base/declare","dojo/i18n","./MappedTextBox"],function(f,k,h){return f("dijit.form.RangeBoundTextBox",h,{rangeMessage:"",rangeCheck:function(f,e){return("min"in
+e?0<=this.compare(f,e.min):!0)&&("max"in e?0>=this.compare(f,e.max):!0)},isInRange:function(){return this.rangeCheck(this.get("value"),this.constraints)},_isDefinitelyOutOfRange:function(){var f=this.get("value");if(null==f)return!1;var e=!1;if("min"in this.constraints)e=this.constraints.min,e=0>this.compare(f,"number"==typeof e&&0<=e&&0!=f?0:e);if(!e&&"max"in this.constraints)e=this.constraints.max,e=0<this.compare(f,"number"!=typeof e||0<e?e:0);return e},_isValidSubset:function(){return this.inherited(arguments)&&
+!this._isDefinitelyOutOfRange()},isValid:function(f){return this.inherited(arguments)&&(this._isEmpty(this.textbox.value)&&!this.required||this.isInRange(f))},getErrorMessage:function(f){var e=this.get("value");return null!=e&&""!==e&&("number"!=typeof e||!isNaN(e))&&!this.isInRange(f)?this.rangeMessage:this.inherited(arguments)},postMixInProperties:function(){this.inherited(arguments);if(!this.rangeMessage)this.messages=k.getLocalization("dijit.form","validate",this.lang),this.rangeMessage=this.messages.rangeMessage},
+_setConstraintsAttr:function(f){this.inherited(arguments);this.focusNode&&(void 0!==this.constraints.min?this.focusNode.setAttribute("aria-valuemin",this.constraints.min):this.focusNode.removeAttribute("aria-valuemin"),void 0!==this.constraints.max?this.focusNode.setAttribute("aria-valuemax",this.constraints.max):this.focusNode.removeAttribute("aria-valuemax"))},_setValueAttr:function(f,e){this.focusNode.setAttribute("aria-valuenow",f);this.inherited(arguments)},applyTextDir:function(){}})})},"dijit/form/MappedTextBox":function(){define(["dojo/_base/declare",
+"dojo/dom-construct","./ValidationTextBox"],function(f,k,h){return f("dijit.form.MappedTextBox",h,{postMixInProperties:function(){this.inherited(arguments);this.nameAttrSetting=""},_setNameAttr:null,serialize:function(f){return f.toString?f.toString():""},toString:function(){var f=this.filter(this.get("value"));return null!=f?"string"==typeof f?f:this.serialize(f,this.constraints):""},validate:function(){this.valueNode.value=this.toString();return this.inherited(arguments)},buildRendering:function(){this.inherited(arguments);
+this.valueNode=k.place("<input type='hidden'"+(this.name?' name="'+this.name.replace(/"/g,"&quot;")+'"':"")+"/>",this.textbox,"after")},reset:function(){this.valueNode.value="";this.inherited(arguments)}})})},"dijit/form/ValidationTextBox":function(){define("dojo/_base/declare,dojo/_base/kernel,dojo/i18n,./TextBox,../Tooltip,dojo/text!./templates/ValidationTextBox.html,dojo/i18n!./nls/validate".split(","),function(f,k,h,j,e,c){var i;return i=f("dijit.form.ValidationTextBox",j,{templateString:c,required:!1,
+promptMessage:"",invalidMessage:"$_unset_$",missingMessage:"$_unset_$",message:"",constraints:{},pattern:".*",regExp:"",regExpGen:function(){},state:"",tooltipPosition:[],_deprecateRegExp:function(b,c){c!=i.prototype[b]&&(k.deprecated("ValidationTextBox id="+this.id+", set('"+b+"', ...) is deprecated. Use set('pattern', ...) instead.","","2.0"),this.set("pattern",c))},_setRegExpGenAttr:function(b){this._deprecateRegExp("regExpGen",b);this.regExpGen=this._getPatternAttr},_setRegExpAttr:function(b){this._deprecateRegExp("regExp",
b)},_setValueAttr:function(){this.inherited(arguments);this.validate(this.focused)},validator:function(b,c){return RegExp("^(?:"+this._getPatternAttr(c)+")"+(this.required?"":"?")+"$").test(b)&&(!this.required||!this._isEmpty(b))&&(this._isEmpty(b)||void 0!==this.parse(b,c))},_isValidSubset:function(){return 0==this.textbox.value.search(this._partialre)},isValid:function(){return this.validator(this.textbox.value,this.constraints)},_isEmpty:function(b){return(this.trim?/^\s*$/:/^$/).test(b)},getErrorMessage:function(){var b=
"$_unset_$"==this.invalidMessage?this.messages.invalidMessage:!this.invalidMessage?this.promptMessage:this.invalidMessage,c="$_unset_$"==this.missingMessage?this.messages.missingMessage:!this.missingMessage?b:this.missingMessage;return this.required&&this._isEmpty(this.textbox.value)?c:b},getPromptMessage:function(){return this.promptMessage},_maskValidSubsetError:!0,validate:function(b){var c="",a=this.disabled||this.isValid(b);if(a)this._maskValidSubsetError=!0;var e=this._isEmpty(this.textbox.value),
-d=!a&&b&&this._isValidSubset();this._set("state",a?"":((!this._hasBeenBlurred||b)&&e||d)&&this._maskValidSubsetError?"Incomplete":"Error");this.focusNode.setAttribute("aria-invalid",a?"false":"true");"Error"==this.state?(this._maskValidSubsetError=b&&d,c=this.getErrorMessage(b)):"Incomplete"==this.state?(c=this.getPromptMessage(b),this._maskValidSubsetError=!this._hasBeenBlurred||b):e&&(c=this.getPromptMessage(b));this.set("message",c);return a},displayMessage:function(b){b&&this.focused?c.show(b,
-this.domNode,this.tooltipPosition,!this.isLeftToRight()):c.hide(this.domNode)},_refreshState:function(){this._created&&this.validate(this.focused);this.inherited(arguments)},constructor:function(){this.constraints={};this.baseClass+=" dijitValidationTextBox"},startup:function(){this.inherited(arguments);this._refreshState()},_setConstraintsAttr:function(b){if(!b.locale&&this.lang)b.locale=this.lang;this._set("constraints",b);this._refreshState()},_setPatternAttr:function(b){this._set("pattern",b)},
+d=!a&&b&&this._isValidSubset();this._set("state",a?"":((!this._hasBeenBlurred||b)&&e||d)&&this._maskValidSubsetError?"Incomplete":"Error");this.focusNode.setAttribute("aria-invalid",a?"false":"true");"Error"==this.state?(this._maskValidSubsetError=b&&d,c=this.getErrorMessage(b)):"Incomplete"==this.state?(c=this.getPromptMessage(b),this._maskValidSubsetError=!this._hasBeenBlurred||b):e&&(c=this.getPromptMessage(b));this.set("message",c);return a},displayMessage:function(b){b&&this.focused?e.show(b,
+this.domNode,this.tooltipPosition,!this.isLeftToRight()):e.hide(this.domNode)},_refreshState:function(){this._created&&this.validate(this.focused);this.inherited(arguments)},constructor:function(){this.constraints={};this.baseClass+=" dijitValidationTextBox"},startup:function(){this.inherited(arguments);this._refreshState()},_setConstraintsAttr:function(b){if(!b.locale&&this.lang)b.locale=this.lang;this._set("constraints",b);this._refreshState()},_setPatternAttr:function(b){this._set("pattern",b)},
_getPatternAttr:function(b){var c=this.pattern;"function"==(typeof c).toLowerCase()&&(c=this.pattern(b||this.constraints));if(c!=this._lastRegExp){var a="";this._lastRegExp=c;".*"!=c&&c.replace(/\\.|\[\]|\[.*?[^\\]{1}\]|\{.*?\}|\(\?[=:!]|./g,function(b){switch(b.charAt(0)){case "{":case "+":case "?":case "*":case "^":case "$":case "|":case "(":a+=b;break;case ")":a+="|$)";break;default:a+="(?:"+b+"|$)"}});try{"".search(a)}catch(e){a=this.pattern}this._partialre="^(?:"+a+")$"}return c},postMixInProperties:function(){this.inherited(arguments);
-this.messages=i.getLocalization("dijit.form","validate",this.lang);this._setConstraintsAttr(this.constraints)},_setDisabledAttr:function(b){this.inherited(arguments);this._refreshState()},_setRequiredAttr:function(b){this._set("required",b);this.focusNode.setAttribute("aria-required",b);this._refreshState()},_setMessageAttr:function(b){this._set("message",b);this.displayMessage(b)},reset:function(){this._maskValidSubsetError=!0;this.inherited(arguments)},_onBlur:function(){this.displayMessage("");
+this.messages=h.getLocalization("dijit.form","validate",this.lang);this._setConstraintsAttr(this.constraints)},_setDisabledAttr:function(b){this.inherited(arguments);this._refreshState()},_setRequiredAttr:function(b){this._set("required",b);this.focusNode.setAttribute("aria-required",b);this._refreshState()},_setMessageAttr:function(b){this._set("message",b);this.displayMessage(b)},reset:function(){this._maskValidSubsetError=!0;this.inherited(arguments)},_onBlur:function(){this.displayMessage("");
this.inherited(arguments)}})})},"url:dijit/form/templates/ValidationTextBox.html":'<div class="dijit dijitReset dijitInline dijitLeft"\n\tid="widget_${id}" role="presentation"\n\t><div class=\'dijitReset dijitValidationContainer\'\n\t\t><input class="dijitReset dijitInputField dijitValidationIcon dijitValidationInner" value="&#935; " type="text" tabIndex="-1" readonly="readonly" role="presentation"\n\t/></div\n\t><div class="dijitReset dijitInputField dijitInputContainer"\n\t\t><input class="dijitReset dijitInputInner" data-dojo-attach-point=\'textbox,focusNode\' autocomplete="off"\n\t\t\t${!nameAttrSetting} type=\'${type}\'\n\t/></div\n></div>\n',
-"dijit/form/NumberSpinner":function(){define(["dojo/_base/declare","dojo/_base/event","dojo/keys","./_Spinner","./NumberTextBox"],function(e,j,i,l,c){return e("dijit.form.NumberSpinner",[l,c.Mixin],{adjust:function(c,e){var b=this.constraints,f=isNaN(c),a=!isNaN(b.max),i=!isNaN(b.min);f&&0!=e&&(c=0<e?i?b.min:a?b.max:0:a?this.constraints.max:i?b.min:0);var d=c+e;if(f||isNaN(d))return c;if(a&&d>b.max)d=b.max;if(i&&d<b.min)d=b.min;return d},_onKeyPress:function(c){if((c.charOrCode==i.HOME||c.charOrCode==
-i.END)&&!c.ctrlKey&&!c.altKey&&!c.metaKey&&"undefined"!=typeof this.get("value")){var e=this.constraints[c.charOrCode==i.HOME?"min":"max"];"number"==typeof e&&this._setValueAttr(e,!1);j.stop(c)}}})})},"dijit/form/_Spinner":function(){define("dojo/_base/declare,dojo/_base/event,dojo/keys,dojo/_base/lang,dojo/sniff,dojo/mouse,../typematic,./RangeBoundTextBox,dojo/text!./templates/Spinner.html,./_TextBoxMixin".split(","),function(e,j,i,l,c,g,h,b,f,a){return e("dijit.form._Spinner",b,{defaultTimeout:500,
-minimumTimeout:10,timeoutChangeRate:0.9,smallDelta:1,largeDelta:10,templateString:f,baseClass:"dijitTextBox dijitSpinner",cssStateNodes:{upArrowNode:"dijitUpArrowButton",downArrowNode:"dijitDownArrowButton"},adjust:function(a){return a},_arrowPressed:function(b,c,f){!this.disabled&&!this.readOnly&&(this._setValueAttr(this.adjust(this.get("value"),c*f),!1),a.selectInputText(this.textbox,this.textbox.value.length))},_arrowReleased:function(){this._wheelTimer=null},_typematicCallback:function(a,b,c){var f=
-this.smallDelta;if(b==this.textbox)b=c.charOrCode,f=b==i.PAGE_UP||b==i.PAGE_DOWN?this.largeDelta:this.smallDelta,b=b==i.UP_ARROW||b==i.PAGE_UP?this.upArrowNode:this.downArrowNode;-1==a?this._arrowReleased(b):this._arrowPressed(b,b==this.upArrowNode?1:-1,f)},_wheelTimer:null,_mouseWheeled:function(a){j.stop(a);var b=a.wheelDelta/120;Math.floor(b)!=b&&(b=0<a.wheelDelta?1:-1);a=a.detail?-1*a.detail:b;if(0!==a){var c=this[0<a?"upArrowNode":"downArrowNode"];this._arrowPressed(c,a,this.smallDelta);this._wheelTimer&&
-this._wheelTimer.remove();this._wheelTimer=this.defer(function(){this._arrowReleased(c)},50)}},postCreate:function(){this.inherited(arguments);this.connect(this.domNode,g.wheel,"_mouseWheeled");this.own(h.addListener(this.upArrowNode,this.textbox,{charOrCode:i.UP_ARROW,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout,this.minimumTimeout),h.addListener(this.downArrowNode,this.textbox,{charOrCode:i.DOWN_ARROW,ctrlKey:!1,altKey:!1,shiftKey:!1,
-metaKey:!1},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout,this.minimumTimeout),h.addListener(this.upArrowNode,this.textbox,{charOrCode:i.PAGE_UP,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout,this.minimumTimeout),h.addListener(this.downArrowNode,this.textbox,{charOrCode:i.PAGE_DOWN,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout,this.minimumTimeout))}})})},
+"dijit/form/NumberSpinner":function(){define(["dojo/_base/declare","dojo/_base/event","dojo/keys","./_Spinner","./NumberTextBox"],function(f,k,h,j,e){return f("dijit.form.NumberSpinner",[j,e.Mixin],{adjust:function(c,e){var b=this.constraints,g=isNaN(c),a=!isNaN(b.max),f=!isNaN(b.min);g&&0!=e&&(c=0<e?f?b.min:a?b.max:0:a?this.constraints.max:f?b.min:0);var d=c+e;if(g||isNaN(d))return c;if(a&&d>b.max)d=b.max;if(f&&d<b.min)d=b.min;return d},_onKeyPress:function(c){if((c.charOrCode==h.HOME||c.charOrCode==
+h.END)&&!c.ctrlKey&&!c.altKey&&!c.metaKey&&"undefined"!=typeof this.get("value")){var e=this.constraints[c.charOrCode==h.HOME?"min":"max"];"number"==typeof e&&this._setValueAttr(e,!1);k.stop(c)}}})})},"dijit/form/_Spinner":function(){define("dojo/_base/declare,dojo/_base/event,dojo/keys,dojo/_base/lang,dojo/sniff,dojo/mouse,../typematic,./RangeBoundTextBox,dojo/text!./templates/Spinner.html,./_TextBoxMixin".split(","),function(f,k,h,j,e,c,i,b,g,a){return f("dijit.form._Spinner",b,{defaultTimeout:500,
+minimumTimeout:10,timeoutChangeRate:0.9,smallDelta:1,largeDelta:10,templateString:g,baseClass:"dijitTextBox dijitSpinner",cssStateNodes:{upArrowNode:"dijitUpArrowButton",downArrowNode:"dijitDownArrowButton"},adjust:function(a){return a},_arrowPressed:function(b,c,e){!this.disabled&&!this.readOnly&&(this._setValueAttr(this.adjust(this.get("value"),c*e),!1),a.selectInputText(this.textbox,this.textbox.value.length))},_arrowReleased:function(){this._wheelTimer=null},_typematicCallback:function(a,b,c){var e=
+this.smallDelta;if(b==this.textbox)b=c.charOrCode,e=b==h.PAGE_UP||b==h.PAGE_DOWN?this.largeDelta:this.smallDelta,b=b==h.UP_ARROW||b==h.PAGE_UP?this.upArrowNode:this.downArrowNode;-1==a?this._arrowReleased(b):this._arrowPressed(b,b==this.upArrowNode?1:-1,e)},_wheelTimer:null,_mouseWheeled:function(a){k.stop(a);var b=a.wheelDelta/120;Math.floor(b)!=b&&(b=0<a.wheelDelta?1:-1);a=a.detail?-1*a.detail:b;if(0!==a){var c=this[0<a?"upArrowNode":"downArrowNode"];this._arrowPressed(c,a,this.smallDelta);this._wheelTimer&&
+this._wheelTimer.remove();this._wheelTimer=this.defer(function(){this._arrowReleased(c)},50)}},postCreate:function(){this.inherited(arguments);this.connect(this.domNode,c.wheel,"_mouseWheeled");this.own(i.addListener(this.upArrowNode,this.textbox,{charOrCode:h.UP_ARROW,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout,this.minimumTimeout),i.addListener(this.downArrowNode,this.textbox,{charOrCode:h.DOWN_ARROW,ctrlKey:!1,altKey:!1,shiftKey:!1,
+metaKey:!1},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout,this.minimumTimeout),i.addListener(this.upArrowNode,this.textbox,{charOrCode:h.PAGE_UP,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout,this.minimumTimeout),i.addListener(this.downArrowNode,this.textbox,{charOrCode:h.PAGE_DOWN,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout,this.minimumTimeout))}})})},
"url:dijit/form/templates/Spinner.html":'<div class="dijit dijitReset dijitInline dijitLeft"\n\tid="widget_${id}" role="presentation"\n\t><div class="dijitReset dijitButtonNode dijitSpinnerButtonContainer"\n\t\t><input class="dijitReset dijitInputField dijitSpinnerButtonInner" type="text" tabIndex="-1" readonly="readonly" role="presentation"\n\t\t/><div class="dijitReset dijitLeft dijitButtonNode dijitArrowButton dijitUpArrowButton"\n\t\t\tdata-dojo-attach-point="upArrowNode"\n\t\t\t><div class="dijitArrowButtonInner"\n\t\t\t\t><input class="dijitReset dijitInputField" value="&#9650; " type="text" tabIndex="-1" readonly="readonly" role="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\tdata-dojo-attach-point="downArrowNode"\n\t\t\t><div class="dijitArrowButtonInner"\n\t\t\t\t><input class="dijitReset dijitInputField" value="&#9660; " type="text" tabIndex="-1" readonly="readonly" role="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="&#935; " type="text" tabIndex="-1" readonly="readonly" role="presentation"\n\t/></div\n\t><div class="dijitReset dijitInputField dijitInputContainer"\n\t\t><input class=\'dijitReset dijitInputInner\' data-dojo-attach-point="textbox,focusNode" type="${type}" data-dojo-attach-event="onkeypress:_onKeyPress"\n\t\t\trole="spinbutton" autocomplete="off" ${!nameAttrSetting}\n\t/></div\n></div>\n',
-"dojox/widget/ColorPicker":function(){define("dojo/_base/kernel,dojo/_base/declare,dojo/_base/lang,dojo/_base/array,dojo/_base/html,dojo/_base/connect,dojo/_base/sniff,dojo/_base/window,dojo/_base/event,dojo/dom,dojo/dom-class,dojo/keys,dojo/fx,dojo/dnd/move,dijit/registry,dijit/_base/focus,dijit/form/_FormWidget,dijit/typematic,dojox/color,dojo/i18n,dojo/i18n!./nls/ColorPicker,dojo/i18n!dojo/cldr/nls/number,dojo/text!./ColorPicker/ColorPicker.html".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,
-n,o,r,q,v,s,u,t,y){e.experimental("dojox.widget.ColorPicker");return j("dojox.widget.ColorPicker",r,{showRgb:!0,showHsv:!0,showHex:!0,webSafe:!0,animatePoint:!0,slideDuration:250,liveUpdate:!1,PICKER_HUE_H:150,PICKER_SAT_VAL_H:150,PICKER_SAT_VAL_W:150,PICKER_HUE_SELECTOR_H:8,PICKER_SAT_SELECTOR_H:10,PICKER_SAT_SELECTOR_W:10,value:"#ffffff",_underlay:e.moduleUrl("dojox.widget","ColorPicker/images/underlay.png"),_hueUnderlay:e.moduleUrl("dojox.widget","ColorPicker/images/hue.png"),_pickerPointer:e.moduleUrl("dojox.widget",
-"ColorPicker/images/pickerPointer.png"),_huePickerPointer:e.moduleUrl("dojox.widget","ColorPicker/images/hueHandle.png"),_huePickerPointerAlly:e.moduleUrl("dojox.widget","ColorPicker/images/hueHandleA11y.png"),templateString:y,postMixInProperties:function(){if(k.contains(b.body(),"dijit_a11y"))this._huePickerPointer=this._huePickerPointerAlly;this._uId=n.getUniqueId(this.id);i.mixin(this,s.getLocalization("dojox.widget","ColorPicker"));i.mixin(this,s.getLocalization("dojo.cldr","number"));this.inherited(arguments)},
-postCreate:function(){this.inherited(arguments);if(7>h("ie"))this.colorUnderlay.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this._underlay+"', sizingMethod='scale')",this.colorUnderlay.src=this._blankGif.toString();if(!this.showRgb)this.rgbNode.style.visibility="hidden";if(!this.showHsv)this.hsvNode.style.visibility="hidden";if(!this.showHex)this.hexNode.style.visibility="hidden";if(!this.webSafe)this.safePreviewNode.style.visibility="hidden"},startup:function(){if(!this._started)this._started=
-!0,this.set("value",this.value),this._mover=new m.boxConstrainedMoveable(this.cursorNode,{box:{t:-(this.PICKER_SAT_SELECTOR_H/2),l:-(this.PICKER_SAT_SELECTOR_W/2),w:this.PICKER_SAT_VAL_W,h:this.PICKER_SAT_VAL_H}}),this._hueMover=new m.boxConstrainedMoveable(this.hueCursorNode,{box:{t:-(this.PICKER_HUE_SELECTOR_H/2),l:0,w:0,h:this.PICKER_HUE_H}}),this._subs=[],this._subs.push(g.subscribe("/dnd/move/stop",i.hitch(this,"_clearTimer"))),this._subs.push(g.subscribe("/dnd/move/start",i.hitch(this,"_setTimer"))),
-this._keyListeners=[],this._connects.push(q.addKeyListener(this.hueCursorNode,{charOrCode:d.UP_ARROW,shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this,i.hitch(this,this._updateHueCursorNode),25,25)),this._connects.push(q.addKeyListener(this.hueCursorNode,{charOrCode:d.DOWN_ARROW,shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this,i.hitch(this,this._updateHueCursorNode),25,25)),this._connects.push(q.addKeyListener(this.cursorNode,{charOrCode:d.UP_ARROW,shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this,
-i.hitch(this,this._updateCursorNode),25,25)),this._connects.push(q.addKeyListener(this.cursorNode,{charOrCode:d.DOWN_ARROW,shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this,i.hitch(this,this._updateCursorNode),25,25)),this._connects.push(q.addKeyListener(this.cursorNode,{charOrCode:d.LEFT_ARROW,shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this,i.hitch(this,this._updateCursorNode),25,25)),this._connects.push(q.addKeyListener(this.cursorNode,{charOrCode:d.RIGHT_ARROW,shiftKey:!1,metaKey:!1,ctrlKey:!1,
-altKey:!1},this,i.hitch(this,this._updateCursorNode),25,25))},_setValueAttr:function(a){this._started&&this.setColor(a,!0)},setColor:function(a,b){a=v.fromString(a);this._updatePickerLocations(a);this._updateColorInputs(a);this._updateValue(a,b)},_setTimer:function(b){if(b.node==this.cursorNode)o.focus(b.node),a.setSelectable(this.domNode,!1),this._timer=setInterval(i.hitch(this,"_updateColor"),45)},_clearTimer:function(){if(this._timer)clearInterval(this._timer),this._timer=null,this.onChange(this.value),
-a.setSelectable(this.domNode,!0)},_setHue:function(a){c.style(this.colorUnderlay,"backgroundColor",v.fromHsv(a,100,100).toHex())},_updateHueCursorNode:function(a,b,f){if(-1!==a){var a=c.style(this.hueCursorNode,"top"),b=this.PICKER_HUE_SELECTOR_H/2,a=a+b,e=!1;f.charOrCode==d.UP_ARROW?0<a&&(a-=1,e=!0):f.charOrCode==d.DOWN_ARROW&&a<this.PICKER_HUE_H&&(a+=1,e=!0);e&&c.style(this.hueCursorNode,"top",a-b+"px")}else this._updateColor(!0)},_updateCursorNode:function(a,b,f){var b=this.PICKER_SAT_SELECTOR_H/
-2,e=this.PICKER_SAT_SELECTOR_W/2;if(-1!==a){var a=c.style(this.cursorNode,"top"),g=c.style(this.cursorNode,"left"),a=a+b,g=g+e,h=!1;f.charOrCode==d.UP_ARROW?0<a&&(a-=1,h=!0):f.charOrCode==d.DOWN_ARROW?a<this.PICKER_SAT_VAL_H&&(a+=1,h=!0):f.charOrCode==d.LEFT_ARROW?0<g&&(g-=1,h=!0):f.charOrCode==d.RIGHT_ARROW&&g<this.PICKER_SAT_VAL_W&&(g+=1,h=!0);h&&(g-=e,c.style(this.cursorNode,"top",a-b+"px"),c.style(this.cursorNode,"left",g+"px"))}else this._updateColor(!0)},_updateColor:function(){var a=this.PICKER_HUE_SELECTOR_H/
-2,b=this.PICKER_SAT_SELECTOR_H/2,d=this.PICKER_SAT_SELECTOR_W/2,a=c.style(this.hueCursorNode,"top")+a,b=c.style(this.cursorNode,"top")+b,d=c.style(this.cursorNode,"left")+d,a=Math.round(360-360*(a/this.PICKER_HUE_H)),d=v.fromHsv(a,100*(d/this.PICKER_SAT_VAL_W),100-100*(b/this.PICKER_SAT_VAL_H));this._updateColorInputs(d);this._updateValue(d,!0);a!=this._hue&&this._setHue(a)},_colorInputChange:function(a){var b,c=!1;switch(a.target){case this.hexCode:b=v.fromString(a.target.value);c=!0;break;case this.Rval:case this.Gval:case this.Bval:b=
-v.fromArray([this.Rval.value,this.Gval.value,this.Bval.value]);c=!0;break;case this.Hval:case this.Sval:case this.Vval:b=v.fromHsv(this.Hval.value,this.Sval.value,this.Vval.value),c=!0}c&&(this._updatePickerLocations(b),this._updateColorInputs(b),this._updateValue(b,!0))},_updateValue:function(a,b){var c=a.toHex();this.value=this.valueNode.value=c;if(b&&(!this._timer||this.liveUpdate))this.onChange(c)},_updatePickerLocations:function(a){var b=this.PICKER_HUE_SELECTOR_H/2,d=this.PICKER_SAT_SELECTOR_H/
-2,f=this.PICKER_SAT_SELECTOR_W/2,a=a.toHsv(),b=Math.round(this.PICKER_HUE_H-a.h/360*this.PICKER_HUE_H)-b,f=Math.round(a.s/100*this.PICKER_SAT_VAL_W)-f,d=Math.round(this.PICKER_SAT_VAL_H-a.v/100*this.PICKER_SAT_VAL_H)-d;this.animatePoint?(p.slideTo({node:this.hueCursorNode,duration:this.slideDuration,top:b,left:0}).play(),p.slideTo({node:this.cursorNode,duration:this.slideDuration,top:d,left:f}).play()):(c.style(this.hueCursorNode,"top",b+"px"),c.style(this.cursorNode,{left:f+"px",top:d+"px"}));a.h!=
+"dojox/widget/ColorPicker":function(){define("dojo/_base/kernel,dojo/_base/declare,dojo/_base/lang,dojo/_base/array,dojo/_base/html,dojo/_base/connect,dojo/_base/sniff,dojo/_base/window,dojo/_base/event,dojo/dom,dojo/dom-class,dojo/keys,dojo/fx,dojo/dnd/move,dijit/registry,dijit/_base/focus,dijit/form/_FormWidget,dijit/typematic,dojox/color,dojo/i18n,dojo/i18n!./nls/ColorPicker,dojo/i18n!dojo/cldr/nls/number,dojo/text!./ColorPicker/ColorPicker.html".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,
+n,o,r,q,v,s,t,u,y){f.experimental("dojox.widget.ColorPicker");return k("dojox.widget.ColorPicker",r,{showRgb:!0,showHsv:!0,showHex:!0,webSafe:!0,animatePoint:!0,slideDuration:250,liveUpdate:!1,PICKER_HUE_H:150,PICKER_SAT_VAL_H:150,PICKER_SAT_VAL_W:150,PICKER_HUE_SELECTOR_H:8,PICKER_SAT_SELECTOR_H:10,PICKER_SAT_SELECTOR_W:10,value:"#ffffff",_underlay:f.moduleUrl("dojox.widget","ColorPicker/images/underlay.png"),_hueUnderlay:f.moduleUrl("dojox.widget","ColorPicker/images/hue.png"),_pickerPointer:f.moduleUrl("dojox.widget",
+"ColorPicker/images/pickerPointer.png"),_huePickerPointer:f.moduleUrl("dojox.widget","ColorPicker/images/hueHandle.png"),_huePickerPointerAlly:f.moduleUrl("dojox.widget","ColorPicker/images/hueHandleA11y.png"),templateString:y,postMixInProperties:function(){if(l.contains(b.body(),"dijit_a11y"))this._huePickerPointer=this._huePickerPointerAlly;this._uId=n.getUniqueId(this.id);h.mixin(this,s.getLocalization("dojox.widget","ColorPicker"));h.mixin(this,s.getLocalization("dojo.cldr","number"));this.inherited(arguments)},
+postCreate:function(){this.inherited(arguments);if(7>i("ie"))this.colorUnderlay.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this._underlay+"', sizingMethod='scale')",this.colorUnderlay.src=this._blankGif.toString();if(!this.showRgb)this.rgbNode.style.visibility="hidden";if(!this.showHsv)this.hsvNode.style.visibility="hidden";if(!this.showHex)this.hexNode.style.visibility="hidden";if(!this.webSafe)this.safePreviewNode.style.visibility="hidden"},startup:function(){if(!this._started)this._started=
+!0,this.set("value",this.value),this._mover=new m.boxConstrainedMoveable(this.cursorNode,{box:{t:-(this.PICKER_SAT_SELECTOR_H/2),l:-(this.PICKER_SAT_SELECTOR_W/2),w:this.PICKER_SAT_VAL_W,h:this.PICKER_SAT_VAL_H}}),this._hueMover=new m.boxConstrainedMoveable(this.hueCursorNode,{box:{t:-(this.PICKER_HUE_SELECTOR_H/2),l:0,w:0,h:this.PICKER_HUE_H}}),this._subs=[],this._subs.push(c.subscribe("/dnd/move/stop",h.hitch(this,"_clearTimer"))),this._subs.push(c.subscribe("/dnd/move/start",h.hitch(this,"_setTimer"))),
+this._keyListeners=[],this._connects.push(q.addKeyListener(this.hueCursorNode,{charOrCode:d.UP_ARROW,shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this,h.hitch(this,this._updateHueCursorNode),25,25)),this._connects.push(q.addKeyListener(this.hueCursorNode,{charOrCode:d.DOWN_ARROW,shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this,h.hitch(this,this._updateHueCursorNode),25,25)),this._connects.push(q.addKeyListener(this.cursorNode,{charOrCode:d.UP_ARROW,shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this,
+h.hitch(this,this._updateCursorNode),25,25)),this._connects.push(q.addKeyListener(this.cursorNode,{charOrCode:d.DOWN_ARROW,shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this,h.hitch(this,this._updateCursorNode),25,25)),this._connects.push(q.addKeyListener(this.cursorNode,{charOrCode:d.LEFT_ARROW,shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this,h.hitch(this,this._updateCursorNode),25,25)),this._connects.push(q.addKeyListener(this.cursorNode,{charOrCode:d.RIGHT_ARROW,shiftKey:!1,metaKey:!1,ctrlKey:!1,
+altKey:!1},this,h.hitch(this,this._updateCursorNode),25,25))},_setValueAttr:function(a){this._started&&this.setColor(a,!0)},setColor:function(a,b){a=v.fromString(a);this._updatePickerLocations(a);this._updateColorInputs(a);this._updateValue(a,b)},_setTimer:function(b){if(b.node==this.cursorNode)o.focus(b.node),a.setSelectable(this.domNode,!1),this._timer=setInterval(h.hitch(this,"_updateColor"),45)},_clearTimer:function(){if(this._timer)clearInterval(this._timer),this._timer=null,this.onChange(this.value),
+a.setSelectable(this.domNode,!0)},_setHue:function(a){e.style(this.colorUnderlay,"backgroundColor",v.fromHsv(a,100,100).toHex())},_updateHueCursorNode:function(a,b,c){if(-1!==a){var a=e.style(this.hueCursorNode,"top"),b=this.PICKER_HUE_SELECTOR_H/2,a=a+b,g=!1;c.charOrCode==d.UP_ARROW?0<a&&(a-=1,g=!0):c.charOrCode==d.DOWN_ARROW&&a<this.PICKER_HUE_H&&(a+=1,g=!0);g&&e.style(this.hueCursorNode,"top",a-b+"px")}else this._updateColor(!0)},_updateCursorNode:function(a,b,c){var b=this.PICKER_SAT_SELECTOR_H/
+2,g=this.PICKER_SAT_SELECTOR_W/2;if(-1!==a){var a=e.style(this.cursorNode,"top"),f=e.style(this.cursorNode,"left"),a=a+b,f=f+g,i=!1;c.charOrCode==d.UP_ARROW?0<a&&(a-=1,i=!0):c.charOrCode==d.DOWN_ARROW?a<this.PICKER_SAT_VAL_H&&(a+=1,i=!0):c.charOrCode==d.LEFT_ARROW?0<f&&(f-=1,i=!0):c.charOrCode==d.RIGHT_ARROW&&f<this.PICKER_SAT_VAL_W&&(f+=1,i=!0);i&&(f-=g,e.style(this.cursorNode,"top",a-b+"px"),e.style(this.cursorNode,"left",f+"px"))}else this._updateColor(!0)},_updateColor:function(){var a=this.PICKER_HUE_SELECTOR_H/
+2,b=this.PICKER_SAT_SELECTOR_H/2,c=this.PICKER_SAT_SELECTOR_W/2,a=e.style(this.hueCursorNode,"top")+a,b=e.style(this.cursorNode,"top")+b,c=e.style(this.cursorNode,"left")+c,a=Math.round(360-360*(a/this.PICKER_HUE_H)),c=v.fromHsv(a,100*(c/this.PICKER_SAT_VAL_W),100-100*(b/this.PICKER_SAT_VAL_H));this._updateColorInputs(c);this._updateValue(c,!0);a!=this._hue&&this._setHue(a)},_colorInputChange:function(a){var b,c=!1;switch(a.target){case this.hexCode:b=v.fromString(a.target.value);c=!0;break;case this.Rval:case this.Gval:case this.Bval:b=
+v.fromArray([this.Rval.value,this.Gval.value,this.Bval.value]);c=!0;break;case this.Hval:case this.Sval:case this.Vval:b=v.fromHsv(this.Hval.value,this.Sval.value,this.Vval.value),c=!0}c&&(this._updatePickerLocations(b),this._updateColorInputs(b),this._updateValue(b,!0))},_updateValue:function(a,b){var c=a.toHex();this.value=this.valueNode.value=c;if(b&&(!this._timer||this.liveUpdate))this.onChange(c)},_updatePickerLocations:function(a){var b=this.PICKER_HUE_SELECTOR_H/2,c=this.PICKER_SAT_SELECTOR_H/
+2,d=this.PICKER_SAT_SELECTOR_W/2,a=a.toHsv(),b=Math.round(this.PICKER_HUE_H-a.h/360*this.PICKER_HUE_H)-b,d=Math.round(a.s/100*this.PICKER_SAT_VAL_W)-d,c=Math.round(this.PICKER_SAT_VAL_H-a.v/100*this.PICKER_SAT_VAL_H)-c;this.animatePoint?(p.slideTo({node:this.hueCursorNode,duration:this.slideDuration,top:b,left:0}).play(),p.slideTo({node:this.cursorNode,duration:this.slideDuration,top:c,left:d}).play()):(e.style(this.hueCursorNode,"top",b+"px"),e.style(this.cursorNode,{left:d+"px",top:c+"px"}));a.h!=
this._hue&&this._setHue(a.h)},_updateColorInputs:function(a){var b=a.toHex();if(this.showRgb)this.Rval.value=a.r,this.Gval.value=a.g,this.Bval.value=a.b;if(this.showHsv)a=a.toHsv(),this.Hval.value=Math.round(a.h),this.Sval.value=Math.round(a.s),this.Vval.value=Math.round(a.v);if(this.showHex)this.hexCode.value=b;this.previewNode.style.backgroundColor=b;if(this.webSafe)this.safePreviewNode.style.backgroundColor=b},_setHuePoint:function(a){a=a.layerY-this.PICKER_HUE_SELECTOR_H/2;this.animatePoint?p.slideTo({node:this.hueCursorNode,
-duration:this.slideDuration,top:a,left:0,onEnd:i.hitch(this,function(){this._updateColor(!0);o.focus(this.hueCursorNode)})}).play():(c.style(this.hueCursorNode,"top",a+"px"),this._updateColor(!1))},_setPoint:function(a){var b=a.layerY-this.PICKER_SAT_SELECTOR_H/2,d=a.layerX-this.PICKER_SAT_SELECTOR_W/2;a&&o.focus(a.target);this.animatePoint?p.slideTo({node:this.cursorNode,duration:this.slideDuration,top:b,left:d,onEnd:i.hitch(this,function(){this._updateColor(!0);o.focus(this.cursorNode)})}).play():
-(c.style(this.cursorNode,{left:d+"px",top:b+"px"}),this._updateColor(!1))},_handleKey:function(){},focus:function(){this.focused||o.focus(this.focusNode)},_stopDrag:function(a){f.stop(a)},destroy:function(){this.inherited(arguments);l.forEach(this._subs,function(a){g.unsubscribe(a)});delete this._subs}})})},"dojo/fx":function(){define("./_base/lang,./Evented,./_base/kernel,./_base/array,./_base/connect,./_base/fx,./dom,./dom-style,./dom-geometry,./ready,require".split(","),function(e,j,i,l,c,g,h,
-b,f,a,k){i.isAsync||a(0,function(){k(["./fx/Toggler"])});var i=i.fx={},a={_fire:function(a,b){this[a]&&this[a].apply(this,b||[]);return this}},d=function(a){this._index=-1;this._animations=a||[];this._current=this._onAnimateCtx=this._onEndCtx=null;this.duration=0;l.forEach(this._animations,function(a){this.duration+=a.duration;a.delay&&(this.duration+=a.delay)},this)};d.prototype=new j;e.extend(d,{_onAnimate:function(){this._fire("onAnimate",arguments)},_onEnd:function(){c.disconnect(this._onAnimateCtx);
-c.disconnect(this._onEndCtx);this._onAnimateCtx=this._onEndCtx=null;this._index+1==this._animations.length?this._fire("onEnd"):(this._current=this._animations[++this._index],this._onAnimateCtx=c.connect(this._current,"onAnimate",this,"_onAnimate"),this._onEndCtx=c.connect(this._current,"onEnd",this,"_onEnd"),this._current.play(0,!0))},play:function(a,b){if(!this._current)this._current=this._animations[this._index=0];if(!b&&"playing"==this._current.status())return this;var d=c.connect(this._current,
-"beforeBegin",this,function(){this._fire("beforeBegin")}),f=c.connect(this._current,"onBegin",this,function(a){this._fire("onBegin",arguments)}),e=c.connect(this._current,"onPlay",this,function(a){this._fire("onPlay",arguments);c.disconnect(d);c.disconnect(f);c.disconnect(e)});this._onAnimateCtx&&c.disconnect(this._onAnimateCtx);this._onAnimateCtx=c.connect(this._current,"onAnimate",this,"_onAnimate");this._onEndCtx&&c.disconnect(this._onEndCtx);this._onEndCtx=c.connect(this._current,"onEnd",this,
-"_onEnd");this._current.play.apply(this._current,arguments);return this},pause:function(){if(this._current){var a=c.connect(this._current,"onPause",this,function(b){this._fire("onPause",arguments);c.disconnect(a)});this._current.pause()}return this},gotoPercent:function(a,b){this.pause();var c=this.duration*a;this._current=null;l.some(this._animations,function(a){if(a.duration<=c)return this._current=a,!0;c-=a.duration;return!1});this._current&&this._current.gotoPercent(c/this._current.duration,b);
-return this},stop:function(a){if(this._current){if(a){for(;this._index+1<this._animations.length;++this._index)this._animations[this._index].stop(!0);this._current=this._animations[this._index]}var b=c.connect(this._current,"onStop",this,function(a){this._fire("onStop",arguments);c.disconnect(b)});this._current.stop()}return this},status:function(){return this._current?this._current.status():"stopped"},destroy:function(){this._onAnimateCtx&&c.disconnect(this._onAnimateCtx);this._onEndCtx&&c.disconnect(this._onEndCtx)}});
-e.extend(d,a);i.chain=function(a){return new d(a)};var p=function(a){this._animations=a||[];this._connects=[];this.duration=this._finished=0;l.forEach(a,function(a){var b=a.duration;a.delay&&(b+=a.delay);if(this.duration<b)this.duration=b;this._connects.push(c.connect(a,"onEnd",this,"_onEnd"))},this);this._pseudoAnimation=new g.Animation({curve:[0,1],duration:this.duration});var b=this;l.forEach("beforeBegin,onBegin,onPlay,onAnimate,onPause,onStop,onEnd".split(","),function(a){b._connects.push(c.connect(b._pseudoAnimation,
-a,function(){b._fire(a,arguments)}))})};e.extend(p,{_doAction:function(a,b){l.forEach(this._animations,function(c){c[a].apply(c,b)});return this},_onEnd:function(){++this._finished>this._animations.length&&this._fire("onEnd")},_call:function(a,b){var c=this._pseudoAnimation;c[a].apply(c,b)},play:function(a,b){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(a,
-b){var c=this.duration*a;l.forEach(this._animations,function(a){a.gotoPercent(a.duration<c?1:c/a.duration,b)});this._call("gotoPercent",arguments);return this},stop:function(a){this._doAction("stop",arguments);this._call("stop",arguments);return this},status:function(){return this._pseudoAnimation.status()},destroy:function(){l.forEach(this._connects,c.disconnect)}});e.extend(p,a);i.combine=function(a){return new p(a)};i.wipeIn=function(a){var d=a.node=h.byId(a.node),f=d.style,i,a=g.animateProperty(e.mixin({properties:{height:{start:function(){i=
-f.overflow;f.overflow="hidden";if("hidden"==f.visibility||"none"==f.display)return f.height="1px",f.display="",f.visibility="",1;var a=b.get(d,"height");return Math.max(a,1)},end:function(){return d.scrollHeight}}}},a)),k=function(){f.height="auto";f.overflow=i};c.connect(a,"onStop",k);c.connect(a,"onEnd",k);return a};i.wipeOut=function(a){var b=(a.node=h.byId(a.node)).style,d,a=g.animateProperty(e.mixin({properties:{height:{end:1}}},a));c.connect(a,"beforeBegin",function(){d=b.overflow;b.overflow=
-"hidden";b.display=""});var f=function(){b.overflow=d;b.height="auto";b.display="none"};c.connect(a,"onStop",f);c.connect(a,"onEnd",f);return a};i.slideTo=function(a){var d=null,i=null,k=function(a){return function(){var c=b.getComputedStyle(a),e=c.position;d="absolute"==e?a.offsetTop:parseInt(c.top)||0;i="absolute"==e?a.offsetLeft:parseInt(c.left)||0;if("absolute"!=e&&"relative"!=e)c=f.position(a,!0),d=c.y,i=c.x,a.style.position="absolute",a.style.top=d+"px",a.style.left=i+"px"}}(a.node=h.byId(a.node));
-k();a=g.animateProperty(e.mixin({properties:{top:a.top||0,left:a.left||0}},a));c.connect(a,"beforeBegin",a,k);return a};return i})},"dijit/_base/focus":function(){define("dojo/_base/array,dojo/dom,dojo/_base/lang,dojo/topic,dojo/_base/window,../focus,../main".split(","),function(e,j,i,l,c,g,h){g.focus=function(b){if(b){var f="node"in b?b.node:b,a=b.bookmark,b=b.openedForWindow,e=a?a.isCollapsed:!1;if(f){var d="iframe"==f.tagName.toLowerCase()?f.contentWindow:f;if(d&&d.focus)try{d.focus()}catch(i){}g._onFocusNode(f)}if(a&&
-c.withGlobal(b||c.global,h.isCollapsed)&&!e){b&&b.focus();try{c.withGlobal(b||c.global,h.moveToBookmark,null,[a])}catch(j){}}}};g.watch("curNode",function(b,c,a){h._curFocus=a;h._prevFocus=c;a&&l.publish("focusNode",a)});g.watch("activeStack",function(b,c,a){h._activeStack=a});g.on("widget-blur",function(b,c){l.publish("widgetBlur",b,c)});g.on("widget-focus",function(b,c){l.publish("widgetFocus",b,c)});i.mixin(h,{_curFocus:null,_prevFocus:null,isCollapsed:function(){return h.getBookmark().isCollapsed},
-getBookmark:function(){var b,f,a=c.doc.selection,e=g.curNode;if(c.global.getSelection){if(a=c.global.getSelection())if(a.isCollapsed){if(b=e?e.tagName:"")if(b=b.toLowerCase(),"textarea"==b||"input"==b&&(!e.type||"text"==e.type.toLowerCase()))return a={start:e.selectionStart,end:e.selectionEnd,node:e,pRange:!0},{isCollapsed:a.end<=a.start,mark:a};b={isCollapsed:!0};if(a.rangeCount)b.mark=a.getRangeAt(0).cloneRange()}else f=a.getRangeAt(0),b={isCollapsed:!1,mark:f.cloneRange()}}else if(a){b=e?e.tagName:
-"";b=b.toLowerCase();if(e&&b&&("button"==b||"textarea"==b||"input"==b)){if(a.type&&"none"==a.type.toLowerCase())return{isCollapsed:!0,mark:null};f=a.createRange();return{isCollapsed:f.text&&f.text.length?!1:!0,mark:{range:f,pRange:!0}}}b={};try{f=a.createRange(),b.isCollapsed=!("Text"==a.type?f.htmlText.length:f.length)}catch(d){return b.isCollapsed=!0,b}if("CONTROL"==a.type.toUpperCase())if(f.length){b.mark=[];a=0;for(e=f.length;a<e;)b.mark.push(f.item(a++))}else b.isCollapsed=!0,b.mark=null;else b.mark=
-f.getBookmark()}return b},moveToBookmark:function(b){var f=c.doc;if(b=b.mark)if(c.global.getSelection){if((f=c.global.getSelection())&&f.removeAllRanges)b.pRange?(f=b.node,f.selectionStart=b.start,f.selectionEnd=b.end):(f.removeAllRanges(),f.addRange(b))}else if(f.selection&&b){var a;b.pRange?a=b.range:i.isArray(b)?(a=f.body.createControlRange(),e.forEach(b,function(b){a.addElement(b)})):(a=f.body.createTextRange(),a.moveToBookmark(b));a.select()}},getFocus:function(b,f){var a=!g.curNode||b&&j.isDescendant(g.curNode,
-b.domNode)?h._prevFocus:g.curNode;return{node:a,bookmark:a&&a==g.curNode&&c.withGlobal(f||c.global,h.getBookmark),openedForWindow:f}},_activeStack:[],registerIframe:function(b){return g.registerIframe(b)},unregisterIframe:function(b){b&&b.remove()},registerWin:function(b,c){return g.registerWin(b,c)},unregisterWin:function(b){b&&b.remove()}});return h})},"dojox/color":function(){define(["./color/_base"],function(e){return e})},"dojox/color/_base":function(){define(["../main","dojo/_base/lang","dojo/_base/Color",
-"dojo/colors"],function(e,j,i,l){e=j.getObject("color",!0,e);e.Color=i;e.blend=i.blendColors;e.fromRgb=i.fromRgb;e.fromHex=i.fromHex;e.fromArray=i.fromArray;e.fromString=i.fromString;e.greyscale=l.makeGrey;j.mixin(e,{fromCmy:function(c,e,h){if(j.isArray(c))e=c[1],h=c[2],c=c[0];else if(j.isObject(c))e=c.m,h=c.y,c=c.c;c/=100;e/=100;h/=100;e=1-e;h=1-h;return new i({r:Math.round(255*(1-c)),g:Math.round(255*e),b:Math.round(255*h)})},fromCmyk:function(c,e,h,b){if(j.isArray(c))e=c[1],h=c[2],b=c[3],c=c[0];
-else if(j.isObject(c))e=c.m,h=c.y,b=c.b,c=c.c;c/=100;e/=100;h/=100;b/=100;c=1-Math.min(1,c*(1-b)+b);e=1-Math.min(1,e*(1-b)+b);h=1-Math.min(1,h*(1-b)+b);return new i({r:Math.round(255*c),g:Math.round(255*e),b:Math.round(255*h)})},fromHsl:function(c,e,h){if(j.isArray(c))e=c[1],h=c[2],c=c[0];else if(j.isObject(c))e=c.s,h=c.l,c=c.h;e/=100;for(h/=100;0>c;)c+=360;for(;360<=c;)c-=360;var b,f,a;120>c?(b=(120-c)/60,f=c/60,a=0):240>c?(b=0,f=(240-c)/60,a=(c-120)/60):(b=(c-240)/60,f=0,a=(360-c)/60);b=2*e*Math.min(b,
-1)+(1-e);f=2*e*Math.min(f,1)+(1-e);a=2*e*Math.min(a,1)+(1-e);0.5>h?(b*=h,f*=h,a*=h):(b=(1-h)*b+2*h-1,f=(1-h)*f+2*h-1,a=(1-h)*a+2*h-1);return new i({r:Math.round(255*b),g:Math.round(255*f),b:Math.round(255*a)})}});e.fromHsv=function(c,e,h){if(j.isArray(c))e=c[1],h=c[2],c=c[0];else if(j.isObject(c))e=c.s,h=c.v,c=c.h;360==c&&(c=0);var e=e/100,h=h/100,b,f,a;if(0==e)b=h,a=h,f=h;else{var k=c/60,c=Math.floor(k),d=k-c,k=h*(1-e),l=h*(1-e*d),e=h*(1-e*(1-d));switch(c){case 0:b=h;f=e;a=k;break;case 1:b=l;f=h;
-a=k;break;case 2:b=k;f=h;a=e;break;case 3:b=k;f=l;a=h;break;case 4:b=e;f=k;a=h;break;case 5:b=h,f=k,a=l}}return new i({r:Math.round(255*b),g:Math.round(255*f),b:Math.round(255*a)})};j.extend(i,{toCmy:function(){var c=1-this.g/255,e=1-this.b/255;return{c:Math.round(100*(1-this.r/255)),m:Math.round(100*c),y:Math.round(100*e)}},toCmyk:function(){var c,e,h,b=this.r/255;e=this.g/255;h=this.b/255;c=Math.min(1-b,1-e,1-h);e=(1-e-c)/(1-c);h=(1-h-c)/(1-c);return{c:Math.round(100*((1-b-c)/(1-c))),m:Math.round(100*
-e),y:Math.round(100*h),b:Math.round(100*c)}},toHsl:function(){var c=this.r/255,e=this.g/255,h=this.b/255,b=Math.min(c,h,e),f=Math.max(c,e,h),a=f-b,i=0,d=0,b=(b+f)/2;0<b&&1>b&&(d=a/(0.5>b?2*b:2-2*b));0<a&&(f==c&&f!=e&&(i+=(e-h)/a),f==e&&f!=h&&(i+=2+(h-c)/a),f==h&&f!=c&&(i+=4+(c-e)/a),i*=60);return{h:i,s:Math.round(100*d),l:Math.round(100*b)}},toHsv:function(){var c=this.r/255,e=this.g/255,h=this.b/255,b=Math.min(c,h,e),f=Math.max(c,e,h),b=f-b,a=null,i=0==f?0:b/f;0==i?a=0:(a=c==f?60*(e-h)/b:e==f?120+
-60*(h-c)/b:240+60*(c-e)/b,0>a&&(a+=360));return{h:a,s:Math.round(100*i),v:Math.round(100*f)}}});return e})},"dojox/main":function(){define(["dojo/_base/kernel"],function(e){return e.dojox})},"dojo/colors":function(){define("dojo/colors",["./_base/kernel","./_base/lang","./_base/Color","./_base/array"],function(e,j,i,l){var c={};j.setObject("dojo.colors",c);var g=function(b,c,a){0>a&&++a;1<a&&--a;var e=6*a;return 1>e?b+(c-b)*e:1>2*a?c:2>3*a?b+6*(c-b)*(2/3-a):b};e.colorFromRgb=i.fromRgb=function(b,
-c){var a=b.toLowerCase().match(/^(rgba?|hsla?)\(([\s\.\-,%0-9]+)\)/);if(a){var e=a[2].split(/\s*,\s*/),d=e.length,a=a[1];if("rgb"==a&&3==d||"rgba"==a&&4==d){a=e[0];return"%"==a.charAt(a.length-1)?(a=l.map(e,function(a){return 2.56*parseFloat(a)}),4==d&&(a[3]=e[3]),i.fromArray(a,c)):i.fromArray(e,c)}if("hsl"==a&&3==d||"hsla"==a&&4==d){var a=(parseFloat(e[0])%360+360)%360/360,h=parseFloat(e[1])/100,j=parseFloat(e[2])/100,h=0.5>=j?j*(h+1):j+h-j*h,j=2*j-h,a=[256*g(j,h,a+1/3),256*g(j,h,a),256*g(j,h,a-
-1/3),1];4==d&&(a[3]=e[3]);return i.fromArray(a,c)}}return null};var h=function(b,c,a){b=Number(b);return isNaN(b)?a:b<c?c:b>a?a:b};i.prototype.sanitize=function(){this.r=Math.round(h(this.r,0,255));this.g=Math.round(h(this.g,0,255));this.b=Math.round(h(this.b,0,255));this.a=h(this.a,0,1);return this};c.makeGrey=i.makeGrey=function(b,c){return i.fromArray([b,b,b,c])};j.mixin(i.named,{aliceblue:[240,248,255],antiquewhite:[250,235,215],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],
+duration:this.slideDuration,top:a,left:0,onEnd:h.hitch(this,function(){this._updateColor(!0);o.focus(this.hueCursorNode)})}).play():(e.style(this.hueCursorNode,"top",a+"px"),this._updateColor(!1))},_setPoint:function(a){var b=a.layerY-this.PICKER_SAT_SELECTOR_H/2,c=a.layerX-this.PICKER_SAT_SELECTOR_W/2;a&&o.focus(a.target);this.animatePoint?p.slideTo({node:this.cursorNode,duration:this.slideDuration,top:b,left:c,onEnd:h.hitch(this,function(){this._updateColor(!0);o.focus(this.cursorNode)})}).play():
+(e.style(this.cursorNode,{left:c+"px",top:b+"px"}),this._updateColor(!1))},_handleKey:function(){},focus:function(){this.focused||o.focus(this.focusNode)},_stopDrag:function(a){g.stop(a)},destroy:function(){this.inherited(arguments);j.forEach(this._subs,function(a){c.unsubscribe(a)});delete this._subs}})})},"dojo/fx":function(){define("./_base/lang,./Evented,./_base/kernel,./_base/array,./_base/connect,./_base/fx,./dom,./dom-style,./dom-geometry,./ready,require".split(","),function(f,k,h,j,e,c,i,
+b,g,a,l){h.isAsync||a(0,function(){l(["./fx/Toggler"])});var h=h.fx={},a={_fire:function(a,b){this[a]&&this[a].apply(this,b||[]);return this}},d=function(a){this._index=-1;this._animations=a||[];this._current=this._onAnimateCtx=this._onEndCtx=null;this.duration=0;j.forEach(this._animations,function(a){this.duration+=a.duration;a.delay&&(this.duration+=a.delay)},this)};d.prototype=new k;f.extend(d,{_onAnimate:function(){this._fire("onAnimate",arguments)},_onEnd:function(){e.disconnect(this._onAnimateCtx);
+e.disconnect(this._onEndCtx);this._onAnimateCtx=this._onEndCtx=null;this._index+1==this._animations.length?this._fire("onEnd"):(this._current=this._animations[++this._index],this._onAnimateCtx=e.connect(this._current,"onAnimate",this,"_onAnimate"),this._onEndCtx=e.connect(this._current,"onEnd",this,"_onEnd"),this._current.play(0,!0))},play:function(a,b){if(!this._current)this._current=this._animations[this._index=0];if(!b&&"playing"==this._current.status())return this;var c=e.connect(this._current,
+"beforeBegin",this,function(){this._fire("beforeBegin")}),d=e.connect(this._current,"onBegin",this,function(a){this._fire("onBegin",arguments)}),g=e.connect(this._current,"onPlay",this,function(a){this._fire("onPlay",arguments);e.disconnect(c);e.disconnect(d);e.disconnect(g)});this._onAnimateCtx&&e.disconnect(this._onAnimateCtx);this._onAnimateCtx=e.connect(this._current,"onAnimate",this,"_onAnimate");this._onEndCtx&&e.disconnect(this._onEndCtx);this._onEndCtx=e.connect(this._current,"onEnd",this,
+"_onEnd");this._current.play.apply(this._current,arguments);return this},pause:function(){if(this._current){var a=e.connect(this._current,"onPause",this,function(b){this._fire("onPause",arguments);e.disconnect(a)});this._current.pause()}return this},gotoPercent:function(a,b){this.pause();var c=this.duration*a;this._current=null;j.some(this._animations,function(a){if(a.duration<=c)return this._current=a,!0;c-=a.duration;return!1});this._current&&this._current.gotoPercent(c/this._current.duration,b);
+return this},stop:function(a){if(this._current){if(a){for(;this._index+1<this._animations.length;++this._index)this._animations[this._index].stop(!0);this._current=this._animations[this._index]}var b=e.connect(this._current,"onStop",this,function(a){this._fire("onStop",arguments);e.disconnect(b)});this._current.stop()}return this},status:function(){return this._current?this._current.status():"stopped"},destroy:function(){this._onAnimateCtx&&e.disconnect(this._onAnimateCtx);this._onEndCtx&&e.disconnect(this._onEndCtx)}});
+f.extend(d,a);h.chain=function(a){return new d(a)};var p=function(a){this._animations=a||[];this._connects=[];this.duration=this._finished=0;j.forEach(a,function(a){var b=a.duration;a.delay&&(b+=a.delay);if(this.duration<b)this.duration=b;this._connects.push(e.connect(a,"onEnd",this,"_onEnd"))},this);this._pseudoAnimation=new c.Animation({curve:[0,1],duration:this.duration});var b=this;j.forEach("beforeBegin,onBegin,onPlay,onAnimate,onPause,onStop,onEnd".split(","),function(a){b._connects.push(e.connect(b._pseudoAnimation,
+a,function(){b._fire(a,arguments)}))})};f.extend(p,{_doAction:function(a,b){j.forEach(this._animations,function(c){c[a].apply(c,b)});return this},_onEnd:function(){++this._finished>this._animations.length&&this._fire("onEnd")},_call:function(a,b){var c=this._pseudoAnimation;c[a].apply(c,b)},play:function(a,b){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(a,
+b){var c=this.duration*a;j.forEach(this._animations,function(a){a.gotoPercent(a.duration<c?1:c/a.duration,b)});this._call("gotoPercent",arguments);return this},stop:function(a){this._doAction("stop",arguments);this._call("stop",arguments);return this},status:function(){return this._pseudoAnimation.status()},destroy:function(){j.forEach(this._connects,e.disconnect)}});f.extend(p,a);h.combine=function(a){return new p(a)};h.wipeIn=function(a){var d=a.node=i.byId(a.node),g=d.style,h,a=c.animateProperty(f.mixin({properties:{height:{start:function(){h=
+g.overflow;g.overflow="hidden";if("hidden"==g.visibility||"none"==g.display)return g.height="1px",g.display="",g.visibility="",1;var a=b.get(d,"height");return Math.max(a,1)},end:function(){return d.scrollHeight}}}},a)),j=function(){g.height="auto";g.overflow=h};e.connect(a,"onStop",j);e.connect(a,"onEnd",j);return a};h.wipeOut=function(a){var b=(a.node=i.byId(a.node)).style,d,a=c.animateProperty(f.mixin({properties:{height:{end:1}}},a));e.connect(a,"beforeBegin",function(){d=b.overflow;b.overflow=
+"hidden";b.display=""});var g=function(){b.overflow=d;b.height="auto";b.display="none"};e.connect(a,"onStop",g);e.connect(a,"onEnd",g);return a};h.slideTo=function(a){var d=null,h=null,j=function(a){return function(){var c=b.getComputedStyle(a),e=c.position;d="absolute"==e?a.offsetTop:parseInt(c.top)||0;h="absolute"==e?a.offsetLeft:parseInt(c.left)||0;if("absolute"!=e&&"relative"!=e)c=g.position(a,!0),d=c.y,h=c.x,a.style.position="absolute",a.style.top=d+"px",a.style.left=h+"px"}}(a.node=i.byId(a.node));
+j();a=c.animateProperty(f.mixin({properties:{top:a.top||0,left:a.left||0}},a));e.connect(a,"beforeBegin",a,j);return a};return h})},"dijit/_base/focus":function(){define("dojo/_base/array,dojo/dom,dojo/_base/lang,dojo/topic,dojo/_base/window,../focus,../main".split(","),function(f,k,h,j,e,c,i){c.focus=function(b){if(b){var g="node"in b?b.node:b,a=b.bookmark,b=b.openedForWindow,f=a?a.isCollapsed:!1;if(g){var d="iframe"==g.tagName.toLowerCase()?g.contentWindow:g;if(d&&d.focus)try{d.focus()}catch(h){}c._onFocusNode(g)}if(a&&
+e.withGlobal(b||e.global,i.isCollapsed)&&!f){b&&b.focus();try{e.withGlobal(b||e.global,i.moveToBookmark,null,[a])}catch(j){}}}};c.watch("curNode",function(b,c,a){i._curFocus=a;i._prevFocus=c;a&&j.publish("focusNode",a)});c.watch("activeStack",function(b,c,a){i._activeStack=a});c.on("widget-blur",function(b,c){j.publish("widgetBlur",b,c)});c.on("widget-focus",function(b,c){j.publish("widgetFocus",b,c)});h.mixin(i,{_curFocus:null,_prevFocus:null,isCollapsed:function(){return i.getBookmark().isCollapsed},
+getBookmark:function(){var b,g,a=e.doc.selection,f=c.curNode;if(e.global.getSelection){if(a=e.global.getSelection())if(a.isCollapsed){if(b=f?f.tagName:"")if(b=b.toLowerCase(),"textarea"==b||"input"==b&&(!f.type||"text"==f.type.toLowerCase()))return a={start:f.selectionStart,end:f.selectionEnd,node:f,pRange:!0},{isCollapsed:a.end<=a.start,mark:a};b={isCollapsed:!0};if(a.rangeCount)b.mark=a.getRangeAt(0).cloneRange()}else g=a.getRangeAt(0),b={isCollapsed:!1,mark:g.cloneRange()}}else if(a){b=f?f.tagName:
+"";b=b.toLowerCase();if(f&&b&&("button"==b||"textarea"==b||"input"==b)){if(a.type&&"none"==a.type.toLowerCase())return{isCollapsed:!0,mark:null};g=a.createRange();return{isCollapsed:g.text&&g.text.length?!1:!0,mark:{range:g,pRange:!0}}}b={};try{g=a.createRange(),b.isCollapsed=!("Text"==a.type?g.htmlText.length:g.length)}catch(d){return b.isCollapsed=!0,b}if("CONTROL"==a.type.toUpperCase())if(g.length){b.mark=[];a=0;for(f=g.length;a<f;)b.mark.push(g.item(a++))}else b.isCollapsed=!0,b.mark=null;else b.mark=
+g.getBookmark()}return b},moveToBookmark:function(b){var c=e.doc;if(b=b.mark)if(e.global.getSelection){if((c=e.global.getSelection())&&c.removeAllRanges)b.pRange?(c=b.node,c.selectionStart=b.start,c.selectionEnd=b.end):(c.removeAllRanges(),c.addRange(b))}else if(c.selection&&b){var a;b.pRange?a=b.range:h.isArray(b)?(a=c.body.createControlRange(),f.forEach(b,function(b){a.addElement(b)})):(a=c.body.createTextRange(),a.moveToBookmark(b));a.select()}},getFocus:function(b,g){var a=!c.curNode||b&&k.isDescendant(c.curNode,
+b.domNode)?i._prevFocus:c.curNode;return{node:a,bookmark:a&&a==c.curNode&&e.withGlobal(g||e.global,i.getBookmark),openedForWindow:g}},_activeStack:[],registerIframe:function(b){return c.registerIframe(b)},unregisterIframe:function(b){b&&b.remove()},registerWin:function(b,e){return c.registerWin(b,e)},unregisterWin:function(b){b&&b.remove()}});return i})},"dojox/color":function(){define(["./color/_base"],function(f){return f})},"dojox/color/_base":function(){define(["../main","dojo/_base/lang","dojo/_base/Color",
+"dojo/colors"],function(f,k,h,j){f=k.getObject("color",!0,f);f.Color=h;f.blend=h.blendColors;f.fromRgb=h.fromRgb;f.fromHex=h.fromHex;f.fromArray=h.fromArray;f.fromString=h.fromString;f.greyscale=j.makeGrey;k.mixin(f,{fromCmy:function(e,c,f){if(k.isArray(e))c=e[1],f=e[2],e=e[0];else if(k.isObject(e))c=e.m,f=e.y,e=e.c;e/=100;c/=100;f/=100;c=1-c;f=1-f;return new h({r:Math.round(255*(1-e)),g:Math.round(255*c),b:Math.round(255*f)})},fromCmyk:function(e,c,f,b){if(k.isArray(e))c=e[1],f=e[2],b=e[3],e=e[0];
+else if(k.isObject(e))c=e.m,f=e.y,b=e.b,e=e.c;e/=100;c/=100;f/=100;b/=100;e=1-Math.min(1,e*(1-b)+b);c=1-Math.min(1,c*(1-b)+b);f=1-Math.min(1,f*(1-b)+b);return new h({r:Math.round(255*e),g:Math.round(255*c),b:Math.round(255*f)})},fromHsl:function(e,c,f){if(k.isArray(e))c=e[1],f=e[2],e=e[0];else if(k.isObject(e))c=e.s,f=e.l,e=e.h;c/=100;for(f/=100;0>e;)e+=360;for(;360<=e;)e-=360;var b,g,a;120>e?(b=(120-e)/60,g=e/60,a=0):240>e?(b=0,g=(240-e)/60,a=(e-120)/60):(b=(e-240)/60,g=0,a=(360-e)/60);b=2*c*Math.min(b,
+1)+(1-c);g=2*c*Math.min(g,1)+(1-c);a=2*c*Math.min(a,1)+(1-c);0.5>f?(b*=f,g*=f,a*=f):(b=(1-f)*b+2*f-1,g=(1-f)*g+2*f-1,a=(1-f)*a+2*f-1);return new h({r:Math.round(255*b),g:Math.round(255*g),b:Math.round(255*a)})}});f.fromHsv=function(e,c,f){if(k.isArray(e))c=e[1],f=e[2],e=e[0];else if(k.isObject(e))c=e.s,f=e.v,e=e.h;360==e&&(e=0);var c=c/100,f=f/100,b,g,a;if(0==c)b=f,a=f,g=f;else{var j=e/60,e=Math.floor(j),d=j-e,j=f*(1-c),p=f*(1-c*d),c=f*(1-c*(1-d));switch(e){case 0:b=f;g=c;a=j;break;case 1:b=p;g=f;
+a=j;break;case 2:b=j;g=f;a=c;break;case 3:b=j;g=p;a=f;break;case 4:b=c;g=j;a=f;break;case 5:b=f,g=j,a=p}}return new h({r:Math.round(255*b),g:Math.round(255*g),b:Math.round(255*a)})};k.extend(h,{toCmy:function(){var e=1-this.g/255,c=1-this.b/255;return{c:Math.round(100*(1-this.r/255)),m:Math.round(100*e),y:Math.round(100*c)}},toCmyk:function(){var e,c,f,b=this.r/255;c=this.g/255;f=this.b/255;e=Math.min(1-b,1-c,1-f);c=(1-c-e)/(1-e);f=(1-f-e)/(1-e);return{c:Math.round(100*((1-b-e)/(1-e))),m:Math.round(100*
+c),y:Math.round(100*f),b:Math.round(100*e)}},toHsl:function(){var e=this.r/255,c=this.g/255,f=this.b/255,b=Math.min(e,f,c),g=Math.max(e,c,f),a=g-b,h=0,d=0,b=(b+g)/2;0<b&&1>b&&(d=a/(0.5>b?2*b:2-2*b));0<a&&(g==e&&g!=c&&(h+=(c-f)/a),g==c&&g!=f&&(h+=2+(f-e)/a),g==f&&g!=e&&(h+=4+(e-c)/a),h*=60);return{h:h,s:Math.round(100*d),l:Math.round(100*b)}},toHsv:function(){var e=this.r/255,c=this.g/255,f=this.b/255,b=Math.min(e,f,c),g=Math.max(e,c,f),b=g-b,a=null,h=0==g?0:b/g;0==h?a=0:(a=e==g?60*(c-f)/b:c==g?120+
+60*(f-e)/b:240+60*(e-c)/b,0>a&&(a+=360));return{h:a,s:Math.round(100*h),v:Math.round(100*g)}}});return f})},"dojox/main":function(){define(["dojo/_base/kernel"],function(f){return f.dojox})},"dojo/colors":function(){define("dojo/colors",["./_base/kernel","./_base/lang","./_base/Color","./_base/array"],function(f,k,h,j){var e={};k.setObject("dojo.colors",e);var c=function(b,c,a){0>a&&++a;1<a&&--a;var e=6*a;return 1>e?b+(c-b)*e:1>2*a?c:2>3*a?b+6*(c-b)*(2/3-a):b};f.colorFromRgb=h.fromRgb=function(b,
+e){var a=b.toLowerCase().match(/^(rgba?|hsla?)\(([\s\.\-,%0-9]+)\)/);if(a){var f=a[2].split(/\s*,\s*/),d=f.length,a=a[1];if("rgb"==a&&3==d||"rgba"==a&&4==d){a=f[0];return"%"==a.charAt(a.length-1)?(a=j.map(f,function(a){return 2.56*parseFloat(a)}),4==d&&(a[3]=f[3]),h.fromArray(a,e)):h.fromArray(f,e)}if("hsl"==a&&3==d||"hsla"==a&&4==d){var a=(parseFloat(f[0])%360+360)%360/360,i=parseFloat(f[1])/100,k=parseFloat(f[2])/100,i=0.5>=k?k*(i+1):k+i-k*i,k=2*k-i,a=[256*c(k,i,a+1/3),256*c(k,i,a),256*c(k,i,a-
+1/3),1];4==d&&(a[3]=f[3]);return h.fromArray(a,e)}}return null};var i=function(b,c,a){b=Number(b);return isNaN(b)?a:b<c?c:b>a?a:b};h.prototype.sanitize=function(){this.r=Math.round(i(this.r,0,255));this.g=Math.round(i(this.g,0,255));this.b=Math.round(i(this.b,0,255));this.a=i(this.a,0,1);return this};e.makeGrey=h.makeGrey=function(b,c){return h.fromArray([b,b,b,c])};k.mixin(h.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],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],whitesmoke:[245,245,245],yellowgreen:[154,205,50]});return i})},"url:dojox/widget/ColorPicker/ColorPicker.html":'<table class="dojoxColorPicker" dojoAttachEvent="onkeypress: _handleKey" cellpadding="0" cellspacing="0" role="presentation">\n\t<tr>\n\t\t<td valign="top" class="dojoxColorPickerRightPad">\n\t\t\t<div class="dojoxColorPickerBox">\n\t\t\t\t<\!-- Forcing ABS in style attr due to dojo DND issue with not picking it up form the class. --\>\n\t\t\t\t<img title="${saturationPickerTitle}" alt="${saturationPickerTitle}" class="dojoxColorPickerPoint" src="${_pickerPointer}" tabIndex="0" dojoAttachPoint="cursorNode" style="position: absolute; top: 0px; left: 0px;">\n\t\t\t\t<img role="presentation" alt="" dojoAttachPoint="colorUnderlay" dojoAttachEvent="onclick: _setPoint, onmousedown: _stopDrag" class="dojoxColorPickerUnderlay" src="${_underlay}" ondragstart="return false">\n\t\t\t</div>\n\t\t</td>\n\t\t<td valign="top" class="dojoxColorPickerRightPad">\n\t\t\t<div class="dojoxHuePicker">\n\t\t\t\t<\!-- Forcing ABS in style attr due to dojo DND issue with not picking it up form the class. --\>\n\t\t\t\t<img dojoAttachPoint="hueCursorNode" tabIndex="0" class="dojoxHuePickerPoint" title="${huePickerTitle}" alt="${huePickerTitle}" src="${_huePickerPointer}" style="position: absolute; top: 0px; left: 0px;">\n\t\t\t\t<div class="dojoxHuePickerUnderlay" dojoAttachPoint="hueNode">\n\t\t\t\t <img role="presentation" alt="" dojoAttachEvent="onclick: _setHuePoint, onmousedown: _stopDrag" src="${_hueUnderlay}">\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</td>\n\t\t<td valign="top">\n\t\t\t<table cellpadding="0" cellspacing="0" role="presentation">\n\t\t\t\t<tr>\n\t\t\t\t\t<td valign="top" class="dojoxColorPickerPreviewContainer">\n\t\t\t\t\t\t<table cellpadding="0" cellspacing="0" role="presentation">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td valign="top" class="dojoxColorPickerRightPad">\n\t\t\t\t\t\t\t\t\t<div dojoAttachPoint="previewNode" class="dojoxColorPickerPreview"></div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<td valign="top">\n\t\t\t\t\t\t\t\t\t<div dojoAttachPoint="safePreviewNode" class="dojoxColorPickerWebSafePreview"></div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td valign="bottom">\n\t\t\t\t\t\t<table class="dojoxColorPickerOptional" cellpadding="0" cellspacing="0" role="presentation">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<div class="dijitInline dojoxColorPickerRgb" dojoAttachPoint="rgbNode">\n\t\t\t\t\t\t\t\t\t\t<table cellpadding="1" cellspacing="1" role="presentation">\n\t\t\t\t\t\t\t\t\t\t<tr><td><label for="${_uId}_r">${redLabel}</label></td><td><input id="${_uId}_r" dojoAttachPoint="Rval" size="1" dojoAttachEvent="onchange: _colorInputChange"></td></tr>\n\t\t\t\t\t\t\t\t\t\t<tr><td><label for="${_uId}_g">${greenLabel}</label></td><td><input id="${_uId}_g" dojoAttachPoint="Gval" size="1" dojoAttachEvent="onchange: _colorInputChange"></td></tr>\n\t\t\t\t\t\t\t\t\t\t<tr><td><label for="${_uId}_b">${blueLabel}</label></td><td><input id="${_uId}_b" dojoAttachPoint="Bval" size="1" dojoAttachEvent="onchange: _colorInputChange"></td></tr>\n\t\t\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<div class="dijitInline dojoxColorPickerHsv" dojoAttachPoint="hsvNode">\n\t\t\t\t\t\t\t\t\t\t<table cellpadding="1" cellspacing="1" role="presentation">\n\t\t\t\t\t\t\t\t\t\t<tr><td><label for="${_uId}_h">${hueLabel}</label></td><td><input id="${_uId}_h" dojoAttachPoint="Hval"size="1" dojoAttachEvent="onchange: _colorInputChange"> ${degLabel}</td></tr>\n\t\t\t\t\t\t\t\t\t\t<tr><td><label for="${_uId}_s">${saturationLabel}</label></td><td><input id="${_uId}_s" dojoAttachPoint="Sval" size="1" dojoAttachEvent="onchange: _colorInputChange"> ${percentSign}</td></tr>\n\t\t\t\t\t\t\t\t\t\t<tr><td><label for="${_uId}_v">${valueLabel}</label></td><td><input id="${_uId}_v" dojoAttachPoint="Vval" size="1" dojoAttachEvent="onchange: _colorInputChange"> ${percentSign}</td></tr>\n\t\t\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td colspan="2">\n\t\t\t\t\t\t\t\t\t<div class="dojoxColorPickerHex" dojoAttachPoint="hexNode" aria-live="polite">\t\n\t\t\t\t\t\t\t\t\t\t<label for="${_uId}_hex">&nbsp;${hexLabel}&nbsp;</label><input id="${_uId}_hex" dojoAttachPoint="hexCode, focusNode, valueNode" size="6" class="dojoxColorPickerHexCode" dojoAttachEvent="onchange: _colorInputChange">\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</td>\n\t</tr>\n</table>\n\n',
-"dijit/form/DropDownButton":function(){define("dojo/_base/declare,dojo/_base/lang,dojo/query,../registry,../popup,./Button,../_Container,../_HasDropDown,dojo/text!./templates/DropDownButton.html".split(","),function(e,j,i,l,c,g,h,b,f){return e("dijit.form.DropDownButton",[g,h,b],{baseClass:"dijitDropDownButton",templateString:f,_fillContent:function(){if(this.srcNodeRef){var a=i("*",this.srcNodeRef);this.inherited(arguments,[a[0]]);this.dropDownContainer=this.srcNodeRef}},startup:function(){if(!this._started){if(!this.dropDown&&
-this.dropDownContainer){var a=i("[widgetId]",this.dropDownContainer)[0];this.dropDown=l.byNode(a);delete this.dropDownContainer}this.dropDown&&c.hide(this.dropDown);this.inherited(arguments)}},isLoaded:function(){var a=this.dropDown;return!!a&&(!a.href||a.isLoaded)},loadDropDown:function(a){var b=this.dropDown,c=b.on("load",j.hitch(this,function(){c.remove();a()}));b.refresh()},isFocusable:function(){return this.inherited(arguments)&&!this._mouseDown}})})},"url:dijit/form/templates/DropDownButton.html":'<span class="dijit dijitReset dijitInline"\n\t><span class=\'dijitReset dijitInline dijitButtonNode\'\n\t\tdata-dojo-attach-event="ondijitclick:_onClick" data-dojo-attach-point="_buttonNode"\n\t\t><span class="dijitReset dijitStretch dijitButtonContents"\n\t\t\tdata-dojo-attach-point="focusNode,titleNode,_arrowWrapperNode"\n\t\t\trole="button" aria-haspopup="true" aria-labelledby="${id}_label"\n\t\t\t><span class="dijitReset dijitInline dijitIcon"\n\t\t\t\tdata-dojo-attach-point="iconNode"\n\t\t\t></span\n\t\t\t><span class="dijitReset dijitInline dijitButtonText"\n\t\t\t\tdata-dojo-attach-point="containerNode,_popupStateNode"\n\t\t\t\tid="${id}_label"\n\t\t\t></span\n\t\t\t><span class="dijitReset dijitInline dijitArrowButtonInner"></span\n\t\t\t><span class="dijitReset dijitInline dijitArrowButtonChar">&#9660;</span\n\t\t></span\n\t></span\n\t><input ${!nameAttrSetting} type="${type}" value="${value}" class="dijitOffScreen" tabIndex="-1"\n\t\tdata-dojo-attach-point="valueNode"\n/></span>\n',
-"dijit/TooltipDialog":function(){define("dojo/_base/declare,dojo/dom-class,dojo/_base/event,dojo/keys,dojo/_base/lang,./focus,./layout/ContentPane,./_DialogMixin,./form/_FormMixin,./_TemplatedMixin,dojo/text!./templates/TooltipDialog.html,./main".split(","),function(e,j,i,l,c,g,h,b,f,a,k){return e("dijit.TooltipDialog",[h,a,f,b],{title:"",doLayout:!1,autofocus:!0,baseClass:"dijitTooltipDialog",_firstFocusItem:null,_lastFocusItem:null,templateString:k,_setTitleAttr:function(a){this.containerNode.title=
+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],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],whitesmoke:[245,245,245],yellowgreen:[154,205,50]});return h})},"url:dojox/widget/ColorPicker/ColorPicker.html":'<table class="dojoxColorPicker" dojoAttachEvent="onkeypress: _handleKey" cellpadding="0" cellspacing="0" role="presentation">\n\t<tr>\n\t\t<td valign="top" class="dojoxColorPickerRightPad">\n\t\t\t<div class="dojoxColorPickerBox">\n\t\t\t\t<\!-- Forcing ABS in style attr due to dojo DND issue with not picking it up form the class. --\>\n\t\t\t\t<img title="${saturationPickerTitle}" alt="${saturationPickerTitle}" class="dojoxColorPickerPoint" src="${_pickerPointer}" tabIndex="0" dojoAttachPoint="cursorNode" style="position: absolute; top: 0px; left: 0px;">\n\t\t\t\t<img role="presentation" alt="" dojoAttachPoint="colorUnderlay" dojoAttachEvent="onclick: _setPoint, onmousedown: _stopDrag" class="dojoxColorPickerUnderlay" src="${_underlay}" ondragstart="return false">\n\t\t\t</div>\n\t\t</td>\n\t\t<td valign="top" class="dojoxColorPickerRightPad">\n\t\t\t<div class="dojoxHuePicker">\n\t\t\t\t<\!-- Forcing ABS in style attr due to dojo DND issue with not picking it up form the class. --\>\n\t\t\t\t<img dojoAttachPoint="hueCursorNode" tabIndex="0" class="dojoxHuePickerPoint" title="${huePickerTitle}" alt="${huePickerTitle}" src="${_huePickerPointer}" style="position: absolute; top: 0px; left: 0px;">\n\t\t\t\t<div class="dojoxHuePickerUnderlay" dojoAttachPoint="hueNode">\n\t\t\t\t <img role="presentation" alt="" dojoAttachEvent="onclick: _setHuePoint, onmousedown: _stopDrag" src="${_hueUnderlay}">\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</td>\n\t\t<td valign="top">\n\t\t\t<table cellpadding="0" cellspacing="0" role="presentation">\n\t\t\t\t<tr>\n\t\t\t\t\t<td valign="top" class="dojoxColorPickerPreviewContainer">\n\t\t\t\t\t\t<table cellpadding="0" cellspacing="0" role="presentation">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td valign="top" class="dojoxColorPickerRightPad">\n\t\t\t\t\t\t\t\t\t<div dojoAttachPoint="previewNode" class="dojoxColorPickerPreview"></div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<td valign="top">\n\t\t\t\t\t\t\t\t\t<div dojoAttachPoint="safePreviewNode" class="dojoxColorPickerWebSafePreview"></div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td valign="bottom">\n\t\t\t\t\t\t<table class="dojoxColorPickerOptional" cellpadding="0" cellspacing="0" role="presentation">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<div class="dijitInline dojoxColorPickerRgb" dojoAttachPoint="rgbNode">\n\t\t\t\t\t\t\t\t\t\t<table cellpadding="1" cellspacing="1" role="presentation">\n\t\t\t\t\t\t\t\t\t\t<tr><td><label for="${_uId}_r">${redLabel}</label></td><td><input id="${_uId}_r" dojoAttachPoint="Rval" size="1" dojoAttachEvent="onchange: _colorInputChange"></td></tr>\n\t\t\t\t\t\t\t\t\t\t<tr><td><label for="${_uId}_g">${greenLabel}</label></td><td><input id="${_uId}_g" dojoAttachPoint="Gval" size="1" dojoAttachEvent="onchange: _colorInputChange"></td></tr>\n\t\t\t\t\t\t\t\t\t\t<tr><td><label for="${_uId}_b">${blueLabel}</label></td><td><input id="${_uId}_b" dojoAttachPoint="Bval" size="1" dojoAttachEvent="onchange: _colorInputChange"></td></tr>\n\t\t\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<div class="dijitInline dojoxColorPickerHsv" dojoAttachPoint="hsvNode">\n\t\t\t\t\t\t\t\t\t\t<table cellpadding="1" cellspacing="1" role="presentation">\n\t\t\t\t\t\t\t\t\t\t<tr><td><label for="${_uId}_h">${hueLabel}</label></td><td><input id="${_uId}_h" dojoAttachPoint="Hval"size="1" dojoAttachEvent="onchange: _colorInputChange"> ${degLabel}</td></tr>\n\t\t\t\t\t\t\t\t\t\t<tr><td><label for="${_uId}_s">${saturationLabel}</label></td><td><input id="${_uId}_s" dojoAttachPoint="Sval" size="1" dojoAttachEvent="onchange: _colorInputChange"> ${percentSign}</td></tr>\n\t\t\t\t\t\t\t\t\t\t<tr><td><label for="${_uId}_v">${valueLabel}</label></td><td><input id="${_uId}_v" dojoAttachPoint="Vval" size="1" dojoAttachEvent="onchange: _colorInputChange"> ${percentSign}</td></tr>\n\t\t\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td colspan="2">\n\t\t\t\t\t\t\t\t\t<div class="dojoxColorPickerHex" dojoAttachPoint="hexNode" aria-live="polite">\t\n\t\t\t\t\t\t\t\t\t\t<label for="${_uId}_hex">&nbsp;${hexLabel}&nbsp;</label><input id="${_uId}_hex" dojoAttachPoint="hexCode, focusNode, valueNode" size="6" class="dojoxColorPickerHexCode" dojoAttachEvent="onchange: _colorInputChange">\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</td>\n\t</tr>\n</table>\n\n',
+"dijit/form/DropDownButton":function(){define("dojo/_base/declare,dojo/_base/lang,dojo/query,../registry,../popup,./Button,../_Container,../_HasDropDown,dojo/text!./templates/DropDownButton.html".split(","),function(f,k,h,j,e,c,i,b,g){return f("dijit.form.DropDownButton",[c,i,b],{baseClass:"dijitDropDownButton",templateString:g,_fillContent:function(){if(this.srcNodeRef){var a=h("*",this.srcNodeRef);this.inherited(arguments,[a[0]]);this.dropDownContainer=this.srcNodeRef}},startup:function(){if(!this._started){if(!this.dropDown&&
+this.dropDownContainer){var a=h("[widgetId]",this.dropDownContainer)[0];this.dropDown=j.byNode(a);delete this.dropDownContainer}this.dropDown&&e.hide(this.dropDown);this.inherited(arguments)}},isLoaded:function(){var a=this.dropDown;return!!a&&(!a.href||a.isLoaded)},loadDropDown:function(a){var b=this.dropDown,c=b.on("load",k.hitch(this,function(){c.remove();a()}));b.refresh()},isFocusable:function(){return this.inherited(arguments)&&!this._mouseDown}})})},"url:dijit/form/templates/DropDownButton.html":'<span class="dijit dijitReset dijitInline"\n\t><span class=\'dijitReset dijitInline dijitButtonNode\'\n\t\tdata-dojo-attach-event="ondijitclick:_onClick" data-dojo-attach-point="_buttonNode"\n\t\t><span class="dijitReset dijitStretch dijitButtonContents"\n\t\t\tdata-dojo-attach-point="focusNode,titleNode,_arrowWrapperNode"\n\t\t\trole="button" aria-haspopup="true" aria-labelledby="${id}_label"\n\t\t\t><span class="dijitReset dijitInline dijitIcon"\n\t\t\t\tdata-dojo-attach-point="iconNode"\n\t\t\t></span\n\t\t\t><span class="dijitReset dijitInline dijitButtonText"\n\t\t\t\tdata-dojo-attach-point="containerNode,_popupStateNode"\n\t\t\t\tid="${id}_label"\n\t\t\t></span\n\t\t\t><span class="dijitReset dijitInline dijitArrowButtonInner"></span\n\t\t\t><span class="dijitReset dijitInline dijitArrowButtonChar">&#9660;</span\n\t\t></span\n\t></span\n\t><input ${!nameAttrSetting} type="${type}" value="${value}" class="dijitOffScreen" tabIndex="-1"\n\t\tdata-dojo-attach-point="valueNode"\n/></span>\n',
+"dijit/TooltipDialog":function(){define("dojo/_base/declare,dojo/dom-class,dojo/_base/event,dojo/keys,dojo/_base/lang,./focus,./layout/ContentPane,./_DialogMixin,./form/_FormMixin,./_TemplatedMixin,dojo/text!./templates/TooltipDialog.html,./main".split(","),function(f,k,h,j,e,c,i,b,g,a,l){return f("dijit.TooltipDialog",[i,a,g,b],{title:"",doLayout:!1,autofocus:!0,baseClass:"dijitTooltipDialog",_firstFocusItem:null,_lastFocusItem:null,templateString:l,_setTitleAttr:function(a){this.containerNode.title=
a;this._set("title",a)},postCreate:function(){this.inherited(arguments);this.connect(this.containerNode,"onkeypress","_onKey")},orient:function(a,b,c){a={"MR-ML":"dijitTooltipRight","ML-MR":"dijitTooltipLeft","TM-BM":"dijitTooltipAbove","BM-TM":"dijitTooltipBelow","BL-TL":"dijitTooltipBelow dijitTooltipABLeft","TL-BL":"dijitTooltipAbove dijitTooltipABLeft","BR-TR":"dijitTooltipBelow dijitTooltipABRight","TR-BR":"dijitTooltipAbove dijitTooltipABRight","BR-BL":"dijitTooltipRight","BL-BR":"dijitTooltipLeft"}[b+
-"-"+c];j.replace(this.domNode,a,this._currentOrientClass||"");this._currentOrientClass=a},focus:function(){this._getFocusItems(this.containerNode);g.focus(this._firstFocusItem)},onOpen:function(a){this.orient(this.domNode,a.aroundCorner,a.corner);var b=a.aroundNodePos;if("M"==a.corner.charAt(0)&&"M"==a.aroundCorner.charAt(0))this.connectorNode.style.top=b.y+(b.h-this.connectorNode.offsetHeight>>1)-a.y+"px",this.connectorNode.style.left="";else if("M"==a.corner.charAt(1)&&"M"==a.aroundCorner.charAt(1))this.connectorNode.style.left=
-b.x+(b.w-this.connectorNode.offsetWidth>>1)-a.x+"px";this._onShow()},onClose:function(){this.onHide()},_onKey:function(a){var b=a.target;a.charOrCode===l.TAB&&this._getFocusItems(this.containerNode);var c=this._firstFocusItem==this._lastFocusItem;a.charOrCode==l.ESCAPE?(this.defer("onCancel"),i.stop(a)):b==this._firstFocusItem&&a.shiftKey&&a.charOrCode===l.TAB?(c||g.focus(this._lastFocusItem),i.stop(a)):b==this._lastFocusItem&&a.charOrCode===l.TAB&&!a.shiftKey?(c||g.focus(this._firstFocusItem),i.stop(a)):
-a.charOrCode===l.TAB&&a.stopPropagation()}})})},"url:dijit/templates/TooltipDialog.html":'<div role="presentation" tabIndex="-1">\n\t<div class="dijitTooltipContainer" role="presentation">\n\t\t<div class ="dijitTooltipContents dijitTooltipFocusNode" data-dojo-attach-point="containerNode" role="dialog"></div>\n\t</div>\n\t<div class="dijitTooltipConnector" role="presentation" data-dojo-attach-point="connectorNode"></div>\n</div>\n',"*now":function(e){e(['dojo/i18n!*preload*dojo/nls/dojo*["ar","ca","cs","da","de","el","en-gb","en-us","es-es","fi-fi","fr-fr","he-il","hu","it-it","ja-jp","ko-kr","nl-nl","nb","pl","pt-br","pt-pt","ru","sk","sl","sv","th","tr","zh-tw","zh-cn","ROOT"]'])}}});
-(function(){var e=this.require;e({cache:{}});!e.async&&e(["dojo"]);e.boot&&e.apply(null,e.boot)})(); \ No newline at end of file
+"-"+c];k.replace(this.domNode,a,this._currentOrientClass||"");this._currentOrientClass=a},focus:function(){this._getFocusItems(this.containerNode);c.focus(this._firstFocusItem)},onOpen:function(a){this.orient(this.domNode,a.aroundCorner,a.corner);var b=a.aroundNodePos;if("M"==a.corner.charAt(0)&&"M"==a.aroundCorner.charAt(0))this.connectorNode.style.top=b.y+(b.h-this.connectorNode.offsetHeight>>1)-a.y+"px",this.connectorNode.style.left="";else if("M"==a.corner.charAt(1)&&"M"==a.aroundCorner.charAt(1))this.connectorNode.style.left=
+b.x+(b.w-this.connectorNode.offsetWidth>>1)-a.x+"px";this._onShow()},onClose:function(){this.onHide()},_onKey:function(a){var b=a.target;a.charOrCode===j.TAB&&this._getFocusItems(this.containerNode);var e=this._firstFocusItem==this._lastFocusItem;a.charOrCode==j.ESCAPE?(this.defer("onCancel"),h.stop(a)):b==this._firstFocusItem&&a.shiftKey&&a.charOrCode===j.TAB?(e||c.focus(this._lastFocusItem),h.stop(a)):b==this._lastFocusItem&&a.charOrCode===j.TAB&&!a.shiftKey?(e||c.focus(this._firstFocusItem),h.stop(a)):
+a.charOrCode===j.TAB&&a.stopPropagation()}})})},"url:dijit/templates/TooltipDialog.html":'<div role="presentation" tabIndex="-1">\n\t<div class="dijitTooltipContainer" role="presentation">\n\t\t<div class ="dijitTooltipContents dijitTooltipFocusNode" data-dojo-attach-point="containerNode" role="dialog"></div>\n\t</div>\n\t<div class="dijitTooltipConnector" role="presentation" data-dojo-attach-point="connectorNode"></div>\n</div>\n',"*now":function(f){f(['dojo/i18n!*preload*dojo/nls/dojo*["ar","ca","cs","da","de","el","en-gb","en-us","es-es","fi-fi","fr-fr","he-il","hu","it-it","ja-jp","ko-kr","nl-nl","nb","pl","pt-br","pt-pt","ru","sk","sl","sv","th","tr","zh-tw","zh-cn","ROOT"]'])}}});
+(function(){var f=this.require;f({cache:{}});!f.async&&f(["dojo"]);f.boot&&f.apply(null,f.boot)})(); \ No newline at end of file
diff --git a/js/3rdparty/resources/dojox/layout/resources/icons/gridcontainer_grip.gif b/js/3rdparty/resources/dojox/layout/resources/icons/gridcontainer_grip.gif
index 2eb05e83..2eb05e83 100644..100755
--- a/js/3rdparty/resources/dojox/layout/resources/icons/gridcontainer_grip.gif
+++ b/js/3rdparty/resources/dojox/layout/resources/icons/gridcontainer_grip.gif
Binary files differ
diff --git a/js/3rdparty/resources/dojox/layout/resources/icons/grip_bg.gif b/js/3rdparty/resources/dojox/layout/resources/icons/grip_bg.gif
index 45f76ce5..45f76ce5 100644..100755
--- a/js/3rdparty/resources/dojox/layout/resources/icons/grip_bg.gif
+++ b/js/3rdparty/resources/dojox/layout/resources/icons/grip_bg.gif
Binary files differ
diff --git a/js/3rdparty/resources/dojox/layout/resources/icons/pixel.gif b/js/3rdparty/resources/dojox/layout/resources/icons/pixel.gif
index 3be21197..3be21197 100644..100755
--- a/js/3rdparty/resources/dojox/layout/resources/icons/pixel.gif
+++ b/js/3rdparty/resources/dojox/layout/resources/icons/pixel.gif
Binary files differ
diff --git a/js/3rdparty/resources/dojox/layout/resources/icons/resize.png b/js/3rdparty/resources/dojox/layout/resources/icons/resize.png
index 17f39d08..17f39d08 100644..100755
--- a/js/3rdparty/resources/dojox/layout/resources/icons/resize.png
+++ b/js/3rdparty/resources/dojox/layout/resources/icons/resize.png
Binary files differ
diff --git a/js/3rdparty/resources/dojox/layout/resources/icons/rotator.png b/js/3rdparty/resources/dojox/layout/resources/icons/rotator.png
index ad93ee5d..ad93ee5d 100644..100755
--- a/js/3rdparty/resources/dojox/layout/resources/icons/rotator.png
+++ b/js/3rdparty/resources/dojox/layout/resources/icons/rotator.png
Binary files differ
diff --git a/js/3rdparty/resources/dojox/layout/resources/icons/splitterToggleH.png b/js/3rdparty/resources/dojox/layout/resources/icons/splitterToggleH.png
index 72a37232..72a37232 100644..100755
--- a/js/3rdparty/resources/dojox/layout/resources/icons/splitterToggleH.png
+++ b/js/3rdparty/resources/dojox/layout/resources/icons/splitterToggleH.png
Binary files differ
diff --git a/js/3rdparty/resources/dojox/layout/resources/icons/splitterToggleV.png b/js/3rdparty/resources/dojox/layout/resources/icons/splitterToggleV.png
index 55ecf046..55ecf046 100644..100755
--- a/js/3rdparty/resources/dojox/layout/resources/icons/splitterToggleV.png
+++ b/js/3rdparty/resources/dojox/layout/resources/icons/splitterToggleV.png
Binary files differ
diff --git a/js/3rdparty/resources/dojox/widget/ColorPicker/images/hue.png b/js/3rdparty/resources/dojox/widget/ColorPicker/images/hue.png
index 2746235f..2746235f 100644..100755
--- a/js/3rdparty/resources/dojox/widget/ColorPicker/images/hue.png
+++ b/js/3rdparty/resources/dojox/widget/ColorPicker/images/hue.png
Binary files differ
diff --git a/js/3rdparty/resources/dojox/widget/ColorPicker/images/hueHandle.png b/js/3rdparty/resources/dojox/widget/ColorPicker/images/hueHandle.png
index c7b56e83..c7b56e83 100644..100755
--- a/js/3rdparty/resources/dojox/widget/ColorPicker/images/hueHandle.png
+++ b/js/3rdparty/resources/dojox/widget/ColorPicker/images/hueHandle.png
Binary files differ
diff --git a/js/3rdparty/resources/dojox/widget/ColorPicker/images/hueHandleA11y.png b/js/3rdparty/resources/dojox/widget/ColorPicker/images/hueHandleA11y.png
index 58c648d9..58c648d9 100644..100755
--- a/js/3rdparty/resources/dojox/widget/ColorPicker/images/hueHandleA11y.png
+++ b/js/3rdparty/resources/dojox/widget/ColorPicker/images/hueHandleA11y.png
Binary files differ
diff --git a/js/3rdparty/resources/dojox/widget/ColorPicker/images/pickerPointer.png b/js/3rdparty/resources/dojox/widget/ColorPicker/images/pickerPointer.png
index 28a3c81d..28a3c81d 100644..100755
--- a/js/3rdparty/resources/dojox/widget/ColorPicker/images/pickerPointer.png
+++ b/js/3rdparty/resources/dojox/widget/ColorPicker/images/pickerPointer.png
Binary files differ
diff --git a/js/3rdparty/resources/dojox/widget/ColorPicker/images/underlay.png b/js/3rdparty/resources/dojox/widget/ColorPicker/images/underlay.png
index 0f5eb7cc..0f5eb7cc 100644..100755
--- a/js/3rdparty/resources/dojox/widget/ColorPicker/images/underlay.png
+++ b/js/3rdparty/resources/dojox/widget/ColorPicker/images/underlay.png
Binary files differ
diff --git a/js/3rdparty/webodf/dojo-amalgamation.js b/js/3rdparty/webodf/dojo-amalgamation.js
index 4aa24949..11df941b 100644
--- a/js/3rdparty/webodf/dojo-amalgamation.js
+++ b/js/3rdparty/webodf/dojo-amalgamation.js
@@ -1,804 +1,742 @@
//>>built
-(function(e,j){var i,l,c=function(){},g=function(a){for(var d in a)return 0;return 1},h={}.toString,b=function(a){return"[object Function]"==h.call(a)},f=function(a){return"[object String]"==h.call(a)},a=function(a){return"[object Array]"==h.call(a)},k=function(a,d){if(a)for(var b=0;b<a.length;)d(a[b++])},d=function(a,d){for(var b in d)a[b]=d[b];return a},p=function(a,b){return d(Error(a),{src:"dojoLoader",info:b})},m=1,n=function(){return"_"+m++},o=function(a,d,b){return wa(a,d,b,0,o)},r=this,q=
-r.document,v=q&&q.createElement("DiV"),s=o.has=function(a){return b(u[a])?u[a]=u[a](r,q,v):u[a]},u=s.cache=j.hasCache;s.add=function(a,d,b,k){(void 0===u[a]||k)&&(u[a]=d);return b&&s(a)};for(var t in e.has)s.add(t,e.has[t],0,1);o.async=1;var y=new Function("return eval(arguments[0]);");o.eval=function(a,d){return y(a+"\r\n////@ sourceURL="+d)};var z={},I=o.signal=function(d,b){var f=z[d];k(f&&f.slice(0),function(d){d.apply(null,a(b)?b:[b])})},J=o.on=function(a,d){var b=z[a]||(z[a]=[]);b.push(d);return{remove:function(){for(var a=
-0;a<b.length;a++)if(b[a]===d){b.splice(a,1);break}}}},N=[],E={},S=[],Q={},B=o.map={},A=[],w={},x="",K={},H={},C={},F=function(a){var d,b,k,f;for(d in H)b=H[d],(k=d.match(/^url\:(.+)/))?K["url:"+xa(k[1],a)]=b:"*now"==d?f=b:"*noref"!=d&&(k=aa(d,a),K[k.mid]=K["url:"+k.url]=b);f&&f(ja(a));H={}},O=function(a){return a.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,function(a){return"\\"+a})},D=function(a,d){d.splice(0,d.length);for(var b in a)d.push([b,a[b],RegExp("^"+O(b)+"(/|$)"),b.length]);d.sort(function(a,
-d){return d[3]-a[3]});return d},L=function(a){var b=a.name;b||(b=a,a={name:b});a=d({main:"main"},a);a.location=a.location?a.location:b;if(a.packageMap)B[b]=a.packageMap;if(!a.main.indexOf("./"))a.main=a.main.substring(2);Q[b]=a},T=[],G=function(a,b,c){for(var m in a){if("waitSeconds"==m)o.waitms=1E3*(a[m]||0);"cacheBust"==m&&(x=a[m]?f(a[m])?a[m]:(new Date).getTime()+"":"");if("baseUrl"==m||"combo"==m)o[m]=a[m];a[m]!==u&&(o.rawConfig[m]=a[m],"has"!=m&&s.add("config-"+m,a[m],0,b))}if(!o.baseUrl)o.baseUrl=
-"./";/\/$/.test(o.baseUrl)||(o.baseUrl+="/");for(m in a.has)s.add(m,a.has[m],0,b);k(a.packages,L);for(l in a.packagePaths)k(a.packagePaths[l],function(a){var b=l+"/"+a;f(a)&&(a={name:a});a.location=b;L(a)});D(d(B,a.map),A);k(A,function(a){a[1]=D(a[1],[]);if("*"==a[0])A.star=a[1]});D(d(E,a.paths),S);k(a.aliases,function(a){f(a[0])&&(a[0]=RegExp("^"+O(a[0])+"$"));N.push(a)});if(b)T.push({config:a.config});else for(m in a.config)b=W(m,c),b.config=d(b.config||{},a.config[m]);if(a.cache)F(),H=a.cache,
-a.cache["*noref"]&&F();I("config",[a,o.rawConfig])};s("dojo-cdn");var M=q.getElementsByTagName("script");i=0;for(var X,P,Y,U;i<M.length;)if(X=M[i++],(Y=X.getAttribute("src"))&&(U=Y.match(/(((.*)\/)|^)dojo\.js(\W|$)/i))){P=U[3]||"";j.baseUrl=j.baseUrl||P;(Y=X.getAttribute("data-dojo-config")||X.getAttribute("djConfig"))&&(C=o.eval("({ "+Y+" })","data-dojo-config"));break}o.rawConfig={};G(j,1);if(s("dojo-cdn"))(Q.dojo.location=P)&&(P+="/"),Q.dijit.location=P+"../dijit/",Q.dojox.location=P+"../dojox/";
-G(e,1);G(C,1);var ba=function(a){ka(function(){k(a.deps,ya)})},wa=function(b,k,m,g,e){var h;if(f(b)){if((h=W(b,g,!0))&&h.executed)return h.result;throw p("undefinedModule",b);}a(b)||(G(b,0,g),b=k,k=m);if(a(b))if(b.length){for(var m="require*"+n(),l,i=[],r=0;r<b.length;)l=b[r++],i.push(W(l,g));h=d(ca("",m,0,""),{injected:2,deps:i,def:k||c,require:g?g.require:o,gc:1});w[h.mid]=h;ba(h);var u=$&&0!="sync";ka(function(){la(h,u)});h.executed||V.push(h);da()}else k&&k();return e},ja=function(a){if(!a)return o;
-var b=a.require;if(!b)b=function(d,k,f){return wa(d,k,f,a,b)},a.require=d(b,o),b.module=a,b.toUrl=function(b){return xa(b,a)},b.toAbsMid=function(b){return ma(b,a)};return b},V=[],ea=[],R={},La=function(a){a.injected=1;R[a.mid]=1;a.url&&(R[a.url]=a.pack||1);za()},ga=function(a){a.injected=2;delete R[a.mid];a.url&&delete R[a.url];g(R)&&fa()},Ma=o.idle=function(){return!ea.length&&g(R)&&!V.length&&!$},na=function(a,b){if(b)for(var d=0;d<b.length;d++)if(b[d][2].test(a))return b[d];return 0},Aa=function(a){for(var b=
-[],d,k,a=a.replace(/\\/g,"/").split("/");a.length;)d=a.shift(),".."==d&&b.length&&".."!=k?(b.pop(),k=b[b.length-1]):"."!=d&&b.push(k=d);return b.join("/")},ca=function(a,b,d,k){return{pid:a,mid:b,pack:d,url:k,executed:0,def:0}},Ba=function(a,d,f,m,c,g,h,e){var o,n,l,i;i=/^\./.test(a);if(/(^\/)|(\:)|(\.js$)/.test(a)||i&&!d)return ca(0,a,0,a);a=Aa(i?d.mid+"/../"+a:a);if(/^\./.test(a))throw p("irrationalPath",a);d&&(l=na(d.mid,g));(l=(l=l||g.star)&&na(a,l[1]))&&(a=l[1]+a.substring(l[3]));d=(U=a.match(/^([^\/]+)(\/(.+))?$/))?
-U[1]:"";(o=f[d])?a=d+"/"+(n=U[3]||o.main):d="";var r=0;k(N,function(d){var k=a.match(d[0]);k&&0<k.length&&(r=b(d[1])?a.replace(d[0],d[1]):d[1])});if(r)return Ba(r,0,f,m,c,g,h,e);if(f=m[a])return e?ca(f.pid,f.mid,f.pack,f.url):m[a];m=(l=na(a,h))?l[1]+a.substring(l[3]):d?o.location+"/"+n:s("config-tlmSiblingOfDojo")?"../"+a:a;/(^\/)|(\:)/.test(m)||(m=c+m);return ca(d,a,o,Aa(m+".js"))},aa=function(a,b){return Ba(a,b,Q,w,o.baseUrl,A,S)},Ca=function(a,b,d){return a.normalize?a.normalize(b,function(a){return ma(a,
-d)}):ma(b,d)},Da=0,W=function(a,b,d){var k,f;(k=a.match(/^(.+?)\!(.*)$/))?(f=W(k[1],b,d),5===f.executed&&!f.load&&oa(f),f.load?(k=Ca(f,k[2],b),a=f.mid+"!"+(f.dynamic?++Da+"!":"")+k):(k=k[2],a=f.mid+"!"+ ++Da+"!waitingForPlugin"),a={plugin:f,mid:a,req:ja(b),prid:k}):a=aa(a,b);return w[a.mid]||!d&&(w[a.mid]=a)},ma=o.toAbsMid=function(a,b){return aa(a,b).mid},xa=o.toUrl=function(a,b){var d=aa(a+"/x",b),k=d.url;return Ea(0===d.pid?a:k.substring(0,k.length-5))},Fa={injected:2,executed:5,def:3,result:3},
-pa=function(a){return w[a]=d({mid:a},Fa)},Na=pa("require"),Oa=pa("exports"),Pa=pa("module"),ha={},qa=0,oa=function(a){var b=a.result;a.dynamic=b.dynamic;a.normalize=b.normalize;a.load=b.load;return a},Qa=function(a){var b={};k(a.loadQ,function(k){var f=Ca(a,k.prid,k.req.module),m=a.dynamic?k.mid.replace(/waitingForPlugin$/,f):a.mid+"!"+f,f=d(d({},k),{mid:m,prid:f,injected:0});w[m]||Ga(w[m]=f);b[k.mid]=w[m];ga(k);delete w[k.mid]});a.loadQ=0;var f=function(a){for(var d=a.deps||[],k=0;k<d.length;k++)(a=
-b[d[k].mid])&&(d[k]=a)},m;for(m in w)f(w[m]);k(V,f)},ra=function(a){o.trace("loader-finish-exec",[a.mid]);a.executed=5;a.defOrder=qa++;a.loadQ&&(oa(a),Qa(a));for(i=0;i<V.length;)V[i]===a?V.splice(i,1):i++;/^require\*/.test(a.mid)&&delete w[a.mid]},Ra=[],la=function(a,d){if(4===a.executed)return o.trace("loader-circular-dependency",[Ra.concat(a.mid).join("->")]),!a.def||d?ha:a.cjs&&a.cjs.exports;if(!a.executed){if(!a.def)return ha;var k=a.mid,f=a.deps||[],m,c=[],g=0;for(a.executed=4;g<f.length;){m=
-f[g++];m=m===Na?ja(a):m===Oa?a.cjs.exports:m===Pa?a.cjs:la(m,d);if(m===ha)return a.executed=0,o.trace("loader-exec-module",["abort",k]),ha;c.push(m)}o.trace("loader-run-factory",[a.mid]);var k=a.def,h;if(s("config-dojo-loader-catches"))try{h=b(k)?k.apply(null,c):k}catch(e){I("error",a.result=p("factoryThrew",[a,e]))}else h=b(k)?k.apply(null,c):k;a.result=void 0===h&&a.cjs?a.cjs.exports:h;ra(a)}return a.result},$=0,ka=function(a){try{$++,a()}finally{$--}Ma()&&I("idle",[])},da=function(){$||ka(function(){for(var a,
+(function(f,k){var h,j,e=function(){},c=function(a){for(var b in a)return 0;return 1},i={}.toString,b=function(a){return"[object Function]"==i.call(a)},g=function(a){return"[object String]"==i.call(a)},a=function(a){return"[object Array]"==i.call(a)},l=function(a,b){if(a)for(var d=0;d<a.length;)b(a[d++])},d=function(a,b){for(var d in b)a[d]=b[d];return a},p=function(a,b){return d(Error(a),{src:"dojoLoader",info:b})},m=1,n=function(){return"_"+m++},o=function(a,b,d){return wa(a,b,d,0,o)},r=this,q=
+r.document,v=q&&q.createElement("DiV"),s=o.has=function(a){return b(t[a])?t[a]=t[a](r,q,v):t[a]},t=s.cache=k.hasCache;s.add=function(a,b,d,l){(void 0===t[a]||l)&&(t[a]=b);return d&&s(a)};for(var u in f.has)s.add(u,f.has[u],0,1);o.async=1;var y=new Function("return eval(arguments[0]);");o.eval=function(a,b){return y(a+"\r\n////@ sourceURL="+b)};var z={},I=o.signal=function(b,d){var g=z[b];l(g&&g.slice(0),function(b){b.apply(null,a(d)?d:[d])})},J=o.on=function(a,b){var d=z[a]||(z[a]=[]);d.push(b);return{remove:function(){for(var a=
+0;a<d.length;a++)if(d[a]===b){d.splice(a,1);break}}}},N=[],E={},S=[],Q={},B=o.map={},A=[],w={},x="",K={},H={},C={},F=function(a){var b,d,l,g;for(b in H)d=H[b],(l=b.match(/^url\:(.+)/))?K["url:"+xa(l[1],a)]=d:"*now"==b?g=d:"*noref"!=b&&(l=aa(b,a),K[l.mid]=K["url:"+l.url]=d);g&&g(ja(a));H={}},O=function(a){return a.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,function(a){return"\\"+a})},D=function(a,b){b.splice(0,b.length);for(var d in a)b.push([d,a[d],RegExp("^"+O(d)+"(/|$)"),d.length]);b.sort(function(a,
+b){return b[3]-a[3]});return b},L=function(a){var b=a.name;b||(b=a,a={name:b});a=d({main:"main"},a);a.location=a.location?a.location:b;if(a.packageMap)B[b]=a.packageMap;if(!a.main.indexOf("./"))a.main=a.main.substring(2);Q[b]=a},T=[],G=function(a,b,e){for(var c in a){if("waitSeconds"==c)o.waitms=1E3*(a[c]||0);"cacheBust"==c&&(x=a[c]?g(a[c])?a[c]:(new Date).getTime()+"":"");if("baseUrl"==c||"combo"==c)o[c]=a[c];a[c]!==t&&(o.rawConfig[c]=a[c],"has"!=c&&s.add("config-"+c,a[c],0,b))}if(!o.baseUrl)o.baseUrl=
+"./";/\/$/.test(o.baseUrl)||(o.baseUrl+="/");for(c in a.has)s.add(c,a.has[c],0,b);l(a.packages,L);for(j in a.packagePaths)l(a.packagePaths[j],function(a){var b=j+"/"+a;g(a)&&(a={name:a});a.location=b;L(a)});D(d(B,a.map),A);l(A,function(a){a[1]=D(a[1],[]);if("*"==a[0])A.star=a[1]});D(d(E,a.paths),S);l(a.aliases,function(a){g(a[0])&&(a[0]=RegExp("^"+O(a[0])+"$"));N.push(a)});if(b)T.push({config:a.config});else for(c in a.config)b=W(c,e),b.config=d(b.config||{},a.config[c]);if(a.cache)F(),H=a.cache,
+a.cache["*noref"]&&F();I("config",[a,o.rawConfig])};s("dojo-cdn");var M=q.getElementsByTagName("script");h=0;for(var X,P,Y,U;h<M.length;)if(X=M[h++],(Y=X.getAttribute("src"))&&(U=Y.match(/(((.*)\/)|^)dojo\.js(\W|$)/i))){P=U[3]||"";k.baseUrl=k.baseUrl||P;(Y=X.getAttribute("data-dojo-config")||X.getAttribute("djConfig"))&&(C=o.eval("({ "+Y+" })","data-dojo-config"));break}o.rawConfig={};G(k,1);if(s("dojo-cdn"))(Q.dojo.location=P)&&(P+="/"),Q.dijit.location=P+"../dijit/",Q.dojox.location=P+"../dojox/";
+G(f,1);G(C,1);var ba=function(a){ka(function(){l(a.deps,ya)})},wa=function(b,l,c,m,i){var f;if(g(b)){if((f=W(b,m,!0))&&f.executed)return f.result;throw p("undefinedModule",b);}a(b)||(G(b,0,m),b=l,l=c);if(a(b))if(b.length){for(var c="require*"+n(),j,h=[],r=0;r<b.length;)j=b[r++],h.push(W(j,m));f=d(ca("",c,0,""),{injected:2,deps:h,def:l||e,require:m?m.require:o,gc:1});w[f.mid]=f;ba(f);var t=$&&0!="sync";ka(function(){la(f,t)});f.executed||V.push(f);da()}else l&&l();return i},ja=function(a){if(!a)return o;
+var b=a.require;if(!b)b=function(d,l,g){return wa(d,l,g,a,b)},a.require=d(b,o),b.module=a,b.toUrl=function(b){return xa(b,a)},b.toAbsMid=function(b){return ma(b,a)};return b},V=[],ea=[],R={},La=function(a){a.injected=1;R[a.mid]=1;a.url&&(R[a.url]=a.pack||1);za()},ga=function(a){a.injected=2;delete R[a.mid];a.url&&delete R[a.url];c(R)&&fa()},Ma=o.idle=function(){return!ea.length&&c(R)&&!V.length&&!$},na=function(a,b){if(b)for(var d=0;d<b.length;d++)if(b[d][2].test(a))return b[d];return 0},Aa=function(a){for(var b=
+[],d,l,a=a.replace(/\\/g,"/").split("/");a.length;)d=a.shift(),".."==d&&b.length&&".."!=l?(b.pop(),l=b[b.length-1]):"."!=d&&b.push(l=d);return b.join("/")},ca=function(a,b,d,l){return{pid:a,mid:b,pack:d,url:l,executed:0,def:0}},Ba=function(a,d,g,c,e,m,f,i){var o,n,j,h;h=/^\./.test(a);if(/(^\/)|(\:)|(\.js$)/.test(a)||h&&!d)return ca(0,a,0,a);a=Aa(h?d.mid+"/../"+a:a);if(/^\./.test(a))throw p("irrationalPath",a);d&&(j=na(d.mid,m));(j=(j=j||m.star)&&na(a,j[1]))&&(a=j[1]+a.substring(j[3]));d=(U=a.match(/^([^\/]+)(\/(.+))?$/))?
+U[1]:"";(o=g[d])?a=d+"/"+(n=U[3]||o.main):d="";var r=0;l(N,function(d){var l=a.match(d[0]);l&&0<l.length&&(r=b(d[1])?a.replace(d[0],d[1]):d[1])});if(r)return Ba(r,0,g,c,e,m,f,i);if(g=c[a])return i?ca(g.pid,g.mid,g.pack,g.url):c[a];c=(j=na(a,f))?j[1]+a.substring(j[3]):d?o.location+"/"+n:s("config-tlmSiblingOfDojo")?"../"+a:a;/(^\/)|(\:)/.test(c)||(c=e+c);return ca(d,a,o,Aa(c+".js"))},aa=function(a,b){return Ba(a,b,Q,w,o.baseUrl,A,S)},Ca=function(a,b,d){return a.normalize?a.normalize(b,function(a){return ma(a,
+d)}):ma(b,d)},Da=0,W=function(a,b,d){var l,g;(l=a.match(/^(.+?)\!(.*)$/))?(g=W(l[1],b,d),5===g.executed&&!g.load&&oa(g),g.load?(l=Ca(g,l[2],b),a=g.mid+"!"+(g.dynamic?++Da+"!":"")+l):(l=l[2],a=g.mid+"!"+ ++Da+"!waitingForPlugin"),a={plugin:g,mid:a,req:ja(b),prid:l}):a=aa(a,b);return w[a.mid]||!d&&(w[a.mid]=a)},ma=o.toAbsMid=function(a,b){return aa(a,b).mid},xa=o.toUrl=function(a,b){var d=aa(a+"/x",b),l=d.url;return Ea(0===d.pid?a:l.substring(0,l.length-5))},Fa={injected:2,executed:5,def:3,result:3},
+pa=function(a){return w[a]=d({mid:a},Fa)},Na=pa("require"),Oa=pa("exports"),Pa=pa("module"),ha={},qa=0,oa=function(a){var b=a.result;a.dynamic=b.dynamic;a.normalize=b.normalize;a.load=b.load;return a},Qa=function(a){var b={};l(a.loadQ,function(l){var g=Ca(a,l.prid,l.req.module),c=a.dynamic?l.mid.replace(/waitingForPlugin$/,g):a.mid+"!"+g,g=d(d({},l),{mid:c,prid:g,injected:0});w[c]||Ga(w[c]=g);b[l.mid]=w[c];ga(l);delete w[l.mid]});a.loadQ=0;var g=function(a){for(var d=a.deps||[],l=0;l<d.length;l++)(a=
+b[d[l].mid])&&(d[l]=a)},c;for(c in w)g(w[c]);l(V,g)},ra=function(a){o.trace("loader-finish-exec",[a.mid]);a.executed=5;a.defOrder=qa++;a.loadQ&&(oa(a),Qa(a));for(h=0;h<V.length;)V[h]===a?V.splice(h,1):h++;/^require\*/.test(a.mid)&&delete w[a.mid]},Ra=[],la=function(a,d){if(4===a.executed)return o.trace("loader-circular-dependency",[Ra.concat(a.mid).join("->")]),!a.def||d?ha:a.cjs&&a.cjs.exports;if(!a.executed){if(!a.def)return ha;var l=a.mid,g=a.deps||[],c,e=[],m=0;for(a.executed=4;m<g.length;){c=
+g[m++];c=c===Na?ja(a):c===Oa?a.cjs.exports:c===Pa?a.cjs:la(c,d);if(c===ha)return a.executed=0,o.trace("loader-exec-module",["abort",l]),ha;e.push(c)}o.trace("loader-run-factory",[a.mid]);var l=a.def,f;if(s("config-dojo-loader-catches"))try{f=b(l)?l.apply(null,e):l}catch(i){I("error",a.result=p("factoryThrew",[a,i]))}else f=b(l)?l.apply(null,e):l;a.result=void 0===f&&a.cjs?a.cjs.exports:f;ra(a)}return a.result},$=0,ka=function(a){try{$++,a()}finally{$--}Ma()&&I("idle",[])},da=function(){$||ka(function(){for(var a,
b,d=0;d<V.length;)a=qa,b=V[d],la(b),a!=qa?d=0:d++})};void 0===s("dojo-loader-eval-hint-url")&&s.add("dojo-loader-eval-hint-url",1);var Ea=function(a){a+="";return a+(x?(/\?/.test(a)?"&":"?")+x:"")},Ga=function(a){var b=a.plugin;5===b.executed&&!b.load&&oa(b);var d=function(b){a.result=b;ga(a);ra(a);da()};b.load?b.load(a.prid,a.req,d):b.loadQ?b.loadQ.push(a):(b.loadQ=[a],V.unshift(b),ya(b))},Z=0,sa=0,ta=0,Sa=function(a,b){s("config-stripStrict")&&(a=a.replace(/"use strict"/g,""));ta=1;if(s("config-dojo-loader-catches"))try{a===
-Z?Z.call(null):o.eval(a,s("dojo-loader-eval-hint-url")?b.url:b.mid)}catch(d){I("error",p("evalModuleThrew",b))}else a===Z?Z.call(null):o.eval(a,s("dojo-loader-eval-hint-url")?b.url:b.mid);ta=0},ya=function(a){var b=a.mid,k=a.url;if(!a.executed&&!a.injected&&!(R[b]||a.url&&(a.pack&&R[a.url]===a.pack||1==R[a.url])))if(La(a),a.plugin)Ga(a);else{var f=function(){Ta(a);2!==a.injected&&(ga(a),d(a,Fa),o.trace("loader-define-nonmodule",[a.url]));da()};(Z=K[b]||K["url:"+a.url])?(o.trace("loader-inject",["cache",
-a.mid,k]),Sa(Z,a),f()):(o.trace("loader-inject",["script",a.mid,k]),sa=a,o.injectUrl(Ea(k),f,a),sa=0)}},ua=function(a,k,f){o.trace("loader-define-module",[a.mid,k]);if(2===a.injected)return I("error",p("multipleDefine",a)),a;d(a,{deps:k,def:f,cjs:{id:a.mid,uri:a.url,exports:a.result={},setExports:function(b){a.cjs.exports=b},config:function(){return a.config}}});for(var m=0;m<k.length;m++)k[m]=W(k[m],a);ga(a);if(!b(f)&&!k.length)a.result=f,ra(a);return a},Ta=function(a,b){for(var d=[],f,m;ea.length;)m=
-ea.shift(),b&&(m[0]=b.shift()),f=m[0]&&W(m[0])||a,d.push([f,m[1],m[2]]);F(a);k(d,function(a){ba(ua.apply(null,a))})},ia=0,fa=c,za=c;fa=function(){ia&&clearTimeout(ia);ia=0};za=function(){fa();o.waitms&&(ia=window.setTimeout(function(){fa();I("error",p("timeout",R))},o.waitms))};s.add("ie-event-behavior",!!q.attachEvent&&("undefined"===typeof opera||"[object Opera]"!=opera.toString()));var va=function(a,b,d,k){if(s("ie-event-behavior"))return a.attachEvent(d,k),function(){a.detachEvent(d,k)};a.addEventListener(b,
-k,!1);return function(){a.removeEventListener(b,k,!1)}},Ua=va(window,"load","onload",function(){o.pageLoaded=1;"complete"!=q.readyState&&(q.readyState="complete");Ua()}),Ha=q.getElementsByTagName("script")[0],Va=Ha.parentNode;o.injectUrl=function(a,b,d){var d=d.node=q.createElement("script"),k=va(d,"load","onreadystatechange",function(a){var a=a||window.event,d=a.target||a.srcElement;if("load"===a.type||/complete|loaded/.test(d.readyState))k(),f(),b&&b()}),f=va(d,"error","onerror",function(b){k();
-f();I("error",p("scriptError",[a,b]))});d.type="text/javascript";d.charset="utf-8";d.src=a;Va.insertBefore(d,Ha);return d};o.log=c;o.trace=c;var Ia=function(a,d,k){var m=arguments.length,c=["require","exports","module"],g=[0,a,d];1==m?g=[0,b(a)?c:[],a]:2==m&&f(a)?g=[a,b(d)?c:[],d]:3==m&&(g=[a,d,k]);o.trace("loader-define",g.slice(0,2));if((m=g[0]&&W(g[0]))&&!R[m.mid])ba(ua(m,g[1],g[2]));else if(!s("ie-event-behavior")||ta)ea.push(g);else{m=m||sa;if(!m)for(a in R)if((c=w[a])&&c.node&&"interactive"===
-c.node.readyState){m=c;break}m?(F(m),ba(ua(m,g[1],g[2]))):I("error",p("ieDefineFailed",g[0]));da()}};Ia.amd={vendor:"dojotoolkit.org"};d(d(o,j.loaderPatch),e.loaderPatch);J("error",function(a){try{if(a instanceof Error)for(var b in a);}catch(d){}});d(o,{uid:n,cache:K,packs:Q});if(!r.define){r.define=Ia;r.require=o;k(T,function(a){G(a)});var Ja=C.deps||e.deps||j.deps,Ka=C.callback||e.callback||j.callback;o.boot=Ja||Ka?[Ja||[],Ka]:0}})(this.dojoConfig||this.djConfig||this.require||{},{async:0,hasCache:{"config-selectorEngine":"acme",
+Z?Z.call(null):o.eval(a,s("dojo-loader-eval-hint-url")?b.url:b.mid)}catch(d){I("error",p("evalModuleThrew",b))}else a===Z?Z.call(null):o.eval(a,s("dojo-loader-eval-hint-url")?b.url:b.mid);ta=0},ya=function(a){var b=a.mid,l=a.url;if(!a.executed&&!a.injected&&!(R[b]||a.url&&(a.pack&&R[a.url]===a.pack||1==R[a.url])))if(La(a),a.plugin)Ga(a);else{var g=function(){Ta(a);2!==a.injected&&(ga(a),d(a,Fa),o.trace("loader-define-nonmodule",[a.url]));da()};(Z=K[b]||K["url:"+a.url])?(o.trace("loader-inject",["cache",
+a.mid,l]),Sa(Z,a),g()):(o.trace("loader-inject",["script",a.mid,l]),sa=a,o.injectUrl(Ea(l),g,a),sa=0)}},ua=function(a,l,g){o.trace("loader-define-module",[a.mid,l]);if(2===a.injected)return I("error",p("multipleDefine",a)),a;d(a,{deps:l,def:g,cjs:{id:a.mid,uri:a.url,exports:a.result={},setExports:function(b){a.cjs.exports=b},config:function(){return a.config}}});for(var c=0;c<l.length;c++)l[c]=W(l[c],a);ga(a);if(!b(g)&&!l.length)a.result=g,ra(a);return a},Ta=function(a,b){for(var d=[],g,c;ea.length;)c=
+ea.shift(),b&&(c[0]=b.shift()),g=c[0]&&W(c[0])||a,d.push([g,c[1],c[2]]);F(a);l(d,function(a){ba(ua.apply(null,a))})},ia=0,fa=e,za=e;fa=function(){ia&&clearTimeout(ia);ia=0};za=function(){fa();o.waitms&&(ia=window.setTimeout(function(){fa();I("error",p("timeout",R))},o.waitms))};s.add("ie-event-behavior",!!q.attachEvent&&("undefined"===typeof opera||"[object Opera]"!=opera.toString()));var va=function(a,b,d,l){if(s("ie-event-behavior"))return a.attachEvent(d,l),function(){a.detachEvent(d,l)};a.addEventListener(b,
+l,!1);return function(){a.removeEventListener(b,l,!1)}},Ua=va(window,"load","onload",function(){o.pageLoaded=1;"complete"!=q.readyState&&(q.readyState="complete");Ua()}),Ha=q.getElementsByTagName("script")[0],Va=Ha.parentNode;o.injectUrl=function(a,b,d){var d=d.node=q.createElement("script"),l=va(d,"load","onreadystatechange",function(a){var a=a||window.event,d=a.target||a.srcElement;if("load"===a.type||/complete|loaded/.test(d.readyState))l(),g(),b&&b()}),g=va(d,"error","onerror",function(b){l();
+g();I("error",p("scriptError",[a,b]))});d.type="text/javascript";d.charset="utf-8";d.src=a;Va.insertBefore(d,Ha);return d};o.log=e;o.trace=e;var Ia=function(a,d,l){var c=arguments.length,e=["require","exports","module"],m=[0,a,d];1==c?m=[0,b(a)?e:[],a]:2==c&&g(a)?m=[a,b(d)?e:[],d]:3==c&&(m=[a,d,l]);o.trace("loader-define",m.slice(0,2));if((c=m[0]&&W(m[0]))&&!R[c.mid])ba(ua(c,m[1],m[2]));else if(!s("ie-event-behavior")||ta)ea.push(m);else{c=c||sa;if(!c)for(a in R)if((e=w[a])&&e.node&&"interactive"===
+e.node.readyState){c=e;break}c?(F(c),ba(ua(c,m[1],m[2]))):I("error",p("ieDefineFailed",m[0]));da()}};Ia.amd={vendor:"dojotoolkit.org"};d(d(o,k.loaderPatch),f.loaderPatch);J("error",function(a){try{if(a instanceof Error)for(var b in a);}catch(d){}});d(o,{uid:n,cache:K,packs:Q});if(!r.define){r.define=Ia;r.require=o;l(T,function(a){G(a)});var Ja=C.deps||f.deps||k.deps,Ka=C.callback||f.callback||k.callback;o.boot=Ja||Ka?[Ja||[],Ka]:0}})(this.dojoConfig||this.djConfig||this.require||{},{async:0,hasCache:{"config-selectorEngine":"acme",
"config-tlmSiblingOfDojo":1,"dojo-built":1,"dojo-loader":1,dom:1,"host-browser":1},packages:[{location:".",name:"dojo"},{location:"../dijit",name:"dijit"},{location:"../dojox",name:"dojox"},{location:"../app",name:"app"}]});
-require({cache:{"dojo/i18n":function(){define("./_base/kernel,require,./has,./_base/array,./_base/config,./_base/lang,./_base/xhr,./json,module".split(","),function(e,j,i,l,c,g,h,b,f){i.add("dojo-preload-i18n-Api",1);var h=e.i18n={},a=/(^.*(^|\/)nls)(\/|$)([^\/]*)\/?([^\/]*)/,k=function(a,b,d,k){for(var f=[d+k],b=b.split("-"),m="",c=0;c<b.length;c++)m+=(m?"-":"")+b[c],(!a||a[m])&&f.push(d+m+"/"+k);return f},d={},p=function(a,b,d){d=d?d.toLowerCase():e.locale;a=a.replace(/\./g,"/");b=b.replace(/\./g,
-"/");return/root/i.test(d)?a+"/nls/"+b:a+"/nls/"+d+"/"+b};e.getL10nName=function(a,b,d){return f.id+"!"+p(a,b,d)};var m=function(a,b,f,m,c,p){a([b],function(h){var e=g.clone(h.root),o=k(!h._v1x&&h,c,f,m);a(o,function(){for(var a=1;a<o.length;a++)e=g.mixin(g.clone(e),arguments[a]);d[b+"/"+c]=e;p()})})},n=function(a){var b=c.extraLocale||[],b=g.isArray(b)?b:[b];b.push(a);return b},o=function(k,f,c){if(i("dojo-preload-i18n-Api")){var p=k.split("*"),h="preload"==p[1];h&&(d[k]||(d[k]=1,u(p[2],b.parse(p[3]),
-1,f)),c(1));if(!(p=h))v&&s.push([k,f,c]),p=v;if(p)return}var k=a.exec(k),o=k[1]+"/",r=k[5]||k[4],q=o+r,p=(k=k[5]&&k[4])||e.locale,j=q+"/"+p,k=k?[p]:n(p),z=k.length,y=function(){--z||c(g.delegate(d[j]))};l.forEach(k,function(a){var b=q+"/"+a;i("dojo-preload-i18n-Api")&&t(b);d[b]?y():m(f,q,o,r,a,y)})};if(i("dojo-unit-tests"))var r=h.unitTests=[];i("dojo-preload-i18n-Api");var q=h.normalizeLocale=function(a){a=a?a.toLowerCase():e.locale;return"root"==a?"ROOT":a},v=0,s=[],u=h._preloadLocalizations=function(a,
-b,k,f){function m(a,b){f([a],b)}function c(a,b){for(var d=a.split("-");d.length;){if(b(d.join("-")))return;d.pop()}b("ROOT")}function g(k){k=q(k);c(k,function(k){if(0<=l.indexOf(b,k)){var f=a.replace(/\./g,"/")+"_"+k;v++;m(f,function(a){for(var b in a)d[j.toAbsMid(b)+"/"+k]=a[b];for(--v;!v&&s.length;)o.apply(null,s.shift())});return!0}return!1})}f=f||j;g();l.forEach(e.config.extraLocale,g)},t=function(){},y={},z=new Function("__bundle","__checkForLegacyModules","__mid","__amdValue","var define = function(mid, factory){define.called = 1; __amdValue.result = factory || mid;},\t require = function(){define.called = 1;};try{define.called = 0;eval(__bundle);if(define.called==1)return __amdValue;if((__checkForLegacyModules = __checkForLegacyModules(__mid)))return __checkForLegacyModules;}catch(e){}try{return eval('('+__bundle+')');}catch(e){return e;}"),
-t=function(a){for(var b,k=a.split("/"),f=e.global[k[0]],m=1;f&&m<k.length-1;f=f[k[m++]]);f&&((b=f[k[m]])||(b=f[k[m].replace(/-/g,"_")]),b&&(d[a]=b));return b};h.getLocalization=function(a,b,d){var k,a=p(a,b,d);o(a,j,function(a){k=a});return k};i("dojo-unit-tests")&&r.push(function(a){a.register("tests.i18n.unit",function(a){var b;b=z("{prop:1}",t,"nonsense",y);a.is({prop:1},b);a.is(void 0,b[1]);b=z("({prop:1})",t,"nonsense",y);a.is({prop:1},b);a.is(void 0,b[1]);b=z("{'prop-x':1}",t,"nonsense",y);
-a.is({"prop-x":1},b);a.is(void 0,b[1]);b=z("({'prop-x':1})",t,"nonsense",y);a.is({"prop-x":1},b);a.is(void 0,b[1]);b=z("define({'prop-x':1})",t,"nonsense",y);a.is(y,b);a.is({"prop-x":1},y.result);b=z("define('some/module', {'prop-x':1})",t,"nonsense",y);a.is(y,b);a.is({"prop-x":1},y.result);b=z("this is total nonsense and should throw an error",t,"nonsense",y);a.is(b instanceof Error,!0)})});return g.mixin(h,{dynamic:!0,normalize:function(a,b){return/^\./.test(a)?b(a):a},load:o,cache:d})})},"dojo/_base/kernel":function(){define(["../has",
-"./config","require","module"],function(e,j,i,l){var c,g={},h={},b={config:j,global:this,dijit:g,dojox:h},g={dojo:["dojo",b],dijit:["dijit",g],dojox:["dojox",h]},l=i.map&&i.map[l.id.match(/[^\/]+/)[0]];for(c in l)g[c]?g[c][0]=l[c]:g[c]=[l[c],{}];for(c in g)l=g[c],l[1]._scopeName=l[0],j.noGlobals||(this[l[0]]=l[1]);b.scopeMap=g;b.baseUrl=b.config.baseUrl=i.baseUrl;b.isAsync=i.async;b.locale=j.locale;l="$Rev: 29801 $".match(/\d+/);b.version={major:1,minor:8,patch:1,flag:"",revision:l?+l[0]:NaN,toString:function(){var a=
-b.version;return a.major+"."+a.minor+"."+a.patch+a.flag+" ("+a.revision+")"}};Function("d","d.eval = function(){return d.global.eval ? d.global.eval(arguments[0]) : eval(arguments[0]);}")(b);b.exit=function(){};"undefined"!=typeof console||(console={});for(var g="assert,count,debug,dir,dirxml,error,group,groupEnd,info,profile,profileEnd,time,timeEnd,trace,warn,log".split(","),f,l=0;f=g[l++];)console[f]||function(){var a=f+"";console[a]="log"in console?function(){var b=Array.apply({},arguments);b.unshift(a+
-":");console.log(b.join(" "))}:function(){};console[a]._fake=!0}();e.add("dojo-debug-messages",!!j.isDebug);b.deprecated=b.experimental=function(){};if(e("dojo-debug-messages"))b.deprecated=function(){},b.experimental=function(){};if(j.modulePaths){b.deprecated("dojo.modulePaths","use paths configuration");e={};for(c in j.modulePaths)e[c.replace(/\./g,"/")]=j.modulePaths[c];i({paths:e})}b.moduleUrl=function(a,k){b.deprecated("dojo.moduleUrl()","use require.toUrl","2.0");var d=null;a&&(d=i.toUrl(a.replace(/\./g,
-"/")+(k?"/"+k:"")+"/*.*").replace(/\/\*\.\*/,"")+(k?"":"/"));return d};b._hasResource={};return b})},"dojo/has":function(){define(["require","module"],function(e){var j=e.has||function(){};j.add("dom-addeventlistener",!!document.addEventListener);j.add("touch","ontouchstart"in document);j.add("device-width",screen.availWidth||innerWidth);e=document.createElement("form");j.add("dom-attributes-explicit",0==e.attributes.length);j.add("dom-attributes-specified-flag",0<e.attributes.length&&40>e.attributes.length);
-j.clearElement=function(e){e.innerHTML="";return e};j.normalize=function(e,l){var c=e.match(/[\?:]|[^:\?]*/g),g=0,h=function(b){var f=c[g++];if(":"==f)return 0;if("?"==c[g++]){if(!b&&j(f))return h();h(!0);return h(b)}return f||0};return(e=h())&&l(e)};j.load=function(e,l,c){e?l([e],c):c()};return j})},"dojo/_base/config":function(){define(["../has","require"],function(e,j){var i={},l=j.rawConfig,c;for(c in l)i[c]=l[c];return i})},"dojo/_base/array":function(){define(["./kernel","../has","./lang"],
-function(e,j,i){function l(a){return h[a]=new Function("item","index","array",a)}function c(a){var b=!a;return function(d,f,m){var c=0,g=d&&d.length||0,e;g&&"string"==typeof d&&(d=d.split(""));"string"==typeof f&&(f=h[f]||l(f));if(m)for(;c<g;++c){if(e=!f.call(m,d[c],c,d),a^e)return!e}else for(;c<g;++c)if(e=!f(d[c],c,d),a^e)return!e;return b}}function g(a){var k=1,d=0,c=0;a||(k=d=c=-1);return function(m,g,e,h){if(h&&0<k)return f.lastIndexOf(m,g,e);var h=m&&m.length||0,l=a?h+c:d;e===b?e=a?d:h+c:0>e?
-(e=h+e,0>e&&(e=d)):e=e>=h?h+c:e;for(h&&"string"==typeof m&&(m=m.split(""));e!=l;e+=k)if(m[e]==g)return e;return-1}}var h={},b,f={every:c(!1),some:c(!0),indexOf:g(!0),lastIndexOf:g(!1),forEach:function(a,b,d){var f=0,m=a&&a.length||0;m&&"string"==typeof a&&(a=a.split(""));"string"==typeof b&&(b=h[b]||l(b));if(d)for(;f<m;++f)b.call(d,a[f],f,a);else for(;f<m;++f)b(a[f],f,a)},map:function(a,b,d,f){var m=0,c=a&&a.length||0,f=new (f||Array)(c);c&&"string"==typeof a&&(a=a.split(""));"string"==typeof b&&
-(b=h[b]||l(b));if(d)for(;m<c;++m)f[m]=b.call(d,a[m],m,a);else for(;m<c;++m)f[m]=b(a[m],m,a);return f},filter:function(a,b,d){var f=0,m=a&&a.length||0,c=[],g;m&&"string"==typeof a&&(a=a.split(""));"string"==typeof b&&(b=h[b]||l(b));if(d)for(;f<m;++f)g=a[f],b.call(d,g,f,a)&&c.push(g);else for(;f<m;++f)g=a[f],b(g,f,a)&&c.push(g);return c},clearCache:function(){h={}}};i.mixin(e,f);return f})},"dojo/_base/lang":function(){define(["./kernel","../has","../sniff"],function(e,j){j.add("bug-for-in-skips-shadowed",
-function(){for(var a in{toString:1})return 0;return 1});var i=j("bug-for-in-skips-shadowed")?"hasOwnProperty.valueOf.isPrototypeOf.propertyIsEnumerable.toLocaleString.toString.constructor".split("."):[],l=i.length,c=function(a,b,d){var f,m=0,c=e.global;if(!d)if(a.length){f=a[m++];try{d=e.scopeMap[f]&&e.scopeMap[f][1]}catch(g){}d=d||(f in c?c[f]:b?c[f]={}:void 0)}else return c;for(;d&&(f=a[m++]);)d=f in d?d[f]:b?d[f]={}:void 0;return d},g=Object.prototype.toString,h=function(a,b,d){return(d||[]).concat(Array.prototype.slice.call(a,
-b||0))},b=/\{([^\}]+)\}/g,f={_extraNames:i,_mixin:function(a,b,d){var f,m,c,g={};for(f in b)if(m=b[f],!(f in a)||a[f]!==m&&(!(f in g)||g[f]!==m))a[f]=d?d(m):m;if(j("bug-for-in-skips-shadowed")&&b)for(c=0;c<l;++c)if(f=i[c],m=b[f],!(f in a)||a[f]!==m&&(!(f in g)||g[f]!==m))a[f]=d?d(m):m;return a},mixin:function(a,b){a||(a={});for(var d=1,c=arguments.length;d<c;d++)f._mixin(a,arguments[d]);return a},setObject:function(a,b,d){var f=a.split("."),a=f.pop();return(d=c(f,!0,d))&&a?d[a]=b:void 0},getObject:function(a,
-b,d){return c(a.split("."),b,d)},exists:function(a,b){return void 0!==f.getObject(a,!1,b)},isString:function(a){return"string"==typeof a||a instanceof String},isArray:function(a){return a&&(a instanceof Array||"array"==typeof a)},isFunction:function(a){return"[object Function]"===g.call(a)},isObject:function(a){return void 0!==a&&(null===a||"object"==typeof a||f.isArray(a)||f.isFunction(a))},isArrayLike:function(a){return a&&void 0!==a&&!f.isString(a)&&!f.isFunction(a)&&!(a.tagName&&"form"==a.tagName.toLowerCase())&&
-(f.isArray(a)||isFinite(a.length))},isAlien:function(a){return a&&!f.isFunction(a)&&/\{\s*\[native code\]\s*\}/.test(""+a)},extend:function(a,b){for(var d=1,c=arguments.length;d<c;d++)f._mixin(a.prototype,arguments[d]);return a},_hitchArgs:function(a,b){var d=f._toArray(arguments,2),c=f.isString(b);return function(){var m=f._toArray(arguments),g=c?(a||e.global)[b]:b;return g&&g.apply(a||this,d.concat(m))}},hitch:function(a,b){if(2<arguments.length)return f._hitchArgs.apply(e,arguments);b||(b=a,a=
-null);if(f.isString(b)){a=a||e.global;if(!a[b])throw['lang.hitch: scope["',b,'"] is null (scope="',a,'")'].join("");return function(){return a[b].apply(a,arguments||[])}}return!a?b:function(){return b.apply(a,arguments||[])}},delegate:function(){function a(){}return function(b,d){a.prototype=b;var c=new a;a.prototype=null;d&&f._mixin(c,d);return c}}(),_toArray:j("ie")?function(){function a(a,b,f){f=f||[];for(b=b||0;b<a.length;b++)f.push(a[b]);return f}return function(b){return(b.item?a:h).apply(this,
-arguments)}}():h,partial:function(a){return f.hitch.apply(e,[null].concat(f._toArray(arguments)))},clone:function(a){if(!a||"object"!=typeof a||f.isFunction(a))return a;if(a.nodeType&&"cloneNode"in a)return a.cloneNode(!0);if(a instanceof Date)return new Date(a.getTime());if(a instanceof RegExp)return RegExp(a);var b,d,c;if(f.isArray(a)){b=[];for(d=0,c=a.length;d<c;++d)d in a&&b.push(f.clone(a[d]))}else b=a.constructor?new a.constructor:{};return f._mixin(b,a,f.clone)},trim:String.prototype.trim?
-function(a){return a.trim()}:function(a){return a.replace(/^\s\s*/,"").replace(/\s\s*$/,"")},replace:function(a,k,d){return a.replace(d||b,f.isFunction(k)?k:function(a,b){return f.getObject(b,!1,k)})}};f.mixin(e,f);return f})},"dojo/sniff":function(){define(["./has"],function(e){var j=navigator,i=j.userAgent,j=j.appVersion,l=parseFloat(j);e.add("air",0<=i.indexOf("AdobeAIR"));e.add("khtml",0<=j.indexOf("Konqueror")?l:void 0);e.add("webkit",parseFloat(i.split("WebKit/")[1])||void 0);e.add("chrome",
-parseFloat(i.split("Chrome/")[1])||void 0);e.add("safari",0<=j.indexOf("Safari")&&!e("chrome")?parseFloat(j.split("Version/")[1]):void 0);e.add("mac",0<=j.indexOf("Macintosh"));e.add("quirks","BackCompat"==document.compatMode);e.add("ios",/iPhone|iPod|iPad/.test(i));e.add("android",parseFloat(i.split("Android ")[1])||void 0);if(!e("webkit")){0<=i.indexOf("Opera")&&e.add("opera",9.8<=l?parseFloat(i.split("Version/")[1])||l:l);0<=i.indexOf("Gecko")&&!e("khtml")&&!e("webkit")&&e.add("mozilla",l);e("mozilla")&&
-e.add("ff",parseFloat(i.split("Firefox/")[1]||i.split("Minefield/")[1])||void 0);if(document.all&&!e("opera"))i=parseFloat(j.split("MSIE ")[1])||void 0,(j=document.documentMode)&&5!=j&&Math.floor(i)!=j&&(i=j),e.add("ie",i);e.add("wii","undefined"!=typeof opera&&opera.wiiremote)}return e})},"dojo/_base/xhr":function(){define("./kernel,./sniff,require,../io-query,../dom,../dom-form,./Deferred,./config,./json,./lang,./array,../on,../aspect,../request/watch,../request/xhr,../request/util".split(","),
-function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o){e._xhrObj=n._create;var r=e.config;e.objectToQuery=l.objectToQuery;e.queryToObject=l.queryToObject;e.fieldToObject=g.fieldToObject;e.formToObject=g.toObject;e.formToQuery=g.toQuery;e.formToJson=g.toJson;e._blockAsync=!1;var q=e._contentHandlers=e.contentHandlers={text:function(a){return a.responseText},json:function(a){return f.fromJson(a.responseText||null)},"json-comment-filtered":function(a){var a=a.responseText,b=a.indexOf("/*"),d=a.lastIndexOf("*/");
-if(-1==b||-1==d)throw Error("JSON was not comment filtered");return f.fromJson(a.substring(b+2,d))},javascript:function(a){return e.eval(a.responseText)},xml:function(a){var b=a.responseXML;if(j("ie")&&(!b||!b.documentElement)){var d=function(a){return"MSXML"+a+".DOMDocument"},d=["Microsoft.XMLDOM",d(6),d(4),d(3),d(2)];k.some(d,function(d){try{var f=new ActiveXObject(d);f.async=!1;f.loadXML(a.responseText);b=f}catch(k){return!1}return!0})}return b},"json-comment-optional":function(a){return a.responseText&&
-/^[^{\[]*\/\*/.test(a.responseText)?q["json-comment-filtered"](a):q.json(a)}};e._ioSetArgs=function(b,d,f,k){var m={args:b,url:b.url},p=null;if(b.form){var p=c.byId(b.form),o=p.getAttributeNode("action");m.url=m.url||(o?o.value:null);p=g.toObject(p)}o=[{}];p&&o.push(p);b.content&&o.push(b.content);b.preventCache&&o.push({"dojo.preventCache":(new Date).valueOf()});m.query=l.objectToQuery(a.mixin.apply(null,o));m.handleAs=b.handleAs||"text";var n=new h(function(a){a.canceled=!0;d&&d(a);var b=a.ioArgs.error;
-if(!b)b=Error("request cancelled"),b.dojoType="cancel",a.ioArgs.error=b;return b});n.addCallback(f);var i=b.load;i&&a.isFunction(i)&&n.addCallback(function(a){return i.call(b,a,m)});var u=b.error;u&&a.isFunction(u)&&n.addErrback(function(a){return u.call(b,a,m)});var q=b.handle;q&&a.isFunction(q)&&n.addBoth(function(a){return q.call(b,a,m)});n.addErrback(function(a){return k(a,n)});r.ioPublish&&e.publish&&!1!==m.args.ioPublish&&(n.addCallbacks(function(a){e.publish("/dojo/io/load",[n,a]);return a},
-function(a){e.publish("/dojo/io/error",[n,a]);return a}),n.addBoth(function(a){e.publish("/dojo/io/done",[n,a]);return a}));n.ioArgs=m;return n};var v=function(a){a=q[a.ioArgs.handleAs](a.ioArgs.xhr);return void 0===a?null:a},s=function(a){return a},u=function(a){0>=t&&(t=0,r.ioPublish&&e.publish&&(!a||a&&!1!==a.ioArgs.args.ioPublish)&&e.publish("/dojo/io/stop"))},t=0;p.after(m,"_onAction",function(){t-=1});p.after(m,"_onInFlight",u);e._ioCancelAll=m.cancelAll;e._ioNotifyStart=function(a){r.ioPublish&&
-e.publish&&!1!==a.ioArgs.args.ioPublish&&(t||e.publish("/dojo/io/start"),t+=1,e.publish("/dojo/io/send",[a]))};e._ioWatch=function(b,d,f,k){b.ioArgs.options=b.ioArgs.args;a.mixin(b,{response:b.ioArgs,isValid:function(){return d(b)},isReady:function(){return f(b)},handleResponse:function(){return k(b)}});m(b);u(b)};e._ioAddQueryToUrl=function(a){if(a.query.length)a.url+=(-1==a.url.indexOf("?")?"?":"&")+a.query,a.query=null};e.xhr=function(a,b,d){var f,k=e._ioSetArgs(b,function(){f&&f.cancel()},v,s),
-m=k.ioArgs;"postData"in b?m.query=b.postData:"putData"in b?m.query=b.putData:"rawBody"in b?m.query=b.rawBody:(2<arguments.length&&!d||-1==="POST|PUT".indexOf(a.toUpperCase()))&&e._ioAddQueryToUrl(m);var c={method:a,handleAs:"text",timeout:b.timeout,withCredentials:b.withCredentials,ioArgs:m};if("undefined"!==typeof b.headers)c.headers=b.headers;if("undefined"!==typeof b.contentType){if(!c.headers)c.headers={};c.headers["Content-Type"]=b.contentType}if("undefined"!==typeof m.query)c.data=m.query;if("undefined"!==
-typeof b.sync)c.sync=b.sync;e._ioNotifyStart(k);try{f=n(m.url,c,!0)}catch(g){return k.cancel(),k}k.ioArgs.xhr=f.response.xhr;f.then(function(){k.resolve(k)}).otherwise(function(a){m.error=a;if(a.response)a.status=a.response.status,a.responseText=a.response.text,a.xhr=a.response.xhr;k.reject(a)});return k};e.xhrGet=function(a){return e.xhr("GET",a)};e.rawXhrPost=e.xhrPost=function(a){return e.xhr("POST",a,!0)};e.rawXhrPut=e.xhrPut=function(a){return e.xhr("PUT",a,!0)};e.xhrDelete=function(a){return e.xhr("DELETE",
-a)};e._isDocumentOk=function(a){return o.checkStatus(a.status)};e._getText=function(a){var b;e.xhrGet({url:a,sync:!0,load:function(a){b=a}});return b};a.mixin(e.xhr,{_xhrObj:e._xhrObj,fieldToObject:g.fieldToObject,formToObject:g.toObject,objectToQuery:l.objectToQuery,formToQuery:g.toQuery,formToJson:g.toJson,queryToObject:l.queryToObject,contentHandlers:q,_ioSetArgs:e._ioSetArgs,_ioCancelAll:e._ioCancelAll,_ioNotifyStart:e._ioNotifyStart,_ioWatch:e._ioWatch,_ioAddQueryToUrl:e._ioAddQueryToUrl,_isDocumentOk:e._isDocumentOk,
-_getText:e._getText,get:e.xhrGet,post:e.xhrPost,put:e.xhrPut,del:e.xhrDelete});return e.xhr})},"dojo/_base/sniff":function(){define(["./kernel","./lang","../sniff"],function(e,j,i){e._name="browser";j.mixin(e,{isBrowser:!0,isFF:i("ff"),isIE:i("ie"),isKhtml:i("khtml"),isWebKit:i("webkit"),isMozilla:i("mozilla"),isMoz:i("mozilla"),isOpera:i("opera"),isSafari:i("safari"),isChrome:i("chrome"),isMac:i("mac"),isIos:i("ios"),isAndroid:i("android"),isWii:i("wii"),isQuirks:i("quirks"),isAir:i("air")});e.locale=
-e.locale||(i("ie")?navigator.userLanguage:navigator.language).toLowerCase();return i})},"dojo/io-query":function(){define(["./_base/lang"],function(e){var j={};return{objectToQuery:function(i){var l=encodeURIComponent,c=[],g;for(g in i){var h=i[g];if(h!=j[g]){var b=l(g)+"=";if(e.isArray(h))for(var f=0,a=h.length;f<a;++f)c.push(b+l(h[f]));else c.push(b+l(h))}}return c.join("&")},queryToObject:function(i){for(var l=decodeURIComponent,i=i.split("&"),c={},g,h,b=0,f=i.length;b<f;++b)if(h=i[b],h.length){var a=
-h.indexOf("=");0>a?(g=l(h),h=""):(g=l(h.slice(0,a)),h=l(h.slice(a+1)));"string"==typeof c[g]&&(c[g]=[c[g]]);e.isArray(c[g])?c[g].push(h):c[g]=h}return c}}})},"dojo/dom":function(){define(["./sniff","./_base/lang","./_base/window"],function(e,j,i){if(7>=e("ie"))try{document.execCommand("BackgroundImageCache",!1,!0)}catch(l){}var c={};c.byId=e("ie")?function(c,e){if("string"!=typeof c)return c;var b=e||i.doc,f=c&&b.getElementById(c);if(f&&(f.attributes.id.value==c||f.id==c))return f;b=b.all[c];if(!b||
-b.nodeName)b=[b];for(var a=0;f=b[a++];)if(f.attributes&&f.attributes.id&&f.attributes.id.value==c||f.id==c)return f}:function(c,e){return("string"==typeof c?(e||i.doc).getElementById(c):c)||null};c.isDescendant=function(g,e){try{g=c.byId(g);for(e=c.byId(e);g;){if(g==e)return!0;g=g.parentNode}}catch(b){}return!1};c.setSelectable=function(g,h){g=c.byId(g);if(e("mozilla"))g.style.MozUserSelect=h?"":"none";else if(e("khtml")||e("webkit"))g.style.KhtmlUserSelect=h?"auto":"none";else if(e("ie"))for(var b=
-g.unselectable=h?"":"on",f=g.getElementsByTagName("*"),a=0,k=f.length;a<k;++a)f.item(a).unselectable=b};return c})},"dojo/_base/window":function(){define(["./kernel","./lang","../sniff"],function(e,j,i){var l={global:e.global,doc:this.document||null,body:function(c){c=c||e.doc;return c.body||c.getElementsByTagName("body")[0]},setContext:function(c,g){e.global=l.global=c;e.doc=l.doc=g},withGlobal:function(c,g,h,b){var f=e.global;try{return e.global=l.global=c,l.withDoc.call(null,c.document,g,h,b)}finally{e.global=
-l.global=f}},withDoc:function(c,g,h,b){var f=l.doc,a=i("quirks"),k=i("ie"),d,p,m;try{e.doc=l.doc=c;e.isQuirks=i.add("quirks","BackCompat"==e.doc.compatMode,!0,!0);if(i("ie")&&(m=c.parentWindow)&&m.navigator)d=parseFloat(m.navigator.appVersion.split("MSIE ")[1])||void 0,(p=c.documentMode)&&5!=p&&Math.floor(d)!=p&&(d=p),e.isIE=i.add("ie",d,!0,!0);h&&"string"==typeof g&&(g=h[g]);return g.apply(h,b||[])}finally{e.doc=l.doc=f,e.isQuirks=i.add("quirks",a,!0,!0),e.isIE=i.add("ie",k,!0,!0)}}};j.mixin(e,l);
-return l})},"dojo/dom-form":function(){define(["./_base/lang","./dom","./io-query","./json"],function(e,j,i,l){var c={fieldToObject:function(c){var e=null;if(c=j.byId(c)){var b=c.name,f=(c.type||"").toLowerCase();if(b&&f&&!c.disabled)if("radio"==f||"checkbox"==f){if(c.checked)e=c.value}else if(c.multiple){e=[];for(c=[c.firstChild];c.length;)for(b=c.pop();b;b=b.nextSibling)if(1==b.nodeType&&"option"==b.tagName.toLowerCase())b.selected&&e.push(b.value);else{b.nextSibling&&c.push(b.nextSibling);b.firstChild&&
-c.push(b.firstChild);break}}else e=c.value}return e},toObject:function(g){for(var h={},g=j.byId(g).elements,b=0,f=g.length;b<f;++b){var a=g[b],k=a.name,d=(a.type||"").toLowerCase();if(k&&d&&0>"file|submit|image|reset|button".indexOf(d)&&!a.disabled){var p=h,m=k,a=c.fieldToObject(a);if(null!==a){var n=p[m];"string"==typeof n?p[m]=[n,a]:e.isArray(n)?n.push(a):p[m]=a}if("image"==d)h[k+".x"]=h[k+".y"]=h[k].x=h[k].y=0}}return h},toQuery:function(g){return i.objectToQuery(c.toObject(g))},toJson:function(g,
-e){return l.stringify(c.toObject(g),null,e?4:0)}};return c})},"dojo/json":function(){define(["./has"],function(e){var j="undefined"!=typeof JSON;e.add("json-parse",j);e.add("json-stringify",j&&'{"a":1}'==JSON.stringify({a:0},function(e,c){return c||1}));if(e("json-stringify"))return JSON;var i=function(e){return('"'+e.replace(/(["\\])/g,"\\$1")+'"').replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r")};return{parse:e("json-parse")?JSON.parse:
-function(e,c){if(c&&!/^([\s\[\{]*(?:"(?:\\.|[^"])+"|-?\d[\d\.]*(?:[Ee][+-]?\d+)?|null|true|false|)[\s\]\}]*(?:,|:|$))+$/.test(e))throw new SyntaxError("Invalid characters in JSON");return eval("("+e+")")},stringify:function(e,c,g){function h(f,a,k){c&&(f=c(k,f));var d;d=typeof f;if("number"==d)return isFinite(f)?f+"":"null";if("boolean"==d)return f+"";if(null===f)return"null";if("string"==typeof f)return i(f);if("function"==d||"undefined"==d)return b;if("function"==typeof f.toJSON)return h(f.toJSON(k),
-a,k);if(f instanceof Date)return'"{FullYear}-{Month+}-{Date}T{Hours}:{Minutes}:{Seconds}Z"'.replace(/\{(\w+)(\+)?\}/g,function(a,b,d){a=f["getUTC"+b]()+(d?1:0);return 10>a?"0"+a:a});if(f.valueOf()!==f)return h(f.valueOf(),a,k);var e=g?a+g:"",m=g?" ":"",n=g?"\n":"";if(f instanceof Array){for(var m=f.length,o=[],k=0;k<m;k++)d=h(f[k],e,k),"string"!=typeof d&&(d="null"),o.push(n+e+d);return"["+o.join(",")+n+a+"]"}o=[];for(k in f){var l;if(f.hasOwnProperty(k)){if("number"==typeof k)l='"'+k+'"';else if("string"==
-typeof k)l=i(k);else continue;d=h(f[k],e,k);"string"==typeof d&&o.push(n+e+l+":"+m+d)}}return"{"+o.join(",")+n+a+"}"}var b;"string"==typeof c&&(g=c,c=null);return h(e,"","")}}})},"dojo/_base/Deferred":function(){define("./kernel,../Deferred,../promise/Promise,../errors/CancelError,../has,./lang,../when".split(","),function(e,j,i,l,c,g,h){var b=function(){},f=Object.freeze||function(){},a=e.Deferred=function(k){function d(a){if(h)throw Error("This deferred has already been resolved");m=a;h=!0;e()}
-function e(){for(var a;!a&&q;){var d=q;q=q.next;if(a=d.progress==b)h=!1;var f=o?d.error:d.resolved;c("config-useDeferredInstrumentation")&&o&&j.instrumentRejected&&j.instrumentRejected(m,!!f);if(f)try{var k=f(m);k&&"function"===typeof k.then?k.then(g.hitch(d.deferred,"resolve"),g.hitch(d.deferred,"reject"),g.hitch(d.deferred,"progress")):(f=a&&void 0===k,a&&!f&&(o=k instanceof Error),d.deferred[f&&o?"reject":"resolve"](f?m:k))}catch(p){d.deferred.reject(p)}else o?d.deferred.reject(m):d.deferred.resolve(m)}}
-var m,h,o,r,q,v=this.promise=new i;this.resolve=this.callback=function(a){this.fired=0;this.results=[a,null];d(a)};this.reject=this.errback=function(a){o=!0;this.fired=1;c("config-useDeferredInstrumentation")&&j.instrumentRejected&&j.instrumentRejected(a,!!q);d(a);this.results=[null,a]};this.progress=function(a){for(var b=q;b;){var d=b.progress;d&&d(a);b=b.next}};this.addCallbacks=function(a,d){this.then(a,d,b);return this};v.then=this.then=function(d,f,k){var c=k==b?this:new a(v.cancel),d={resolved:d,
-error:f,progress:k,deferred:c};q?r=r.next=d:q=r=d;h&&e();return c.promise};var s=this;v.cancel=this.cancel=function(){if(!h){var a=k&&k(s);if(!h)a instanceof Error||(a=new l(a)),a.log=!1,s.reject(a)}};f(v)};g.extend(a,{addCallback:function(a){return this.addCallbacks(g.hitch.apply(e,arguments))},addErrback:function(a){return this.addCallbacks(null,g.hitch.apply(e,arguments))},addBoth:function(a){var b=g.hitch.apply(e,arguments);return this.addCallbacks(b,b)},fired:-1});a.when=e.when=h;return a})},
-"dojo/Deferred":function(){define("dojo/Deferred",["./has","./_base/lang","./errors/CancelError","./promise/Promise","./promise/instrumentation"],function(e,j,i,l,c){var g=Object.freeze||function(){},h=function(a,f,c,g,e){2===f&&k.instrumentRejected&&0===a.length&&k.instrumentRejected(c,!1,g,e);for(e=0;e<a.length;e++)b(a[e],f,c,g)},b=function(b,c,m,g){var e=b[c],h=b.deferred;if(e)try{var l=e(m);if(0===c)"undefined"!==typeof l&&a(h,c,l);else{if(l&&"function"===typeof l.then){b.cancel=l.cancel;l.then(f(h,
-1),f(h,2),f(h,0));return}a(h,1,l)}}catch(i){a(h,2,i)}else a(h,c,m);2===c&&k.instrumentRejected&&k.instrumentRejected(m,!!e,g,h.promise)},f=function(b,f){return function(k){a(b,f,k)}},a=function(a,b,f){if(!a.isCanceled())switch(b){case 0:a.progress(f);break;case 1:a.resolve(f);break;case 2:a.reject(f)}},k=function(a){var f=this.promise=new l,c=this,e,o,r,q=!1,j=[];Error.captureStackTrace&&(Error.captureStackTrace(c,k),Error.captureStackTrace(f,k));this.isResolved=f.isResolved=function(){return 1===
-e};this.isRejected=f.isRejected=function(){return 2===e};this.isFulfilled=f.isFulfilled=function(){return!!e};this.isCanceled=f.isCanceled=function(){return q};this.progress=function(a,b){if(e){if(!0===b)throw Error("This deferred has already been fulfilled.");return f}h(j,0,a,null,c);return f};this.resolve=function(a,b){if(e){if(!0===b)throw Error("This deferred has already been fulfilled.");return f}h(j,e=1,o=a,null,c);j=null;return f};var s=this.reject=function(a,b){if(e){if(!0===b)throw Error("This deferred has already been fulfilled.");
-return f}Error.captureStackTrace&&Error.captureStackTrace(r={},s);h(j,e=2,o=a,r,c);j=null;return f};this.then=f.then=function(a,d,c){var m=[c,a,d];m.cancel=f.cancel;m.deferred=new k(function(a){return m.cancel&&m.cancel(a)});e&&!j?b(m,e,o,r):j.push(m);return m.deferred.promise};this.cancel=f.cancel=function(b,f){if(e){if(!0===f)throw Error("This deferred has already been fulfilled.");}else{if(a)var k=a(b),b="undefined"===typeof k?b:k;q=!0;if(e){if(2===e&&o===b)return b}else return"undefined"===typeof b&&
-(b=new i),s(b),b}};g(f)};k.prototype.toString=function(){return"[object Deferred]"};c&&c(k);return k})},"dojo/errors/CancelError":function(){define(["./create"],function(e){return e("CancelError",null,null,{dojoType:"cancel"})})},"dojo/errors/create":function(){define(["../_base/lang"],function(e){return function(j,i,l,c){var l=l||Error,g=function(c){if(l===Error){Error.captureStackTrace&&Error.captureStackTrace(this,g);var b=Error.call(this,c),f;for(f in b)b.hasOwnProperty(f)&&(this[f]=b[f]);this.message=
-c;this.stack=b.stack}else l.apply(this,arguments);i&&i.apply(this,arguments)};g.prototype=e.delegate(l.prototype,c);g.prototype.name=j;return g.prototype.constructor=g}})},"dojo/promise/Promise":function(){define(["../_base/lang"],function(e){function j(){throw new TypeError("abstract");}return e.extend(function(){},{then:function(){j()},cancel:function(){j()},isResolved:function(){j()},isRejected:function(){j()},isFulfilled:function(){j()},isCanceled:function(){j()},always:function(e){return this.then(e,
-e)},otherwise:function(e){return this.then(null,e)},trace:function(){return this},traceRejected:function(){return this},toString:function(){return"[object Promise]"}})})},"dojo/promise/instrumentation":function(){define(["./tracer","../has","../_base/lang","../_base/array"],function(e,j,i,l){function c(a,b){b&&b.stack&&b.stack.split("\n").slice(1).join("\n").replace(/^\s+/," ")}function g(a,b,f,k){b||c(a,f,k)}function h(d,c,m,g){c?l.some(f,function(a,b){if(a.error===d)return f.splice(b,1),!0}):l.some(f,
-function(a){return a.error===d})||f.push({error:d,rejection:m,deferred:g,timestamp:(new Date).getTime()});a||(a=setTimeout(b,k))}function b(){var d=(new Date).getTime(),g=d-k;f=l.filter(f,function(a){return a.timestamp<g?(c(a.error,a.rejection,a.deferred),!1):!0});f.length&&(a=setTimeout(b,f[0].timestamp+k-d))}var f=[],a=!1,k=1E3;return function(a){var b=j("config-useDeferredInstrumentation");if(b){e.on("resolved",i.hitch(console,"log","resolved"));e.on("rejected",i.hitch(console,"log","rejected"));
-e.on("progress",i.hitch(console,"log","progress"));var f=[];"string"===typeof b&&(f=b.split(","),b=f.shift());if("report-rejections"===b)a.instrumentRejected=g;else if("report-unhandled-rejections"===b||!0===b||1===b)a.instrumentRejected=h,k=parseInt(f[0],10)||k;else throw Error("Unsupported instrumentation usage <"+b+">");}}})},"dojo/promise/tracer":function(){define(["../_base/lang","./Promise","../Evented"],function(e,j,i){function l(e){setTimeout(function(){g.apply(c,e)},0)}var c=new i,g=c.emit;
-c.emit=null;j.prototype.trace=function(){var c=e._toArray(arguments);this.then(function(b){l(["resolved",b].concat(c))},function(b){l(["rejected",b].concat(c))},function(b){l(["progress",b].concat(c))});return this};j.prototype.traceRejected=function(){var c=e._toArray(arguments);this.otherwise(function(b){l(["rejected",b].concat(c))});return this};return c})},"dojo/Evented":function(){define("dojo/Evented",["./aspect","./on"],function(e,j){function i(){}var l=e.after;i.prototype={on:function(c,g){return j.parse(this,
-c,g,function(c,b){return l(c,"on"+b,g,!0)})},emit:function(c,g){var e=[this];e.push.apply(e,arguments);return j.emit.apply(j,e)}};return i})},"dojo/aspect":function(){define("dojo/aspect",[],function(){function e(b,f,a,k){var d=b[f],c="around"==f,m;if(c){var g=a(function(){return d.advice(this,arguments)});m={remove:function(){m.cancelled=!0},advice:function(a,b){return m.cancelled?d.advice(a,b):g.apply(a,b)}}}else m={remove:function(){var a=m.previous,d=m.next;if(!d&&!a)delete b[f];else if(a?a.next=
-d:b[f]=d,d)d.previous=a},id:l++,advice:a,receiveArguments:k};if(d&&!c)if("after"==f){for(a=d;a;)d=a,a=a.next;d.next=m;m.previous=d}else{if("before"==f)b[f]=m,m.next=d,d.previous=m}else b[f]=m;return m}function j(b){return function(f,a,k,d){var c=f[a],m;if(!c||c.target!=f){f[a]=m=function(){for(var a=l,b=arguments,d=m.before;d;)b=d.advice.apply(this,b)||b,d=d.next;if(m.around)var f=m.around.advice(this,b);for(d=m.after;d&&d.id<a;){if(d.receiveArguments)var k=d.advice.apply(this,b),f=k===i?f:k;else f=
-d.advice.call(this,f,b);d=d.next}return f};if(c)m.around={advice:function(a,b){return c.apply(a,b)}};m.target=f}f=e(m||c,b,k,d);k=null;return f}}var i,l=0,c=j("after"),g=j("before"),h=j("around");return{before:g,around:h,after:c}})},"dojo/on":function(){define(["./has!dom-addeventlistener?:./aspect","./_base/kernel","./has"],function(e,j,i){function l(a,k,c,g,e){if(g=k.match(/(.*):(.*)/))return k=g[2],g=g[1],b.selector(g,k).call(e,a,c);i("touch")&&(f.test(k)&&(c=y(c)),!i("event-orientationchange")&&
-"orientationchange"==k&&(k="resize",a=window,c=y(c)));m&&(c=m(c));if(a.addEventListener){var h=k in d,p=h?d[k]:k;a.addEventListener(p,c,h);return{remove:function(){a.removeEventListener(p,c,h)}}}if(q&&a.attachEvent)return q(a,"on"+k,c);throw Error("Target must be an event emitter");}function c(){this.cancelable=!1}function g(){this.bubbles=!1}var h=window.ScriptEngineMajorVersion;i.add("jscript",h&&h()+ScriptEngineMinorVersion()/10);i.add("event-orientationchange",i("touch")&&!i("android"));i.add("event-stopimmediatepropagation",
-window.Event&&!!window.Event.prototype&&!!window.Event.prototype.stopImmediatePropagation);var b=function(a,d,f,k){return"function"==typeof a.on&&"function"!=typeof d?a.on(d,f):b.parse(a,d,f,l,k,this)};b.pausable=function(a,d,f,k){var c,a=b(a,d,function(){if(!c)return f.apply(this,arguments)},k);a.pause=function(){c=!0};a.resume=function(){c=!1};return a};b.once=function(a,d,f){var k=b(a,d,function(){k.remove();return f.apply(this,arguments)});return k};b.parse=function(a,b,d,f,k,c){if(b.call)return b.call(c,
-a,d);if(-1<b.indexOf(",")){for(var b=b.split(/\s*,\s*/),m=[],g=0,e;e=b[g++];)m.push(f(a,e,d,k,c));m.remove=function(){for(var a=0;a<m.length;a++)m[a].remove()};return m}return f(a,b,d,k,c)};var f=/^touch/;b.selector=function(a,d,f){return function(k,c){function m(b){for(g=g&&g.matches?g:j.query;!g.matches(b,a,k);)if(b==k||!1===f||!(b=b.parentNode)||1!=b.nodeType)return;return b}var g="function"==typeof a?{matches:a}:this,e=d.bubble;return e?b(k,e(m),c):b(k,d,function(a){var b=m(a.target);return b&&
-c.call(b,a)})}};var a=[].slice,k=b.emit=function(b,d,f){var k=a.call(arguments,2),m="on"+d;if("parentNode"in b){var e=k[0]={},h;for(h in f)e[h]=f[h];e.preventDefault=c;e.stopPropagation=g;e.target=b;e.type=d;f=e}do b[m]&&b[m].apply(b,k);while(f&&f.bubbles&&(b=b.parentNode));return f&&f.cancelable&&f},d={};if(!i("event-stopimmediatepropagation"))var p=function(){this.modified=this.immediatelyStopped=!0},m=function(a){return function(b){if(!b.immediatelyStopped)return b.stopImmediatePropagation=p,a.apply(this,
-arguments)}};if(i("dom-addeventlistener")){d={focusin:"focus",focusout:"blur"};if(i("opera"))d.keydown="keypress";b.emit=function(a,d,f){if(a.dispatchEvent&&document.createEvent){var c=a.ownerDocument.createEvent("HTMLEvents");c.initEvent(d,!!f.bubbles,!!f.cancelable);for(var m in f)m in c||(c[m]=f[m]);return a.dispatchEvent(c)&&c}return k.apply(b,arguments)}}else{b._fixEvent=function(a,b){if(!a)a=(b&&(b.ownerDocument||b.document||b).parentWindow||window).event;if(!a)return a;n&&a.type==n.type&&(a=
+require({cache:{"dojo/i18n":function(){define("./_base/kernel,require,./has,./_base/array,./_base/config,./_base/lang,./_base/xhr,./json,module".split(","),function(f,k,h,j,e,c,i,b,g){h.add("dojo-preload-i18n-Api",1);var i=f.i18n={},a=/(^.*(^|\/)nls)(\/|$)([^\/]*)\/?([^\/]*)/,l=function(a,b,d,l){for(var g=[d+l],b=b.split("-"),c="",e=0;e<b.length;e++)c+=(c?"-":"")+b[e],(!a||a[c])&&g.push(d+c+"/"+l);return g},d={},p=function(a,b,d){d=d?d.toLowerCase():f.locale;a=a.replace(/\./g,"/");b=b.replace(/\./g,
+"/");return/root/i.test(d)?a+"/nls/"+b:a+"/nls/"+d+"/"+b};f.getL10nName=function(a,b,d){return g.id+"!"+p(a,b,d)};var m=function(a,b,g,e,m,p){a([b],function(f){var i=c.clone(f.root),o=l(!f._v1x&&f,m,g,e);a(o,function(){for(var a=1;a<o.length;a++)i=c.mixin(c.clone(i),arguments[a]);d[b+"/"+m]=i;p()})})},n=function(a){var b=e.extraLocale||[],b=c.isArray(b)?b:[b];b.push(a);return b},o=function(l,g,e){if(h("dojo-preload-i18n-Api")){var p=l.split("*"),i="preload"==p[1];i&&(d[l]||(d[l]=1,t(p[2],b.parse(p[3]),
+1,g)),e(1));if(!(p=i))v&&s.push([l,g,e]),p=v;if(p)return}var l=a.exec(l),o=l[1]+"/",r=l[5]||l[4],q=o+r,p=(l=l[5]&&l[4])||f.locale,k=q+"/"+p,l=l?[p]:n(p),z=l.length,y=function(){--z||e(c.delegate(d[k]))};j.forEach(l,function(a){var b=q+"/"+a;h("dojo-preload-i18n-Api")&&u(b);d[b]?y():m(g,q,o,r,a,y)})};if(h("dojo-unit-tests"))var r=i.unitTests=[];h("dojo-preload-i18n-Api");var q=i.normalizeLocale=function(a){a=a?a.toLowerCase():f.locale;return"root"==a?"ROOT":a},v=0,s=[],t=i._preloadLocalizations=function(a,
+b,l,g){function c(a,b){g([a],b)}function e(a,b){for(var d=a.split("-");d.length;){if(b(d.join("-")))return;d.pop()}b("ROOT")}function m(l){l=q(l);e(l,function(l){if(0<=j.indexOf(b,l)){var g=a.replace(/\./g,"/")+"_"+l;v++;c(g,function(a){for(var b in a)d[k.toAbsMid(b)+"/"+l]=a[b];for(--v;!v&&s.length;)o.apply(null,s.shift())});return!0}return!1})}g=g||k;m();j.forEach(f.config.extraLocale,m)},u=function(){},y={},z=new Function("__bundle","__checkForLegacyModules","__mid","__amdValue","var define = function(mid, factory){define.called = 1; __amdValue.result = factory || mid;},\t require = function(){define.called = 1;};try{define.called = 0;eval(__bundle);if(define.called==1)return __amdValue;if((__checkForLegacyModules = __checkForLegacyModules(__mid)))return __checkForLegacyModules;}catch(e){}try{return eval('('+__bundle+')');}catch(e){return e;}"),
+u=function(a){for(var b,l=a.split("/"),g=f.global[l[0]],c=1;g&&c<l.length-1;g=g[l[c++]]);g&&((b=g[l[c]])||(b=g[l[c].replace(/-/g,"_")]),b&&(d[a]=b));return b};i.getLocalization=function(a,b,d){var l,a=p(a,b,d);o(a,k,function(a){l=a});return l};h("dojo-unit-tests")&&r.push(function(a){a.register("tests.i18n.unit",function(a){var b;b=z("{prop:1}",u,"nonsense",y);a.is({prop:1},b);a.is(void 0,b[1]);b=z("({prop:1})",u,"nonsense",y);a.is({prop:1},b);a.is(void 0,b[1]);b=z("{'prop-x':1}",u,"nonsense",y);
+a.is({"prop-x":1},b);a.is(void 0,b[1]);b=z("({'prop-x':1})",u,"nonsense",y);a.is({"prop-x":1},b);a.is(void 0,b[1]);b=z("define({'prop-x':1})",u,"nonsense",y);a.is(y,b);a.is({"prop-x":1},y.result);b=z("define('some/module', {'prop-x':1})",u,"nonsense",y);a.is(y,b);a.is({"prop-x":1},y.result);b=z("this is total nonsense and should throw an error",u,"nonsense",y);a.is(b instanceof Error,!0)})});return c.mixin(i,{dynamic:!0,normalize:function(a,b){return/^\./.test(a)?b(a):a},load:o,cache:d})})},"dojo/_base/kernel":function(){define(["../has",
+"./config","require","module"],function(f,k,h,j){var e,c={},i={},b={config:k,global:this,dijit:c,dojox:i},c={dojo:["dojo",b],dijit:["dijit",c],dojox:["dojox",i]},j=h.map&&h.map[j.id.match(/[^\/]+/)[0]];for(e in j)c[e]?c[e][0]=j[e]:c[e]=[j[e],{}];for(e in c)j=c[e],j[1]._scopeName=j[0],k.noGlobals||(this[j[0]]=j[1]);b.scopeMap=c;b.baseUrl=b.config.baseUrl=h.baseUrl;b.isAsync=h.async;b.locale=k.locale;j="$Rev: 29801 $".match(/\d+/);b.version={major:1,minor:8,patch:1,flag:"",revision:j?+j[0]:NaN,toString:function(){var a=
+b.version;return a.major+"."+a.minor+"."+a.patch+a.flag+" ("+a.revision+")"}};Function("d","d.eval = function(){return d.global.eval ? d.global.eval(arguments[0]) : eval(arguments[0]);}")(b);b.exit=function(){};"undefined"!=typeof console||(console={});for(var c="assert,count,debug,dir,dirxml,error,group,groupEnd,info,profile,profileEnd,time,timeEnd,trace,warn,log".split(","),g,j=0;g=c[j++];)console[g]||function(){var a=g+"";console[a]="log"in console?function(){var b=Array.apply({},arguments);b.unshift(a+
+":");console.log(b.join(" "))}:function(){};console[a]._fake=!0}();f.add("dojo-debug-messages",!!k.isDebug);b.deprecated=b.experimental=function(){};if(f("dojo-debug-messages"))b.deprecated=function(){},b.experimental=function(){};if(k.modulePaths){b.deprecated("dojo.modulePaths","use paths configuration");f={};for(e in k.modulePaths)f[e.replace(/\./g,"/")]=k.modulePaths[e];h({paths:f})}b.moduleUrl=function(a,l){b.deprecated("dojo.moduleUrl()","use require.toUrl","2.0");var d=null;a&&(d=h.toUrl(a.replace(/\./g,
+"/")+(l?"/"+l:"")+"/*.*").replace(/\/\*\.\*/,"")+(l?"":"/"));return d};b._hasResource={};return b})},"dojo/has":function(){define(["require","module"],function(f){var k=f.has||function(){};k.add("dom-addeventlistener",!!document.addEventListener);k.add("touch","ontouchstart"in document);k.add("device-width",screen.availWidth||innerWidth);f=document.createElement("form");k.add("dom-attributes-explicit",0==f.attributes.length);k.add("dom-attributes-specified-flag",0<f.attributes.length&&40>f.attributes.length);
+k.clearElement=function(f){f.innerHTML="";return f};k.normalize=function(f,j){var e=f.match(/[\?:]|[^:\?]*/g),c=0,i=function(b){var g=e[c++];if(":"==g)return 0;if("?"==e[c++]){if(!b&&k(g))return i();i(!0);return i(b)}return g||0};return(f=i())&&j(f)};k.load=function(f,j,e){f?j([f],e):e()};return k})},"dojo/_base/config":function(){define(["../has","require"],function(f,k){var h={},j=k.rawConfig,e;for(e in j)h[e]=j[e];return h})},"dojo/_base/array":function(){define(["./kernel","../has","./lang"],
+function(f,k,h){function j(a){return i[a]=new Function("item","index","array",a)}function e(a){var b=!a;return function(d,g,c){var e=0,f=d&&d.length||0,h;f&&"string"==typeof d&&(d=d.split(""));"string"==typeof g&&(g=i[g]||j(g));if(c)for(;e<f;++e){if(h=!g.call(c,d[e],e,d),a^h)return!h}else for(;e<f;++e)if(h=!g(d[e],e,d),a^h)return!h;return b}}function c(a){var l=1,d=0,c=0;a||(l=d=c=-1);return function(e,f,i,j){if(j&&0<l)return g.lastIndexOf(e,f,i);var j=e&&e.length||0,h=a?j+c:d;i===b?i=a?d:j+c:0>i?
+(i=j+i,0>i&&(i=d)):i=i>=j?j+c:i;for(j&&"string"==typeof e&&(e=e.split(""));i!=h;i+=l)if(e[i]==f)return i;return-1}}var i={},b,g={every:e(!1),some:e(!0),indexOf:c(!0),lastIndexOf:c(!1),forEach:function(a,b,d){var g=0,c=a&&a.length||0;c&&"string"==typeof a&&(a=a.split(""));"string"==typeof b&&(b=i[b]||j(b));if(d)for(;g<c;++g)b.call(d,a[g],g,a);else for(;g<c;++g)b(a[g],g,a)},map:function(a,b,d,g){var c=0,e=a&&a.length||0,g=new (g||Array)(e);e&&"string"==typeof a&&(a=a.split(""));"string"==typeof b&&
+(b=i[b]||j(b));if(d)for(;c<e;++c)g[c]=b.call(d,a[c],c,a);else for(;c<e;++c)g[c]=b(a[c],c,a);return g},filter:function(a,b,d){var g=0,c=a&&a.length||0,e=[],f;c&&"string"==typeof a&&(a=a.split(""));"string"==typeof b&&(b=i[b]||j(b));if(d)for(;g<c;++g)f=a[g],b.call(d,f,g,a)&&e.push(f);else for(;g<c;++g)f=a[g],b(f,g,a)&&e.push(f);return e},clearCache:function(){i={}}};h.mixin(f,g);return g})},"dojo/_base/lang":function(){define(["./kernel","../has","../sniff"],function(f,k){k.add("bug-for-in-skips-shadowed",
+function(){for(var a in{toString:1})return 0;return 1});var h=k("bug-for-in-skips-shadowed")?"hasOwnProperty.valueOf.isPrototypeOf.propertyIsEnumerable.toLocaleString.toString.constructor".split("."):[],j=h.length,e=function(a,b,d){var g,c=0,e=f.global;if(!d)if(a.length){g=a[c++];try{d=f.scopeMap[g]&&f.scopeMap[g][1]}catch(i){}d=d||(g in e?e[g]:b?e[g]={}:void 0)}else return e;for(;d&&(g=a[c++]);)d=g in d?d[g]:b?d[g]={}:void 0;return d},c=Object.prototype.toString,i=function(a,b,d){return(d||[]).concat(Array.prototype.slice.call(a,
+b||0))},b=/\{([^\}]+)\}/g,g={_extraNames:h,_mixin:function(a,b,d){var g,c,e,f={};for(g in b)if(c=b[g],!(g in a)||a[g]!==c&&(!(g in f)||f[g]!==c))a[g]=d?d(c):c;if(k("bug-for-in-skips-shadowed")&&b)for(e=0;e<j;++e)if(g=h[e],c=b[g],!(g in a)||a[g]!==c&&(!(g in f)||f[g]!==c))a[g]=d?d(c):c;return a},mixin:function(a,b){a||(a={});for(var d=1,c=arguments.length;d<c;d++)g._mixin(a,arguments[d]);return a},setObject:function(a,b,d){var g=a.split("."),a=g.pop();return(d=e(g,!0,d))&&a?d[a]=b:void 0},getObject:function(a,
+b,d){return e(a.split("."),b,d)},exists:function(a,b){return void 0!==g.getObject(a,!1,b)},isString:function(a){return"string"==typeof a||a instanceof String},isArray:function(a){return a&&(a instanceof Array||"array"==typeof a)},isFunction:function(a){return"[object Function]"===c.call(a)},isObject:function(a){return void 0!==a&&(null===a||"object"==typeof a||g.isArray(a)||g.isFunction(a))},isArrayLike:function(a){return a&&void 0!==a&&!g.isString(a)&&!g.isFunction(a)&&!(a.tagName&&"form"==a.tagName.toLowerCase())&&
+(g.isArray(a)||isFinite(a.length))},isAlien:function(a){return a&&!g.isFunction(a)&&/\{\s*\[native code\]\s*\}/.test(""+a)},extend:function(a,b){for(var d=1,c=arguments.length;d<c;d++)g._mixin(a.prototype,arguments[d]);return a},_hitchArgs:function(a,b){var d=g._toArray(arguments,2),c=g.isString(b);return function(){var e=g._toArray(arguments),i=c?(a||f.global)[b]:b;return i&&i.apply(a||this,d.concat(e))}},hitch:function(a,b){if(2<arguments.length)return g._hitchArgs.apply(f,arguments);b||(b=a,a=
+null);if(g.isString(b)){a=a||f.global;if(!a[b])throw['lang.hitch: scope["',b,'"] is null (scope="',a,'")'].join("");return function(){return a[b].apply(a,arguments||[])}}return!a?b:function(){return b.apply(a,arguments||[])}},delegate:function(){function a(){}return function(b,d){a.prototype=b;var c=new a;a.prototype=null;d&&g._mixin(c,d);return c}}(),_toArray:k("ie")?function(){function a(a,b,g){g=g||[];for(b=b||0;b<a.length;b++)g.push(a[b]);return g}return function(b){return(b.item?a:i).apply(this,
+arguments)}}():i,partial:function(a){return g.hitch.apply(f,[null].concat(g._toArray(arguments)))},clone:function(a){if(!a||"object"!=typeof a||g.isFunction(a))return a;if(a.nodeType&&"cloneNode"in a)return a.cloneNode(!0);if(a instanceof Date)return new Date(a.getTime());if(a instanceof RegExp)return RegExp(a);var b,d,c;if(g.isArray(a)){b=[];for(d=0,c=a.length;d<c;++d)d in a&&b.push(g.clone(a[d]))}else b=a.constructor?new a.constructor:{};return g._mixin(b,a,g.clone)},trim:String.prototype.trim?
+function(a){return a.trim()}:function(a){return a.replace(/^\s\s*/,"").replace(/\s\s*$/,"")},replace:function(a,c,d){return a.replace(d||b,g.isFunction(c)?c:function(a,b){return g.getObject(b,!1,c)})}};g.mixin(f,g);return g})},"dojo/sniff":function(){define(["./has"],function(f){var k=navigator,h=k.userAgent,k=k.appVersion,j=parseFloat(k);f.add("air",0<=h.indexOf("AdobeAIR"));f.add("khtml",0<=k.indexOf("Konqueror")?j:void 0);f.add("webkit",parseFloat(h.split("WebKit/")[1])||void 0);f.add("chrome",
+parseFloat(h.split("Chrome/")[1])||void 0);f.add("safari",0<=k.indexOf("Safari")&&!f("chrome")?parseFloat(k.split("Version/")[1]):void 0);f.add("mac",0<=k.indexOf("Macintosh"));f.add("quirks","BackCompat"==document.compatMode);f.add("ios",/iPhone|iPod|iPad/.test(h));f.add("android",parseFloat(h.split("Android ")[1])||void 0);if(!f("webkit")){0<=h.indexOf("Opera")&&f.add("opera",9.8<=j?parseFloat(h.split("Version/")[1])||j:j);0<=h.indexOf("Gecko")&&!f("khtml")&&!f("webkit")&&f.add("mozilla",j);f("mozilla")&&
+f.add("ff",parseFloat(h.split("Firefox/")[1]||h.split("Minefield/")[1])||void 0);if(document.all&&!f("opera"))h=parseFloat(k.split("MSIE ")[1])||void 0,(k=document.documentMode)&&5!=k&&Math.floor(h)!=k&&(h=k),f.add("ie",h);f.add("wii","undefined"!=typeof opera&&opera.wiiremote)}return f})},"dojo/_base/xhr":function(){define("./kernel,./sniff,require,../io-query,../dom,../dom-form,./Deferred,./config,./json,./lang,./array,../on,../aspect,../request/watch,../request/xhr,../request/util".split(","),
+function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o){f._xhrObj=n._create;var r=f.config;f.objectToQuery=j.objectToQuery;f.queryToObject=j.queryToObject;f.fieldToObject=c.fieldToObject;f.formToObject=c.toObject;f.formToQuery=c.toQuery;f.formToJson=c.toJson;f._blockAsync=!1;var q=f._contentHandlers=f.contentHandlers={text:function(a){return a.responseText},json:function(a){return g.fromJson(a.responseText||null)},"json-comment-filtered":function(a){var a=a.responseText,b=a.indexOf("/*"),d=a.lastIndexOf("*/");
+if(-1==b||-1==d)throw Error("JSON was not comment filtered");return g.fromJson(a.substring(b+2,d))},javascript:function(a){return f.eval(a.responseText)},xml:function(a){var b=a.responseXML;if(k("ie")&&(!b||!b.documentElement)){var d=function(a){return"MSXML"+a+".DOMDocument"},d=["Microsoft.XMLDOM",d(6),d(4),d(3),d(2)];l.some(d,function(d){try{var g=new ActiveXObject(d);g.async=!1;g.loadXML(a.responseText);b=g}catch(c){return!1}return!0})}return b},"json-comment-optional":function(a){return a.responseText&&
+/^[^{\[]*\/\*/.test(a.responseText)?q["json-comment-filtered"](a):q.json(a)}};f._ioSetArgs=function(b,d,g,l){var m={args:b,url:b.url},p=null;if(b.form){var p=e.byId(b.form),o=p.getAttributeNode("action");m.url=m.url||(o?o.value:null);p=c.toObject(p)}o=[{}];p&&o.push(p);b.content&&o.push(b.content);b.preventCache&&o.push({"dojo.preventCache":(new Date).valueOf()});m.query=j.objectToQuery(a.mixin.apply(null,o));m.handleAs=b.handleAs||"text";var n=new i(function(a){a.canceled=!0;d&&d(a);var b=a.ioArgs.error;
+if(!b)b=Error("request cancelled"),b.dojoType="cancel",a.ioArgs.error=b;return b});n.addCallback(g);var h=b.load;h&&a.isFunction(h)&&n.addCallback(function(a){return h.call(b,a,m)});var t=b.error;t&&a.isFunction(t)&&n.addErrback(function(a){return t.call(b,a,m)});var q=b.handle;q&&a.isFunction(q)&&n.addBoth(function(a){return q.call(b,a,m)});n.addErrback(function(a){return l(a,n)});r.ioPublish&&f.publish&&!1!==m.args.ioPublish&&(n.addCallbacks(function(a){f.publish("/dojo/io/load",[n,a]);return a},
+function(a){f.publish("/dojo/io/error",[n,a]);return a}),n.addBoth(function(a){f.publish("/dojo/io/done",[n,a]);return a}));n.ioArgs=m;return n};var v=function(a){a=q[a.ioArgs.handleAs](a.ioArgs.xhr);return void 0===a?null:a},s=function(a){return a},t=function(a){0>=u&&(u=0,r.ioPublish&&f.publish&&(!a||a&&!1!==a.ioArgs.args.ioPublish)&&f.publish("/dojo/io/stop"))},u=0;p.after(m,"_onAction",function(){u-=1});p.after(m,"_onInFlight",t);f._ioCancelAll=m.cancelAll;f._ioNotifyStart=function(a){r.ioPublish&&
+f.publish&&!1!==a.ioArgs.args.ioPublish&&(u||f.publish("/dojo/io/start"),u+=1,f.publish("/dojo/io/send",[a]))};f._ioWatch=function(b,d,g,c){b.ioArgs.options=b.ioArgs.args;a.mixin(b,{response:b.ioArgs,isValid:function(){return d(b)},isReady:function(){return g(b)},handleResponse:function(){return c(b)}});m(b);t(b)};f._ioAddQueryToUrl=function(a){if(a.query.length)a.url+=(-1==a.url.indexOf("?")?"?":"&")+a.query,a.query=null};f.xhr=function(a,b,d){var g,c=f._ioSetArgs(b,function(){g&&g.cancel()},v,s),
+l=c.ioArgs;"postData"in b?l.query=b.postData:"putData"in b?l.query=b.putData:"rawBody"in b?l.query=b.rawBody:(2<arguments.length&&!d||-1==="POST|PUT".indexOf(a.toUpperCase()))&&f._ioAddQueryToUrl(l);var e={method:a,handleAs:"text",timeout:b.timeout,withCredentials:b.withCredentials,ioArgs:l};if("undefined"!==typeof b.headers)e.headers=b.headers;if("undefined"!==typeof b.contentType){if(!e.headers)e.headers={};e.headers["Content-Type"]=b.contentType}if("undefined"!==typeof l.query)e.data=l.query;if("undefined"!==
+typeof b.sync)e.sync=b.sync;f._ioNotifyStart(c);try{g=n(l.url,e,!0)}catch(m){return c.cancel(),c}c.ioArgs.xhr=g.response.xhr;g.then(function(){c.resolve(c)}).otherwise(function(a){l.error=a;if(a.response)a.status=a.response.status,a.responseText=a.response.text,a.xhr=a.response.xhr;c.reject(a)});return c};f.xhrGet=function(a){return f.xhr("GET",a)};f.rawXhrPost=f.xhrPost=function(a){return f.xhr("POST",a,!0)};f.rawXhrPut=f.xhrPut=function(a){return f.xhr("PUT",a,!0)};f.xhrDelete=function(a){return f.xhr("DELETE",
+a)};f._isDocumentOk=function(a){return o.checkStatus(a.status)};f._getText=function(a){var b;f.xhrGet({url:a,sync:!0,load:function(a){b=a}});return b};a.mixin(f.xhr,{_xhrObj:f._xhrObj,fieldToObject:c.fieldToObject,formToObject:c.toObject,objectToQuery:j.objectToQuery,formToQuery:c.toQuery,formToJson:c.toJson,queryToObject:j.queryToObject,contentHandlers:q,_ioSetArgs:f._ioSetArgs,_ioCancelAll:f._ioCancelAll,_ioNotifyStart:f._ioNotifyStart,_ioWatch:f._ioWatch,_ioAddQueryToUrl:f._ioAddQueryToUrl,_isDocumentOk:f._isDocumentOk,
+_getText:f._getText,get:f.xhrGet,post:f.xhrPost,put:f.xhrPut,del:f.xhrDelete});return f.xhr})},"dojo/_base/sniff":function(){define(["./kernel","./lang","../sniff"],function(f,k,h){f._name="browser";k.mixin(f,{isBrowser:!0,isFF:h("ff"),isIE:h("ie"),isKhtml:h("khtml"),isWebKit:h("webkit"),isMozilla:h("mozilla"),isMoz:h("mozilla"),isOpera:h("opera"),isSafari:h("safari"),isChrome:h("chrome"),isMac:h("mac"),isIos:h("ios"),isAndroid:h("android"),isWii:h("wii"),isQuirks:h("quirks"),isAir:h("air")});f.locale=
+f.locale||(h("ie")?navigator.userLanguage:navigator.language).toLowerCase();return h})},"dojo/io-query":function(){define(["./_base/lang"],function(f){var k={};return{objectToQuery:function(h){var j=encodeURIComponent,e=[],c;for(c in h){var i=h[c];if(i!=k[c]){var b=j(c)+"=";if(f.isArray(i))for(var g=0,a=i.length;g<a;++g)e.push(b+j(i[g]));else e.push(b+j(i))}}return e.join("&")},queryToObject:function(h){for(var j=decodeURIComponent,h=h.split("&"),e={},c,i,b=0,g=h.length;b<g;++b)if(i=h[b],i.length){var a=
+i.indexOf("=");0>a?(c=j(i),i=""):(c=j(i.slice(0,a)),i=j(i.slice(a+1)));"string"==typeof e[c]&&(e[c]=[e[c]]);f.isArray(e[c])?e[c].push(i):e[c]=i}return e}}})},"dojo/dom":function(){define(["./sniff","./_base/lang","./_base/window"],function(f,k,h){if(7>=f("ie"))try{document.execCommand("BackgroundImageCache",!1,!0)}catch(j){}var e={};e.byId=f("ie")?function(c,e){if("string"!=typeof c)return c;var b=e||h.doc,g=c&&b.getElementById(c);if(g&&(g.attributes.id.value==c||g.id==c))return g;b=b.all[c];if(!b||
+b.nodeName)b=[b];for(var a=0;g=b[a++];)if(g.attributes&&g.attributes.id&&g.attributes.id.value==c||g.id==c)return g}:function(c,e){return("string"==typeof c?(e||h.doc).getElementById(c):c)||null};e.isDescendant=function(c,f){try{c=e.byId(c);for(f=e.byId(f);c;){if(c==f)return!0;c=c.parentNode}}catch(b){}return!1};e.setSelectable=function(c,i){c=e.byId(c);if(f("mozilla"))c.style.MozUserSelect=i?"":"none";else if(f("khtml")||f("webkit"))c.style.KhtmlUserSelect=i?"auto":"none";else if(f("ie"))for(var b=
+c.unselectable=i?"":"on",g=c.getElementsByTagName("*"),a=0,l=g.length;a<l;++a)g.item(a).unselectable=b};return e})},"dojo/_base/window":function(){define(["./kernel","./lang","../sniff"],function(f,k,h){var j={global:f.global,doc:this.document||null,body:function(e){e=e||f.doc;return e.body||e.getElementsByTagName("body")[0]},setContext:function(e,c){f.global=j.global=e;f.doc=j.doc=c},withGlobal:function(e,c,i,b){var g=f.global;try{return f.global=j.global=e,j.withDoc.call(null,e.document,c,i,b)}finally{f.global=
+j.global=g}},withDoc:function(e,c,i,b){var g=j.doc,a=h("quirks"),l=h("ie"),d,p,m;try{f.doc=j.doc=e;f.isQuirks=h.add("quirks","BackCompat"==f.doc.compatMode,!0,!0);if(h("ie")&&(m=e.parentWindow)&&m.navigator)d=parseFloat(m.navigator.appVersion.split("MSIE ")[1])||void 0,(p=e.documentMode)&&5!=p&&Math.floor(d)!=p&&(d=p),f.isIE=h.add("ie",d,!0,!0);i&&"string"==typeof c&&(c=i[c]);return c.apply(i,b||[])}finally{f.doc=j.doc=g,f.isQuirks=h.add("quirks",a,!0,!0),f.isIE=h.add("ie",l,!0,!0)}}};k.mixin(f,j);
+return j})},"dojo/dom-form":function(){define(["./_base/lang","./dom","./io-query","./json"],function(f,k,h,j){var e={fieldToObject:function(c){var e=null;if(c=k.byId(c)){var b=c.name,g=(c.type||"").toLowerCase();if(b&&g&&!c.disabled)if("radio"==g||"checkbox"==g){if(c.checked)e=c.value}else if(c.multiple){e=[];for(c=[c.firstChild];c.length;)for(b=c.pop();b;b=b.nextSibling)if(1==b.nodeType&&"option"==b.tagName.toLowerCase())b.selected&&e.push(b.value);else{b.nextSibling&&c.push(b.nextSibling);b.firstChild&&
+c.push(b.firstChild);break}}else e=c.value}return e},toObject:function(c){for(var i={},c=k.byId(c).elements,b=0,g=c.length;b<g;++b){var a=c[b],l=a.name,d=(a.type||"").toLowerCase();if(l&&d&&0>"file|submit|image|reset|button".indexOf(d)&&!a.disabled){var p=i,m=l,a=e.fieldToObject(a);if(null!==a){var n=p[m];"string"==typeof n?p[m]=[n,a]:f.isArray(n)?n.push(a):p[m]=a}if("image"==d)i[l+".x"]=i[l+".y"]=i[l].x=i[l].y=0}}return i},toQuery:function(c){return h.objectToQuery(e.toObject(c))},toJson:function(c,
+f){return j.stringify(e.toObject(c),null,f?4:0)}};return e})},"dojo/json":function(){define(["./has"],function(f){var k="undefined"!=typeof JSON;f.add("json-parse",k);f.add("json-stringify",k&&'{"a":1}'==JSON.stringify({a:0},function(f,e){return e||1}));if(f("json-stringify"))return JSON;var h=function(f){return('"'+f.replace(/(["\\])/g,"\\$1")+'"').replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r")};return{parse:f("json-parse")?JSON.parse:
+function(f,e){if(e&&!/^([\s\[\{]*(?:"(?:\\.|[^"])+"|-?\d[\d\.]*(?:[Ee][+-]?\d+)?|null|true|false|)[\s\]\}]*(?:,|:|$))+$/.test(f))throw new SyntaxError("Invalid characters in JSON");return eval("("+f+")")},stringify:function(f,e,c){function i(g,a,l){e&&(g=e(l,g));var d;d=typeof g;if("number"==d)return isFinite(g)?g+"":"null";if("boolean"==d)return g+"";if(null===g)return"null";if("string"==typeof g)return h(g);if("function"==d||"undefined"==d)return b;if("function"==typeof g.toJSON)return i(g.toJSON(l),
+a,l);if(g instanceof Date)return'"{FullYear}-{Month+}-{Date}T{Hours}:{Minutes}:{Seconds}Z"'.replace(/\{(\w+)(\+)?\}/g,function(a,b,d){a=g["getUTC"+b]()+(d?1:0);return 10>a?"0"+a:a});if(g.valueOf()!==g)return i(g.valueOf(),a,l);var f=c?a+c:"",m=c?" ":"",n=c?"\n":"";if(g instanceof Array){for(var m=g.length,o=[],l=0;l<m;l++)d=i(g[l],f,l),"string"!=typeof d&&(d="null"),o.push(n+f+d);return"["+o.join(",")+n+a+"]"}o=[];for(l in g){var j;if(g.hasOwnProperty(l)){if("number"==typeof l)j='"'+l+'"';else if("string"==
+typeof l)j=h(l);else continue;d=i(g[l],f,l);"string"==typeof d&&o.push(n+f+j+":"+m+d)}}return"{"+o.join(",")+n+a+"}"}var b;"string"==typeof e&&(c=e,e=null);return i(f,"","")}}})},"dojo/_base/Deferred":function(){define("./kernel,../Deferred,../promise/Promise,../errors/CancelError,../has,./lang,../when".split(","),function(f,k,h,j,e,c,i){var b=function(){},g=Object.freeze||function(){},a=f.Deferred=function(l){function d(a){if(i)throw Error("This deferred has already been resolved");m=a;i=!0;f()}
+function f(){for(var a;!a&&q;){var d=q;q=q.next;if(a=d.progress==b)i=!1;var g=o?d.error:d.resolved;e("config-useDeferredInstrumentation")&&o&&k.instrumentRejected&&k.instrumentRejected(m,!!g);if(g)try{var l=g(m);l&&"function"===typeof l.then?l.then(c.hitch(d.deferred,"resolve"),c.hitch(d.deferred,"reject"),c.hitch(d.deferred,"progress")):(g=a&&void 0===l,a&&!g&&(o=l instanceof Error),d.deferred[g&&o?"reject":"resolve"](g?m:l))}catch(p){d.deferred.reject(p)}else o?d.deferred.reject(m):d.deferred.resolve(m)}}
+var m,i,o,r,q,v=this.promise=new h;this.resolve=this.callback=function(a){this.fired=0;this.results=[a,null];d(a)};this.reject=this.errback=function(a){o=!0;this.fired=1;e("config-useDeferredInstrumentation")&&k.instrumentRejected&&k.instrumentRejected(a,!!q);d(a);this.results=[null,a]};this.progress=function(a){for(var b=q;b;){var d=b.progress;d&&d(a);b=b.next}};this.addCallbacks=function(a,d){this.then(a,d,b);return this};v.then=this.then=function(d,g,c){var l=c==b?this:new a(v.cancel),d={resolved:d,
+error:g,progress:c,deferred:l};q?r=r.next=d:q=r=d;i&&f();return l.promise};var s=this;v.cancel=this.cancel=function(){if(!i){var a=l&&l(s);if(!i)a instanceof Error||(a=new j(a)),a.log=!1,s.reject(a)}};g(v)};c.extend(a,{addCallback:function(a){return this.addCallbacks(c.hitch.apply(f,arguments))},addErrback:function(a){return this.addCallbacks(null,c.hitch.apply(f,arguments))},addBoth:function(a){var b=c.hitch.apply(f,arguments);return this.addCallbacks(b,b)},fired:-1});a.when=f.when=i;return a})},
+"dojo/Deferred":function(){define("dojo/Deferred",["./has","./_base/lang","./errors/CancelError","./promise/Promise","./promise/instrumentation"],function(f,k,h,j,e){var c=Object.freeze||function(){},i=function(a,g,c,e,f){2===g&&l.instrumentRejected&&0===a.length&&l.instrumentRejected(c,!1,e,f);for(f=0;f<a.length;f++)b(a[f],g,c,e)},b=function(b,c,e,f){var i=b[c],j=b.deferred;if(i)try{var h=i(e);if(0===c)"undefined"!==typeof h&&a(j,c,h);else{if(h&&"function"===typeof h.then){b.cancel=h.cancel;h.then(g(j,
+1),g(j,2),g(j,0));return}a(j,1,h)}}catch(k){a(j,2,k)}else a(j,c,e);2===c&&l.instrumentRejected&&l.instrumentRejected(e,!!i,f,j.promise)},g=function(b,g){return function(c){a(b,g,c)}},a=function(a,b,g){if(!a.isCanceled())switch(b){case 0:a.progress(g);break;case 1:a.resolve(g);break;case 2:a.reject(g)}},l=function(a){var g=this.promise=new j,e=this,f,o,r,q=!1,k=[];Error.captureStackTrace&&(Error.captureStackTrace(e,l),Error.captureStackTrace(g,l));this.isResolved=g.isResolved=function(){return 1===
+f};this.isRejected=g.isRejected=function(){return 2===f};this.isFulfilled=g.isFulfilled=function(){return!!f};this.isCanceled=g.isCanceled=function(){return q};this.progress=function(a,b){if(f){if(!0===b)throw Error("This deferred has already been fulfilled.");return g}i(k,0,a,null,e);return g};this.resolve=function(a,b){if(f){if(!0===b)throw Error("This deferred has already been fulfilled.");return g}i(k,f=1,o=a,null,e);k=null;return g};var s=this.reject=function(a,b){if(f){if(!0===b)throw Error("This deferred has already been fulfilled.");
+return g}Error.captureStackTrace&&Error.captureStackTrace(r={},s);i(k,f=2,o=a,r,e);k=null;return g};this.then=g.then=function(a,d,c){var e=[c,a,d];e.cancel=g.cancel;e.deferred=new l(function(a){return e.cancel&&e.cancel(a)});f&&!k?b(e,f,o,r):k.push(e);return e.deferred.promise};this.cancel=g.cancel=function(b,g){if(f){if(!0===g)throw Error("This deferred has already been fulfilled.");}else{if(a)var c=a(b),b="undefined"===typeof c?b:c;q=!0;if(f){if(2===f&&o===b)return b}else return"undefined"===typeof b&&
+(b=new h),s(b),b}};c(g)};l.prototype.toString=function(){return"[object Deferred]"};e&&e(l);return l})},"dojo/errors/CancelError":function(){define(["./create"],function(f){return f("CancelError",null,null,{dojoType:"cancel"})})},"dojo/errors/create":function(){define(["../_base/lang"],function(f){return function(k,h,j,e){var j=j||Error,c=function(e){if(j===Error){Error.captureStackTrace&&Error.captureStackTrace(this,c);var b=Error.call(this,e),g;for(g in b)b.hasOwnProperty(g)&&(this[g]=b[g]);this.message=
+e;this.stack=b.stack}else j.apply(this,arguments);h&&h.apply(this,arguments)};c.prototype=f.delegate(j.prototype,e);c.prototype.name=k;return c.prototype.constructor=c}})},"dojo/promise/Promise":function(){define(["../_base/lang"],function(f){function k(){throw new TypeError("abstract");}return f.extend(function(){},{then:function(){k()},cancel:function(){k()},isResolved:function(){k()},isRejected:function(){k()},isFulfilled:function(){k()},isCanceled:function(){k()},always:function(f){return this.then(f,
+f)},otherwise:function(f){return this.then(null,f)},trace:function(){return this},traceRejected:function(){return this},toString:function(){return"[object Promise]"}})})},"dojo/promise/instrumentation":function(){define(["./tracer","../has","../_base/lang","../_base/array"],function(f,k,h,j){function e(a,b){b&&b.stack&&b.stack.split("\n").slice(1).join("\n").replace(/^\s+/," ")}function c(a,b,g,c){b||e(a,g,c)}function i(d,c,e,f){c?j.some(g,function(a,b){if(a.error===d)return g.splice(b,1),!0}):j.some(g,
+function(a){return a.error===d})||g.push({error:d,rejection:e,deferred:f,timestamp:(new Date).getTime()});a||(a=setTimeout(b,l))}function b(){var d=(new Date).getTime(),c=d-l;g=j.filter(g,function(a){return a.timestamp<c?(e(a.error,a.rejection,a.deferred),!1):!0});g.length&&(a=setTimeout(b,g[0].timestamp+l-d))}var g=[],a=!1,l=1E3;return function(a){var b=k("config-useDeferredInstrumentation");if(b){f.on("resolved",h.hitch(console,"log","resolved"));f.on("rejected",h.hitch(console,"log","rejected"));
+f.on("progress",h.hitch(console,"log","progress"));var g=[];"string"===typeof b&&(g=b.split(","),b=g.shift());if("report-rejections"===b)a.instrumentRejected=c;else if("report-unhandled-rejections"===b||!0===b||1===b)a.instrumentRejected=i,l=parseInt(g[0],10)||l;else throw Error("Unsupported instrumentation usage <"+b+">");}}})},"dojo/promise/tracer":function(){define(["../_base/lang","./Promise","../Evented"],function(f,k,h){function j(f){setTimeout(function(){c.apply(e,f)},0)}var e=new h,c=e.emit;
+e.emit=null;k.prototype.trace=function(){var c=f._toArray(arguments);this.then(function(b){j(["resolved",b].concat(c))},function(b){j(["rejected",b].concat(c))},function(b){j(["progress",b].concat(c))});return this};k.prototype.traceRejected=function(){var c=f._toArray(arguments);this.otherwise(function(b){j(["rejected",b].concat(c))});return this};return e})},"dojo/Evented":function(){define("dojo/Evented",["./aspect","./on"],function(f,k){function h(){}var j=f.after;h.prototype={on:function(e,c){return k.parse(this,
+e,c,function(e,b){return j(e,"on"+b,c,!0)})},emit:function(e,c){var f=[this];f.push.apply(f,arguments);return k.emit.apply(k,f)}};return h})},"dojo/aspect":function(){define("dojo/aspect",[],function(){function f(b,g,a,c){var d=b[g],e="around"==g,f;if(e){var i=a(function(){return d.advice(this,arguments)});f={remove:function(){f.cancelled=!0},advice:function(a,b){return f.cancelled?d.advice(a,b):i.apply(a,b)}}}else f={remove:function(){var a=f.previous,d=f.next;if(!d&&!a)delete b[g];else if(a?a.next=
+d:b[g]=d,d)d.previous=a},id:j++,advice:a,receiveArguments:c};if(d&&!e)if("after"==g){for(a=d;a;)d=a,a=a.next;d.next=f;f.previous=d}else{if("before"==g)b[g]=f,f.next=d,d.previous=f}else b[g]=f;return f}function k(b){return function(g,a,c,d){var e=g[a],m;if(!e||e.target!=g){g[a]=m=function(){for(var a=j,b=arguments,d=m.before;d;)b=d.advice.apply(this,b)||b,d=d.next;if(m.around)var g=m.around.advice(this,b);for(d=m.after;d&&d.id<a;){if(d.receiveArguments)var c=d.advice.apply(this,b),g=c===h?g:c;else g=
+d.advice.call(this,g,b);d=d.next}return g};if(e)m.around={advice:function(a,b){return e.apply(a,b)}};m.target=g}g=f(m||e,b,c,d);c=null;return g}}var h,j=0,e=k("after"),c=k("before"),i=k("around");return{before:c,around:i,after:e}})},"dojo/on":function(){define(["./has!dom-addeventlistener?:./aspect","./_base/kernel","./has"],function(f,k,h){function j(a,c,e,l,f){if(l=c.match(/(.*):(.*)/))return c=l[2],l=l[1],b.selector(l,c).call(f,a,e);h("touch")&&(g.test(c)&&(e=y(e)),!h("event-orientationchange")&&
+"orientationchange"==c&&(c="resize",a=window,e=y(e)));m&&(e=m(e));if(a.addEventListener){var i=c in d,j=i?d[c]:c;a.addEventListener(j,e,i);return{remove:function(){a.removeEventListener(j,e,i)}}}if(q&&a.attachEvent)return q(a,"on"+c,e);throw Error("Target must be an event emitter");}function e(){this.cancelable=!1}function c(){this.bubbles=!1}var i=window.ScriptEngineMajorVersion;h.add("jscript",i&&i()+ScriptEngineMinorVersion()/10);h.add("event-orientationchange",h("touch")&&!h("android"));h.add("event-stopimmediatepropagation",
+window.Event&&!!window.Event.prototype&&!!window.Event.prototype.stopImmediatePropagation);var b=function(a,d,g,c){return"function"==typeof a.on&&"function"!=typeof d?a.on(d,g):b.parse(a,d,g,j,c,this)};b.pausable=function(a,d,g,c){var e,a=b(a,d,function(){if(!e)return g.apply(this,arguments)},c);a.pause=function(){e=!0};a.resume=function(){e=!1};return a};b.once=function(a,d,g){var c=b(a,d,function(){c.remove();return g.apply(this,arguments)});return c};b.parse=function(a,b,d,g,c,e){if(b.call)return b.call(e,
+a,d);if(-1<b.indexOf(",")){for(var b=b.split(/\s*,\s*/),l=[],f=0,m;m=b[f++];)l.push(g(a,m,d,c,e));l.remove=function(){for(var a=0;a<l.length;a++)l[a].remove()};return l}return g(a,b,d,c,e)};var g=/^touch/;b.selector=function(a,d,g){return function(c,e){function l(b){for(f=f&&f.matches?f:k.query;!f.matches(b,a,c);)if(b==c||!1===g||!(b=b.parentNode)||1!=b.nodeType)return;return b}var f="function"==typeof a?{matches:a}:this,m=d.bubble;return m?b(c,m(l),e):b(c,d,function(a){var b=l(a.target);return b&&
+e.call(b,a)})}};var a=[].slice,l=b.emit=function(b,d,g){var l=a.call(arguments,2),f="on"+d;if("parentNode"in b){var m=l[0]={},i;for(i in g)m[i]=g[i];m.preventDefault=e;m.stopPropagation=c;m.target=b;m.type=d;g=m}do b[f]&&b[f].apply(b,l);while(g&&g.bubbles&&(b=b.parentNode));return g&&g.cancelable&&g},d={};if(!h("event-stopimmediatepropagation"))var p=function(){this.modified=this.immediatelyStopped=!0},m=function(a){return function(b){if(!b.immediatelyStopped)return b.stopImmediatePropagation=p,a.apply(this,
+arguments)}};if(h("dom-addeventlistener")){d={focusin:"focus",focusout:"blur"};if(h("opera"))d.keydown="keypress";b.emit=function(a,d,g){if(a.dispatchEvent&&document.createEvent){var c=a.ownerDocument.createEvent("HTMLEvents");c.initEvent(d,!!g.bubbles,!!g.cancelable);for(var e in g)e in c||(c[e]=g[e]);return a.dispatchEvent(c)&&c}return l.apply(b,arguments)}}else{b._fixEvent=function(a,b){if(!a)a=(b&&(b.ownerDocument||b.document||b).parentWindow||window).event;if(!a)return a;n&&a.type==n.type&&(a=
n);if(!a.target){a.target=a.srcElement;a.currentTarget=b||a.srcElement;if("mouseover"==a.type)a.relatedTarget=a.fromElement;if("mouseout"==a.type)a.relatedTarget=a.toElement;if(!a.stopPropagation)a.stopPropagation=v,a.preventDefault=s;switch(a.type){case "keypress":var d="charCode"in a?a.charCode:a.keyCode;10==d?(d=0,a.keyCode=13):13==d||27==d?d=0:3==d&&(d=99);a.charCode=d;d=a;d.keyChar=d.charCode?String.fromCharCode(d.charCode):"";d.charOrCode=d.keyChar||d.keyCode}}return a};var n,o=function(a){this.handle=
-a};o.prototype.remove=function(){delete _dojoIEListeners_[this.handle]};var r=function(a){return function(d){var d=b._fixEvent(d,this),f=a.call(this,d);d.modified&&(n||setTimeout(function(){n=null}),n=d);return f}},q=function(a,b,d){d=r(d);if(((a.ownerDocument?a.ownerDocument.parentWindow:a.parentWindow||a.window||window)!=top||5.8>i("jscript"))&&!i("config-_allow_leaks")){"undefined"==typeof _dojoIEListeners_&&(_dojoIEListeners_=[]);var f=a[b];if(!f||!f.listeners){var k=f,f=Function("event","var callee = arguments.callee; for(var i = 0; i<callee.listeners.length; i++){var listener = _dojoIEListeners_[callee.listeners[i]]; if(listener){listener.call(this,event);}}");
-f.listeners=[];a[b]=f;f.global=this;k&&f.listeners.push(_dojoIEListeners_.push(k)-1)}f.listeners.push(a=f.global._dojoIEListeners_.push(d)-1);return new o(a)}return e.after(a,b,d,!0)},v=function(){this.cancelBubble=!0},s=b._preventDefault=function(){this.bubbledKeyCode=this.keyCode;if(this.ctrlKey)try{this.keyCode=0}catch(a){}this.defaultPrevented=!0;this.returnValue=!1}}if(i("touch"))var u=function(){},t=window.orientation,y=function(a){return function(b){var d=b.corrected;if(!d){var f=b.type;try{delete b.type}catch(k){}b.type?
-(u.prototype=b,d=new u,d.preventDefault=function(){b.preventDefault()},d.stopPropagation=function(){b.stopPropagation()}):(d=b,d.type=f);b.corrected=d;if("resize"==f){if(t==window.orientation)return null;t=window.orientation;d.type="orientationchange";return a.call(this,d)}if(!("rotation"in d))d.rotation=0,d.scale=1;var f=d.changedTouches[0],c;for(c in f)delete d[c],d[c]=f[c]}return a.call(this,d)}};return b})},"dojo/when":function(){define(["./Deferred","./promise/Promise"],function(e,j){return function(i,
-l,c,g){var h=i&&"function"===typeof i.then,b=h&&i instanceof j;if(h){if(!b)h=new e(i.cancel),i.then(h.resolve,h.reject,h.progress),i=h.promise}else return l?l(i):(new e).resolve(i);return l||c||g?i.then(l,c,g):i}})},"dojo/_base/json":function(){define(["./kernel","../json"],function(e,j){e.fromJson=function(e){return eval("("+e+")")};e._escapeString=j.stringify;e.toJsonIndentStr="\t";e.toJson=function(i,l){return j.stringify(i,function(c,g){if(g){var e=g.__json__||g.json;if("function"==typeof e)return e.call(g)}return g},
-l&&e.toJsonIndentStr)};return e})},"dojo/request/watch":function(){define("./util,../errors/RequestTimeoutError,../errors/CancelError,../_base/array,../_base/window,../has!host-browser?dom-addeventlistener?:../on:".split(","),function(e,j,i,l,c,g){function h(){for(var k=+new Date,d=0,c;d<a.length&&(c=a[d]);d++){var m=c.response,g=m.options;if(c.isCanceled&&c.isCanceled()||c.isValid&&!c.isValid(m))a.splice(d--,1),b._onAction&&b._onAction();else if(c.isReady&&c.isReady(m))a.splice(d--,1),c.handleResponse(m),
-b._onAction&&b._onAction();else if(c.startTime&&c.startTime+(g.timeout||0)<k)a.splice(d--,1),c.cancel(new j("Timeout exceeded",m)),b._onAction&&b._onAction()}b._onInFlight&&b._onInFlight(c);a.length||(clearInterval(f),f=null)}function b(b){if(b.response.options.timeout)b.startTime=+new Date;b.isFulfilled()||(a.push(b),f||(f=setInterval(h,50)),b.response.options.sync&&h())}var f=null,a=[];b.cancelAll=function(){try{l.forEach(a,function(a){try{a.cancel(new i("All requests canceled."))}catch(b){}})}catch(b){}};
-c&&g&&c.doc.attachEvent&&g(c.global,"unload",function(){b.cancelAll()});return b})},"dojo/request/util":function(){define("exports,../errors/RequestError,../errors/CancelError,../Deferred,../io-query,../_base/array,../_base/lang".split(","),function(e,j,i,l,c,g,h){function b(a){return f(a)}e.deepCopy=function(a,b){for(var d in b){var f=a[d],c=b[d];f!==c&&(f&&"object"===typeof f&&c&&"object"===typeof c?e.deepCopy(f,c):a[d]=c)}return a};e.deepCreate=function(a,b){var b=b||{},d=h.delegate(a),f,c;for(f in a)(c=
-a[f])&&"object"===typeof c&&(d[f]=e.deepCreate(c,b[f]));return e.deepCopy(d,b)};var f=Object.freeze||function(a){return a};e.deferred=function(a,c,d,g,m,n){var o=new l(function(b){c&&c(o,a);return!b||!(b instanceof j)&&!(b instanceof i)?new i("Request canceled",a):b});o.response=a;o.isValid=d;o.isReady=g;o.handleResponse=m;d=o.then(b).otherwise(function(b){b.response=a;throw b;});e.notify&&d.then(h.hitch(e.notify,"emit","load"),h.hitch(e.notify,"emit","error"));g=d.then(function(a){return a.data||
-a.text});d=f(h.delegate(g,{response:d}));n&&o.then(function(a){n.call(o,a)},function(b){n.call(o,a,b)});o.promise=d;o.then=d.then;return o};e.addCommonMethods=function(a,b){g.forEach(b||["GET","POST","PUT","DELETE"],function(b){a[("DELETE"===b?"DEL":b).toLowerCase()]=function(f,c){c=h.delegate(c||{});c.method=b;return a(f,c)}})};e.parseArgs=function(a,b,d){var f=b.data,m=b.query;if(f&&!d&&"object"===typeof f)b.data=c.objectToQuery(f);m?("object"===typeof m&&(m=c.objectToQuery(m)),b.preventCache&&
-(m+=(m?"&":"")+"request.preventCache="+ +new Date)):b.preventCache&&(m="request.preventCache="+ +new Date);a&&m&&(a+=(~a.indexOf("?")?"&":"?")+m);return{url:a,options:b,getHeader:function(){return null}}};e.checkStatus=function(a){a=a||0;return 200<=a&&300>a||304===a||1223===a||!a}})},"dojo/errors/RequestError":function(){define(["./create"],function(e){return e("RequestError",function(e,i){this.response=i})})},"dojo/errors/RequestTimeoutError":function(){define(["./create","./RequestError"],function(e,
-j){return e("RequestTimeoutError",null,j,{dojoType:"timeout"})})},"dojo/request/xhr":function(){define(["../errors/RequestError","./watch","./handlers","./util","../has"],function(e,j,i,l,c){function g(a,b){var d=a.xhr;a.status=a.xhr.status;a.text=d.responseText;if("xml"===a.options.handleAs)a.data=d.responseXML;if(!b)try{i(a)}catch(f){b=f}b?this.reject(b):l.checkStatus(d.status)?this.resolve(a):(b=new e("Unable to load "+a.url+" status: "+d.status,a),this.reject(b))}function h(m,n,i){var v=l.parseArgs(m,
-l.deepCreate(p,n),c("native-formdata")&&n&&n.data&&n.data instanceof FormData),m=v.url,n=v.options,s,u=l.deferred(v,k,b,f,g,function(){s&&s()}),t=v.xhr=h._create();if(!t)return u.cancel(new e("XHR was not created")),i?u:u.promise;v.getHeader=function(a){return this.xhr.getResponseHeader(a)};a&&(s=a(t,u,v));var y=n.data,z=!n.sync,I=n.method;try{t.open(I,m,z,n.user||d,n.password||d);if(n.withCredentials)t.withCredentials=n.withCredentials;var J=n.headers,N;if(J)for(var E in J)"content-type"===E.toLowerCase()?
-N=J[E]:J[E]&&t.setRequestHeader(E,J[E]);N&&!1!==N&&t.setRequestHeader("Content-Type",N);(!J||!("X-Requested-With"in J))&&t.setRequestHeader("X-Requested-With","XMLHttpRequest");l.notify&&l.notify.emit("send",v,u.promise.cancel);t.send(y)}catch(S){u.reject(S)}j(u);t=null;return i?u:u.promise}c.add("native-xhr",function(){return"undefined"!==typeof XMLHttpRequest});c.add("dojo-force-activex-xhr",function(){return c("activex")&&!document.addEventListener&&"file:"===window.location.protocol});c.add("native-xhr2",
-function(){if(c("native-xhr")){var a=new XMLHttpRequest;return"undefined"!==typeof a.addEventListener&&("undefined"===typeof opera||"undefined"!==typeof a.upload)}});c.add("native-formdata",function(){return"function"===typeof FormData});var b,f,a,k;c("native-xhr2")?(b=function(){return!this.isFulfilled()},k=function(a,b){b.xhr.abort()},a=function(a,b,d){function f(){b.handleResponse(d)}function c(a){a=new e("Unable to load "+d.url+" status: "+a.target.status,d);b.handleResponse(d,a)}function k(a){if(a.lengthComputable)d.loaded=
-a.loaded,d.total=a.total,b.progress(d)}a.addEventListener("load",f,!1);a.addEventListener("error",c,!1);a.addEventListener("progress",k,!1);return function(){a.removeEventListener("load",f,!1);a.removeEventListener("error",c,!1);a.removeEventListener("progress",k,!1)}}):(b=function(a){return a.xhr.readyState},f=function(a){return 4===a.xhr.readyState},k=function(a,b){var d=b.xhr,f=typeof d.abort;("function"===f||"object"===f||"unknown"===f)&&d.abort()});var d,p={data:null,query:null,sync:!1,method:"GET",
-headers:{"Content-Type":"application/x-www-form-urlencoded"}};h._create=function(){throw Error("XMLHTTP not available");};if(c("native-xhr")&&!c("dojo-force-activex-xhr"))h._create=function(){return new XMLHttpRequest};else if(c("activex"))try{new ActiveXObject("Msxml2.XMLHTTP"),h._create=function(){return new ActiveXObject("Msxml2.XMLHTTP")}}catch(m){try{new ActiveXObject("Microsoft.XMLHTTP"),h._create=function(){return new ActiveXObject("Microsoft.XMLHTTP")}}catch(n){}}l.addCommonMethods(h);return h})},
-"dojo/request/handlers":function(){define(["../json","../_base/kernel","../_base/array","../has"],function(e,j,i,l){function c(f){var a=b[f.options.handleAs];f.data=a?a(f):f.data||f.text;return f}l.add("activex","undefined"!==typeof ActiveXObject);var g;if(l("activex")){var h=["Msxml2.DOMDocument.6.0","Msxml2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML.DOMDocument"];g=function(b){var a=b.data;if(!a||!a.documentElement){var c=b.text;i.some(h,function(b){try{var f=new ActiveXObject(b);f.async=
-!1;f.loadXML(c);a=f}catch(m){return!1}return!0})}return a}}var b={javascript:function(b){return j.eval(b.text||"")},json:function(b){return e.parse(b.text||null)},xml:g};c.register=function(f,a){b[f]=a};return c})},"dojo/main":function(){define("./_base/kernel,./has,require,./sniff,./_base/lang,./_base/array,./_base/config,./ready,./_base/declare,./_base/connect,./_base/Deferred,./_base/json,./_base/Color,./has!dojo-firebug?./_firebug/firebug,./_base/browser,require".split(","),function(e,j,i,l,c,
-g,h,b){h.isDebug&&i(["./_firebug/firebug"]);var f=h.require;f&&(f=g.map(c.isArray(f)?f:[f],function(a){return a.replace(/\./g,"/")}),e.isAsync?i(f):b(1,function(){i(f)}));return e})},"dojo/ready":function(){define(["./_base/kernel","./has","require","./domReady","./_base/lang"],function(e,j,i,l,c){var g=0,h,b=[],f=0,a=function(){if(g&&!f&&b.length){f=1;var d=b.shift();try{d()}finally{f=0}f=0;b.length&&h(a)}};i.on("idle",a);h=function(){i.idle()&&a()};var j=e.ready=e.addOnLoad=function(a,f,k){var g=
-c._toArray(arguments);"number"!=typeof a?(k=f,f=a,a=1E3):g.shift();k=k?c.hitch.apply(e,g):function(){f()};k.priority=a;for(g=0;g<b.length&&a>=b[g].priority;g++);b.splice(g,0,k);h()},k=e.config.addOnLoad;if(k)j[c.isArray(k)?"apply":"call"](e,k);l(function(){g=1;e._postLoad=e.config.afterOnLoad=!0;b.length&&h(a)});return j})},"dojo/domReady":function(){define(["./has"],function(e){function j(a){h?a(l):b.push(a)}var i=this,l=document,c={loaded:1,complete:1},g="string"!=typeof l.readyState,h=!!c[l.readyState];
-if(g)l.readyState="loading";if(!h){var b=[],f=[],a=function(a){a=a||i.event;if(!(h||"readystatechange"==a.type&&!c[l.readyState])){h=1;if(g)l.readyState="complete";for(;b.length;)b.shift()(l)}},k=function(d,f){d.addEventListener(f,a,!1);b.push(function(){d.removeEventListener(f,a,!1)})};if(!e("dom-addeventlistener")){var k=function(d,f){f="on"+f;d.attachEvent(f,a);b.push(function(){d.detachEvent(f,a)})},d=l.createElement("div");try{d.doScroll&&null===i.frameElement&&f.push(function(){try{return d.doScroll("left"),
-1}catch(a){}})}catch(p){}}k(l,"DOMContentLoaded");k(i,"load");"onreadystatechange"in l?k(l,"readystatechange"):g||f.push(function(){return c[l.readyState]});if(f.length){var m=function(){if(!h){for(var b=f.length;b--;)if(f[b]()){a("poller");return}setTimeout(m,30)}};m()}}j.load=function(a,b,d){j(d)};return j})},"dojo/_base/declare":function(){define(["./kernel","../has","./lang"],function(e,j,i){function l(a,b){throw Error("declare"+(b?" "+b:"")+": "+a);}function c(a,b,d){var f,c,k,m,g,e,h,i=this._inherited=
-this._inherited||{};"string"==typeof a&&(f=a,a=b,b=d);d=0;m=a.callee;(f=f||m.nom)||l("can't deduce a name to call inherited()",this.declaredClass);g=this.constructor._meta;k=g.bases;h=i.p;if(f!=z){if(i.c!==m&&(h=0,e=k[0],g=e._meta,g.hidden[f]!==m)){(c=g.chains)&&"string"==typeof c[f]&&l("calling chained method with inherited: "+f,this.declaredClass);do if(g=e._meta,c=e.prototype,g&&(c[f]===m&&c.hasOwnProperty(f)||g.hidden[f]===m))break;while(e=k[++h]);h=e?h:-1}if(e=k[++h])if(c=e.prototype,e._meta&&
-c.hasOwnProperty(f))d=c[f];else{m=s[f];do if(c=e.prototype,(d=c[f])&&(e._meta?c.hasOwnProperty(f):d!==m))break;while(e=k[++h])}d=e&&d||s[f]}else{if(i.c!==m&&(h=0,(g=k[0]._meta)&&g.ctor!==m)){c=g.chains;for((!c||"manual"!==c.constructor)&&l("calling chained constructor with inherited",this.declaredClass);(e=k[++h])&&!((g=e._meta)&&g.ctor===m););h=e?h:-1}for(;(e=k[++h])&&!(d=(g=e._meta)?g.ctor:e););d=e&&d}i.c=d;i.p=h;if(d)return!0===b?d:d.apply(this,b||a)}function g(a,b){return"string"==typeof a?this.__inherited(a,
-b,!0):this.__inherited(a,!0)}function h(a,b,d){var f=this.getInherited(a,b);if(f)return f.apply(this,d||b||a)}function b(a){for(var b=this.constructor._meta.bases,d=0,f=b.length;d<f;++d)if(b[d]===a)return!0;return this instanceof a}function f(a,b){for(var d in b)d!=z&&b.hasOwnProperty(d)&&(a[d]=b[d]);if(j("bug-for-in-skips-shadowed"))for(var f=i._extraNames,c=f.length;c;)d=f[--c],d!=z&&b.hasOwnProperty(d)&&(a[d]=b[d])}function a(a){q.safeMixin(this.prototype,a);return this}function k(a){return q([this].concat(a))}
-function d(a,b){return function(){var w;var d=arguments,f=d,c=d[0],k,m;m=a.length;var g;if(!(this instanceof d.callee))return r(d);if(b&&(c&&c.preamble||this.preamble)){g=Array(a.length);g[0]=d;for(k=0;;){if(c=d[0])(c=c.preamble)&&(d=c.apply(this,d)||d);c=a[k].prototype;(c=c.hasOwnProperty("preamble")&&c.preamble)&&(d=c.apply(this,d)||d);if(++k==m)break;g[k]=d}}for(k=m-1;0<=k;--k)c=a[k],(w=(m=c._meta)?m.ctor:c,c=w)&&c.apply(this,g?g[k]:d);(c=this.postscript)&&c.apply(this,f)}}function p(a,b){return function(){var d=
-arguments,f=d,c=d[0];if(!(this instanceof d.callee))return r(d);if(b){if(c)(c=c.preamble)&&(f=c.apply(this,f)||f);(c=this.preamble)&&c.apply(this,f)}a&&a.apply(this,d);(c=this.postscript)&&c.apply(this,d)}}function m(a){return function(){var w;var b=arguments,d=0,f,c;if(!(this instanceof b.callee))return r(b);for(;f=a[d];++d)if(w=(c=f._meta)?c.ctor:f,f=w){f.apply(this,b);break}(f=this.postscript)&&f.apply(this,b)}}function n(a,b,d){return function(){var f,c,k=0,m=1;d&&(k=b.length-1,m=-1);for(;f=b[k];k+=
-m)c=f._meta,(f=(c?c.hidden:f.prototype)[a])&&f.apply(this,arguments)}}function o(a){t.prototype=a.prototype;a=new t;t.prototype=null;return a}function r(a){var b=a.callee,d=o(b);b.apply(d,a);return d}function q(e,h,j){"string"!=typeof e&&(j=h,h=e,e="");var j=j||{},r,t,B,A,w,x,K,H=1,C=h;if("[object Array]"==u.call(h)){H=e;B=[];A=[{cls:0,refs:[]}];x={};for(var F=1,O=h.length,D=0,L,T,G,M;D<O;++D){(L=h[D])?"[object Function]"!=u.call(L)&&l("mixin #"+D+" is not a callable constructor.",H):l("mixin #"+
-D+" is unknown. Did you use dojo.require to pull it in?",H);T=L._meta?L._meta.bases:[L];G=0;for(L=T.length-1;0<=L;--L){M=T[L].prototype;if(!M.hasOwnProperty("declaredClass"))M.declaredClass="uniqName_"+y++;M=M.declaredClass;x.hasOwnProperty(M)||(x[M]={count:0,refs:[],cls:T[L]},++F);M=x[M];G&&G!==M&&(M.refs.push(G),++G.count);G=M}++G.count;A[0].refs.push(G)}for(;A.length;){G=A.pop();B.push(G.cls);for(--F;t=G.refs,1==t.length;){G=t[0];if(!G||--G.count){G=0;break}B.push(G.cls);--F}if(G)for(D=0,O=t.length;D<
-O;++D)G=t[D],--G.count||A.push(G)}F&&l("can't build consistent linearization",H);L=h[0];B[0]=L?L._meta&&L===B[B.length-L._meta.bases.length]?L._meta.bases.length:1:0;x=B;B=x[0];H=x.length-B;h=x[H]}else x=[0],h?"[object Function]"==u.call(h)?(B=h._meta,x=x.concat(B?B.bases:h)):l("base class is not a callable constructor.",e):null!==h&&l("unknown base class. Did you use dojo.require to pull it in?",e);if(h)for(t=H-1;;--t){r=o(h);if(!t)break;B=x[t];(B._meta?f:v)(r,B.prototype);A=new Function;A.superclass=
-h;A.prototype=r;h=r.constructor=A}else r={};q.safeMixin(r,j);B=j.constructor;if(B!==s.constructor)B.nom=z,r.constructor=B;for(t=H-1;t;--t)(B=x[t]._meta)&&B.chains&&(K=v(K||{},B.chains));r["-chains-"]&&(K=v(K||{},r["-chains-"]));B=!K||!K.hasOwnProperty(z);x[0]=A=K&&"manual"===K.constructor?m(x):1==x.length?p(j.constructor,B):d(x,B);A._meta={bases:x,hidden:j,chains:K,parents:C,ctor:j.constructor};A.superclass=h&&h.prototype;A.extend=a;A.createSubclass=k;A.prototype=r;r.constructor=A;r.getInherited=
-g;r.isInstanceOf=b;r.inherited=I;r.__inherited=c;if(e)r.declaredClass=e,i.setObject(e,A);if(K)for(w in K)if(r[w]&&"string"==typeof K[w]&&w!=z)B=r[w]=n(w,x,"after"===K[w]),B.nom=w;return A}var v=i.mixin,s=Object.prototype,u=s.toString,t=new Function,y=0,z="constructor",I=e.config.isDebug?h:c;e.safeMixin=q.safeMixin=function(a,b){var d,f;for(d in b)if(f=b[d],(f!==s[d]||!(d in s))&&d!=z){if("[object Function]"==u.call(f))f.nom=d;a[d]=f}if(j("bug-for-in-skips-shadowed"))for(var c=i._extraNames,k=c.length;k;)if(d=
-c[--k],f=b[d],(f!==s[d]||!(d in s))&&d!=z){if("[object Function]"==u.call(f))f.nom=d;a[d]=f}return a};return e.declare=q})},"dojo/_base/connect":function(){define("./kernel,../on,../topic,../aspect,./event,../mouse,./sniff,./lang,../keys".split(","),function(e,j,i,l,c,g,h,b){function f(a,d,f,c,k){c=b.hitch(f,c);if(!a||!a.addEventListener&&!a.attachEvent)return l.after(a||e.global,d,c,!0);"string"==typeof d&&"on"==d.substring(0,2)&&(d=d.substring(2));if(!a)a=e.global;if(!k)switch(d){case "keypress":d=
-m;break;case "mouseenter":d=g.enter;break;case "mouseleave":d=g.leave}return j(a,d,c,k)}function a(a){a.keyChar=a.charCode?String.fromCharCode(a.charCode):"";a.charOrCode=a.keyChar||a.keyCode}h.add("events-keypress-typed",function(){var a={charCode:0};try{a=document.createEvent("KeyboardEvent"),(a.initKeyboardEvent||a.initKeyEvent).call(a,"keypress",!0,!0,null,!1,!1,!1,!1,9,3)}catch(b){}return 0==a.charCode&&!h("opera")});var k={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,229:113},d=h("mac")?"metaKey":"ctrlKey",p=function(d,f){var c=b.mixin({},d,f);a(c);c.preventDefault=function(){d.preventDefault()};c.stopPropagation=function(){d.stopPropagation()};return c},m;m=h("events-keypress-typed")?function(a,b){var d=j(a,"keydown",function(a){var d=a.keyCode,f=13!=d&&32!=d&&(27!=d||!h("ie"))&&(48>d||90<d)&&(96>d||111<d)&&(186>d||192<d)&&(219>d||222<d)&&229!=d;if(f||a.ctrlKey){f=f?0:d;if(a.ctrlKey){if(3==d||13==d)return b.call(a.currentTarget,a);f=95<f&&
-106>f?f-48:!a.shiftKey&&65<=f&&90>=f?f+32:k[f]||f}d=p(a,{type:"keypress",faux:!0,charCode:f});b.call(a.currentTarget,d);if(h("ie"))try{a.keyCode=d.keyCode}catch(c){}}}),f=j(a,"keypress",function(a){var d=a.charCode,a=p(a,{charCode:32<=d?d:0,faux:!0});return b.call(this,a)});return{remove:function(){d.remove();f.remove()}}}:h("opera")?function(a,b){return j(a,"keypress",function(a){var d=a.which;3==d&&(d=99);d=32>d&&!a.shiftKey?0:d;a.ctrlKey&&!a.shiftKey&&65<=d&&90>=d&&(d+=32);return b.call(this,p(a,
-{charCode:d}))})}:function(b,d){return j(b,"keypress",function(b){a(b);return d.call(this,b)})};var n={_keypress:m,connect:function(a,b,d,c,k){var m=arguments,g=[],e=0;g.push("string"==typeof m[0]?null:m[e++],m[e++]);var h=m[e+1];g.push("string"==typeof h||"function"==typeof h?m[e++]:null,m[e++]);for(h=m.length;e<h;e++)g.push(m[e]);return f.apply(this,g)},disconnect:function(a){a&&a.remove()},subscribe:function(a,d,f){return i.subscribe(a,b.hitch(d,f))},publish:function(a,b){return i.publish.apply(i,
-[a].concat(b))},connectPublisher:function(a,b,d){var f=function(){n.publish(a,arguments)};return d?n.connect(b,d,f):n.connect(b,f)},isCopyKey:function(a){return a[d]}};n.unsubscribe=n.disconnect;b.mixin(e,n);return n})},"dojo/topic":function(){define(["./Evented"],function(e){var j=new e;return{publish:function(e,l){return j.emit.apply(j,arguments)},subscribe:function(e,l){return j.on.apply(j,arguments)}}})},"dojo/_base/event":function(){define(["./kernel","../on","../has","../dom-geometry"],function(e,
-j,i,l){if(j._fixEvent){var c=j._fixEvent;j._fixEvent=function(g,b){(g=c(g,b))&&l.normalizeEvent(g);return g}}var g={fix:function(c,b){return j._fixEvent?j._fixEvent(c,b):c},stop:function(c){i("dom-addeventlistener")||c&&c.preventDefault?(c.preventDefault(),c.stopPropagation()):(c=c||window.event,c.cancelBubble=!0,j._preventDefault.call(c))}};e.fixEvent=g.fix;e.stopEvent=g.stop;return g})},"dojo/dom-geometry":function(){define(["./sniff","./_base/window","./dom","./dom-style"],function(e,j,i,l){function c(a,
-b,d,f,c,g){g=g||"px";a=a.style;if(!isNaN(b))a.left=b+g;if(!isNaN(d))a.top=d+g;if(0<=f)a.width=f+g;if(0<=c)a.height=c+g}function g(a){return"button"==a.tagName.toLowerCase()||"input"==a.tagName.toLowerCase()&&"button"==(a.getAttribute("type")||"").toLowerCase()}function h(a){return"border-box"==b.boxModel||"table"==a.tagName.toLowerCase()||g(a)}var b={boxModel:"content-box"};if(e("ie"))b.boxModel="BackCompat"==document.compatMode?"border-box":"content-box";b.getPadExtents=function(a,b){var a=i.byId(a),
-d=b||l.getComputedStyle(a),f=l.toPixelValue,c=f(a,d.paddingLeft),g=f(a,d.paddingTop),e=f(a,d.paddingRight),d=f(a,d.paddingBottom);return{l:c,t:g,r:e,b:d,w:c+e,h:g+d}};b.getBorderExtents=function(a,b){var a=i.byId(a),d=l.toPixelValue,f=b||l.getComputedStyle(a),c="none"!=f.borderLeftStyle?d(a,f.borderLeftWidth):0,g="none"!=f.borderTopStyle?d(a,f.borderTopWidth):0,e="none"!=f.borderRightStyle?d(a,f.borderRightWidth):0,d="none"!=f.borderBottomStyle?d(a,f.borderBottomWidth):0;return{l:c,t:g,r:e,b:d,w:c+
-e,h:g+d}};b.getPadBorderExtents=function(a,f){var a=i.byId(a),d=f||l.getComputedStyle(a),c=b.getPadExtents(a,d),d=b.getBorderExtents(a,d);return{l:c.l+d.l,t:c.t+d.t,r:c.r+d.r,b:c.b+d.b,w:c.w+d.w,h:c.h+d.h}};b.getMarginExtents=function(a,b){var a=i.byId(a),d=b||l.getComputedStyle(a),f=l.toPixelValue,c=f(a,d.marginLeft),g=f(a,d.marginTop),e=f(a,d.marginRight),d=f(a,d.marginBottom);return{l:c,t:g,r:e,b:d,w:c+e,h:g+d}};b.getMarginBox=function(a,f){var a=i.byId(a),d=f||l.getComputedStyle(a),c=b.getMarginExtents(a,
-d),m=a.offsetLeft-c.l,g=a.offsetTop-c.t,h=a.parentNode,j=l.toPixelValue;if(e("mozilla")){var q=parseFloat(d.left),d=parseFloat(d.top);!isNaN(q)&&!isNaN(d)?(m=q,g=d):h&&h.style&&(h=l.getComputedStyle(h),"visible"!=h.overflow&&(m+="none"!=h.borderLeftStyle?j(a,h.borderLeftWidth):0,g+="none"!=h.borderTopStyle?j(a,h.borderTopWidth):0))}else if((e("opera")||8==e("ie")&&!e("quirks"))&&h)h=l.getComputedStyle(h),m-="none"!=h.borderLeftStyle?j(a,h.borderLeftWidth):0,g-="none"!=h.borderTopStyle?j(a,h.borderTopWidth):
-0;return{l:m,t:g,w:a.offsetWidth+c.w,h:a.offsetHeight+c.h}};b.getContentBox=function(a,f){var a=i.byId(a),d=f||l.getComputedStyle(a),c=a.clientWidth,g=b.getPadExtents(a,d),h=b.getBorderExtents(a,d);c?(d=a.clientHeight,h.w=h.h=0):(c=a.offsetWidth,d=a.offsetHeight);e("opera")&&(g.l+=h.l,g.t+=h.t);return{l:g.l,t:g.t,w:c-g.w-h.w,h:d-g.h-h.h}};b.setContentSize=function(a,f,d){var a=i.byId(a),g=f.w,f=f.h;h(a)&&(d=b.getPadBorderExtents(a,d),0<=g&&(g+=d.w),0<=f&&(f+=d.h));c(a,NaN,NaN,g,f)};var f={l:0,t:0,
-w:0,h:0};b.setMarginBox=function(a,k,d){var a=i.byId(a),p=d||l.getComputedStyle(a),d=k.w,m=k.h,n=h(a)?f:b.getPadBorderExtents(a,p),p=b.getMarginExtents(a,p);if(e("webkit")&&g(a)){var j=a.style;if(0<=d&&!j.width)j.width="4px";if(0<=m&&!j.height)j.height="4px"}0<=d&&(d=Math.max(d-n.w-p.w,0));0<=m&&(m=Math.max(m-n.h-p.h,0));c(a,k.l,k.t,d,m)};b.isBodyLtr=function(a){a=a||j.doc;return"ltr"==(j.body(a).dir||a.documentElement.dir||"ltr").toLowerCase()};b.docScroll=function(a){var a=a||j.doc,f=j.doc.parentWindow||
-j.doc.defaultView;return"pageXOffset"in f?{x:f.pageXOffset,y:f.pageYOffset}:(f=e("quirks")?j.body(a):a.documentElement)&&{x:b.fixIeBiDiScrollLeft(f.scrollLeft||0,a),y:f.scrollTop||0}};if(e("ie"))b.getIeDocumentElementOffset=function(a){a=a||j.doc;a=a.documentElement;if(8>e("ie")){var b=a.getBoundingClientRect(),d=b.left,b=b.top;7>e("ie")&&(d+=a.clientLeft,b+=a.clientTop);return{x:0>d?0:d,y:0>b?0:b}}return{x:0,y:0}};b.fixIeBiDiScrollLeft=function(a,f){var f=f||j.doc,d=e("ie");if(d&&!b.isBodyLtr(f)){var c=
-e("quirks"),g=c?j.body(f):f.documentElement,h=j.global;6==d&&!c&&h.frameElement&&g.scrollHeight>g.clientHeight&&(a+=g.clientLeft);return 8>d||c?a+g.clientWidth-g.scrollWidth:-a}return a};b.position=function(a,f){var a=i.byId(a),d=j.body(a.ownerDocument),c=a.getBoundingClientRect(),c={x:c.left,y:c.top,w:c.right-c.left,h:c.bottom-c.top};if(e("ie")){var g=b.getIeDocumentElementOffset(a.ownerDocument);c.x-=g.x+(e("quirks")?d.clientLeft+d.offsetLeft:0);c.y-=g.y+(e("quirks")?d.clientTop+d.offsetTop:0)}f&&
-(d=b.docScroll(a.ownerDocument),c.x+=d.x,c.y+=d.y);return c};b.getMarginSize=function(a,f){var a=i.byId(a),d=b.getMarginExtents(a,f||l.getComputedStyle(a)),c=a.getBoundingClientRect();return{w:c.right-c.left+d.w,h:c.bottom-c.top+d.h}};b.normalizeEvent=function(a){if(!("layerX"in a))a.layerX=a.offsetX,a.layerY=a.offsetY;if(!e("dom-addeventlistener")){var f=a.target,f=f&&f.ownerDocument||document,d=e("quirks")?f.body:f.documentElement,c=b.getIeDocumentElementOffset(f);a.pageX=a.clientX+b.fixIeBiDiScrollLeft(d.scrollLeft||
-0,f)-c.x;a.pageY=a.clientY+(d.scrollTop||0)-c.y}};return b})},"dojo/dom-style":function(){define(["./sniff","./dom"],function(e,j){function i(b,d,f){d=d.toLowerCase();if(e("ie")){if("auto"==f){if("height"==d)return b.offsetHeight;if("width"==d)return b.offsetWidth}if("fontweight"==d)switch(f){case 700:return"bold";default:return"normal"}}d in a||(a[d]=k.test(d));return a[d]?g(b,f):f}var l,c={};l=e("webkit")?function(a){var b;if(1==a.nodeType){var d=a.ownerDocument.defaultView;b=d.getComputedStyle(a,
-null);if(!b&&a.style)a.style.display="",b=d.getComputedStyle(a,null)}return b||{}}:e("ie")&&(9>e("ie")||e("quirks"))?function(a){return 1==a.nodeType&&a.currentStyle?a.currentStyle:{}}:function(a){return 1==a.nodeType?a.ownerDocument.defaultView.getComputedStyle(a,null):{}};c.getComputedStyle=l;var g;g=e("ie")?function(a,b){if(!b)return 0;if("medium"==b)return 4;if(b.slice&&"px"==b.slice(-2))return parseFloat(b);var d=a.style,f=a.runtimeStyle,c=d.left,k=f.left;f.left=a.currentStyle.left;try{d.left=
-b,b=d.pixelLeft}catch(g){b=0}d.left=c;f.left=k;return b}:function(a,b){return parseFloat(b)||0};c.toPixelValue=g;var h=function(a,b){try{return a.filters.item("DXImageTransform.Microsoft.Alpha")}catch(d){return b?{}:null}},b=9>e("ie")||e("ie")&&e("quirks")?function(a){try{return h(a).Opacity/100}catch(b){return 1}}:function(a){return l(a).opacity},f=9>e("ie")||e("ie")&&e("quirks")?function(a,b){var d=100*b,c=1==b;a.style.zoom=c?"":1;if(h(a))h(a,1).Opacity=d;else{if(c)return b;a.style.filter+=" progid:DXImageTransform.Microsoft.Alpha(Opacity="+
-d+")"}h(a,1).Enabled=!c;if("tr"==a.tagName.toLowerCase())for(d=a.firstChild;d;d=d.nextSibling)"td"==d.tagName.toLowerCase()&&f(d,b);return b}:function(a,b){return a.style.opacity=b},a={left:!0,top:!0},k=/margin|padding|width|height|max|min|offset/,d=e("ie")?"styleFloat":"cssFloat",p={cssFloat:d,styleFloat:d,"float":d};c.get=function(a,d){var f=j.byId(a),k=arguments.length;if(2==k&&"opacity"==d)return b(f);var d=p[d]||d,g=c.getComputedStyle(f);return 1==k?g:i(f,d,g[d]||f.style[d])};c.set=function(a,
-b,d){var k=j.byId(a),g=arguments.length,e="opacity"==b,b=p[b]||b;if(3==g)return e?f(k,d):k.style[b]=d;for(var h in b)c.set(a,h,b[h]);return c.getComputedStyle(k)};return c})},"dojo/mouse":function(){define(["./_base/kernel","./on","./has","./dom","./_base/window"],function(e,j,i,l,c){function g(c,b){var f=function(a,f){return j(a,c,function(d){if(b)return b(d,f);if(!l.isDescendant(d.relatedTarget,a))return f.call(this,d)})};f.bubble=function(a){return g(c,function(b,d){var f=a(b.target),c=b.relatedTarget;
-if(f&&f!=(c&&1==c.nodeType&&a(c)))return d.call(f,b)})};return f}i.add("dom-quirks",c.doc&&"BackCompat"==c.doc.compatMode);i.add("events-mouseenter",c.doc&&"onmouseenter"in c.doc.createElement("div"));i.add("events-mousewheel",c.doc&&"onmousewheel"in c.doc);c=i("dom-quirks")&&i("ie")||!i("dom-addeventlistener")?{LEFT:1,MIDDLE:4,RIGHT:2,isButton:function(c,b){return c.button&b},isLeft:function(c){return c.button&1},isMiddle:function(c){return c.button&4},isRight:function(c){return c.button&2}}:{LEFT:0,
-MIDDLE:1,RIGHT:2,isButton:function(c,b){return c.button==b},isLeft:function(c){return 0==c.button},isMiddle:function(c){return 1==c.button},isRight:function(c){return 2==c.button}};e.mouseButtons=c;e=i("events-mousewheel")?"mousewheel":function(c,b){return j(c,"DOMMouseScroll",function(f){f.wheelDelta=-f.detail;b.call(this,f)})};return{_eventHandler:g,enter:g("mouseover"),leave:g("mouseout"),wheel:e,isLeft:c.isLeft,isMiddle:c.isMiddle,isRight:c.isRight}})},"dojo/keys":function(){define(["./_base/kernel",
-"./sniff"],function(e,j){return e.keys={BACKSPACE:8,TAB:9,CLEAR:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,META:j("webkit")?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,UP_DPAD:175,DOWN_DPAD:176,LEFT_DPAD:177,RIGHT_DPAD:178,copyKey:j("mac")&&!j("air")?j("safari")?91:224:17}})},"dojo/_base/Color":function(){define(["./kernel","./lang","./array","./config"],function(e,j,i,l){var c=e.Color=function(c){c&&this.setColor(c)};c.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:l.transparentColor||[0,0,0,0]};j.extend(c,{r:255,g:255,b:255,a:1,_set:function(c,e,b,f){this.r=c;this.g=e;this.b=b;this.a=f},setColor:function(g){j.isString(g)?c.fromString(g,this):j.isArray(g)?c.fromArray(g,this):(this._set(g.r,g.g,g.b,g.a),g instanceof c||
-this.sanitize());return this},sanitize:function(){return this},toRgb:function(){return[this.r,this.g,this.b]},toRgba:function(){return[this.r,this.g,this.b,this.a]},toHex:function(){return"#"+i.map(["r","g","b"],function(c){c=this[c].toString(16);return 2>c.length?"0"+c:c},this).join("")},toCss:function(c){var e=this.r+", "+this.g+", "+this.b;return(c?"rgba("+e+", "+this.a:"rgb("+e)+")"},toString:function(){return this.toCss(!0)}});c.blendColors=e.blendColors=function(g,e,b,f){var a=f||new c;i.forEach(["r",
-"g","b","a"],function(f){a[f]=g[f]+(e[f]-g[f])*b;"a"!=f&&(a[f]=Math.round(a[f]))});return a.sanitize()};c.fromRgb=e.colorFromRgb=function(g,e){var b=g.toLowerCase().match(/^rgba?\(([\s\.,0-9]+)\)/);return b&&c.fromArray(b[1].split(/\s*,\s*/),e)};c.fromHex=e.colorFromHex=function(g,e){var b=e||new c,f=4==g.length?4:8,a=(1<<f)-1,g=Number("0x"+g.substr(1));if(isNaN(g))return null;i.forEach(["b","g","r"],function(c){var d=g&a;g>>=f;b[c]=4==f?17*d:d});b.a=1;return b};c.fromArray=e.colorFromArray=function(g,
-e){var b=e||new c;b._set(Number(g[0]),Number(g[1]),Number(g[2]),Number(g[3]));if(isNaN(b.a))b.a=1;return b.sanitize()};c.fromString=e.colorFromString=function(g,e){var b=c.named[g];return b&&c.fromArray(b,e)||c.fromRgb(g,e)||c.fromHex(g,e)};return c})},"dojo/_base/browser":function(){require.has&&require.has.add("config-selectorEngine","acme");define("../ready,./kernel,./connect,./unload,./window,./event,./html,./NodeList,../query,./xhr,./fx".split(","),function(e){return e})},"dojo/_base/unload":function(){define(["./kernel",
-"./lang","../on"],function(e,j,i){var l=window,c={addOnWindowUnload:function(c,h){if(!e.windowUnloaded)i(l,"unload",e.windowUnloaded=function(){});i(l,"unload",j.hitch(c,h))},addOnUnload:function(c,e){i(l,"beforeunload",j.hitch(c,e))}};e.addOnWindowUnload=c.addOnWindowUnload;e.addOnUnload=c.addOnUnload;return c})},"dojo/_base/html":function(){define("./kernel,../dom,../dom-style,../dom-attr,../dom-prop,../dom-class,../dom-construct,../dom-geometry".split(","),function(e,j,i,l,c,g,h,b){e.byId=j.byId;
-e.isDescendant=j.isDescendant;e.setSelectable=j.setSelectable;e.getAttr=l.get;e.setAttr=l.set;e.hasAttr=l.has;e.removeAttr=l.remove;e.getNodeProp=l.getNodeProp;e.attr=function(b,a,c){return 2==arguments.length?l["string"==typeof a?"get":"set"](b,a):l.set(b,a,c)};e.hasClass=g.contains;e.addClass=g.add;e.removeClass=g.remove;e.toggleClass=g.toggle;e.replaceClass=g.replace;e._toDom=e.toDom=h.toDom;e.place=h.place;e.create=h.create;e.empty=function(b){h.empty(b)};e._destroyElement=e.destroy=function(b){h.destroy(b)};
-e._getPadExtents=e.getPadExtents=b.getPadExtents;e._getBorderExtents=e.getBorderExtents=b.getBorderExtents;e._getPadBorderExtents=e.getPadBorderExtents=b.getPadBorderExtents;e._getMarginExtents=e.getMarginExtents=b.getMarginExtents;e._getMarginSize=e.getMarginSize=b.getMarginSize;e._getMarginBox=e.getMarginBox=b.getMarginBox;e.setMarginBox=b.setMarginBox;e._getContentBox=e.getContentBox=b.getContentBox;e.setContentSize=b.setContentSize;e._isBodyLtr=e.isBodyLtr=b.isBodyLtr;e._docScroll=e.docScroll=
-b.docScroll;e._getIeDocumentElementOffset=e.getIeDocumentElementOffset=b.getIeDocumentElementOffset;e._fixIeBiDiScrollLeft=e.fixIeBiDiScrollLeft=b.fixIeBiDiScrollLeft;e.position=b.position;e.marginBox=function(f,a){return a?b.setMarginBox(f,a):b.getMarginBox(f)};e.contentBox=function(f,a){return a?b.setContentSize(f,a):b.getContentBox(f)};e.coords=function(f,a){e.deprecated("dojo.coords()","Use dojo.position() or dojo.marginBox().");var f=j.byId(f),c=i.getComputedStyle(f),c=b.getMarginBox(f,c),d=
-b.position(f,a);c.x=d.x;c.y=d.y;return c};e.getProp=c.get;e.setProp=c.set;e.prop=function(b,a,k){return 2==arguments.length?c["string"==typeof a?"get":"set"](b,a):c.set(b,a,k)};e.getStyle=i.get;e.setStyle=i.set;e.getComputedStyle=i.getComputedStyle;e.__toPixelValue=e.toPixelValue=i.toPixelValue;e.style=function(b,a,c){switch(arguments.length){case 1:return i.get(b);case 2:return i["string"==typeof a?"get":"set"](b,a)}return i.set(b,a,c)};return e})},"dojo/dom-attr":function(){define("exports,./sniff,./_base/lang,./dom,./dom-style,./dom-prop".split(","),
-function(e,j,i,l,c,g){function h(a,b){var d=a.getAttributeNode&&a.getAttributeNode(b);return d&&d.specified}var b={innerHTML:1,className:1,htmlFor:j("ie"),value:1},f={classname:"class",htmlfor:"for",tabindex:"tabIndex",readonly:"readOnly"};e.has=function(a,c){var d=c.toLowerCase();return b[g.names[d]||c]||h(l.byId(a),f[d]||c)};e.get=function(a,c){var a=l.byId(a),d=c.toLowerCase(),e=g.names[d]||c,m=a[e];if(b[e]&&"undefined"!=typeof m||"href"!=e&&("boolean"==typeof m||i.isFunction(m)))return m;d=f[d]||
-c;return h(a,d)?a.getAttribute(d):null};e.set=function(a,k,d){a=l.byId(a);if(2==arguments.length){for(var h in k)e.set(a,h,k[h]);return a}h=k.toLowerCase();var m=g.names[h]||k,j=b[m];if("style"==m&&"string"!=typeof d)return c.set(a,d),a;if(j||"boolean"==typeof d||i.isFunction(d))return g.set(a,k,d);a.setAttribute(f[h]||k,d);return a};e.remove=function(a,b){l.byId(a).removeAttribute(f[b.toLowerCase()]||b)};e.getNodeProp=function(a,b){var a=l.byId(a),d=b.toLowerCase(),c=g.names[d]||b;if(c in a&&"href"!=
-c)return a[c];d=f[d]||b;return h(a,d)?a.getAttribute(d):null}})},"dojo/dom-prop":function(){define("exports,./_base/kernel,./sniff,./_base/lang,./dom,./dom-style,./dom-construct,./_base/connect".split(","),function(e,j,i,l,c,g,h,b){var f={},a=0,k=j._scopeName+"attrid";e.names={"class":"className","for":"htmlFor",tabindex:"tabIndex",readonly:"readOnly",colspan:"colSpan",frameborder:"frameBorder",rowspan:"rowSpan",valuetype:"valueType"};e.get=function(a,b){var a=c.byId(a),f=b.toLowerCase();return a[e.names[f]||
-b]};e.set=function(d,j,m){d=c.byId(d);if(2==arguments.length&&"string"!=typeof j){for(var n in j)e.set(d,n,j[n]);return d}n=j.toLowerCase();n=e.names[n]||j;if("style"==n&&"string"!=typeof m)return g.set(d,m),d;if("innerHTML"==n)return i("ie")&&d.tagName.toLowerCase()in{col:1,colgroup:1,table:1,tbody:1,tfoot:1,thead:1,tr:1,title:1}?(h.empty(d),d.appendChild(h.toDom(m,d.ownerDocument))):d[n]=m,d;if(l.isFunction(m)){var o=d[k];o||(o=a++,d[k]=o);f[o]||(f[o]={});var r=f[o][n];if(r)b.disconnect(r);else try{delete d[n]}catch(q){}m?
-f[o][n]=b.connect(d,n,m):d[n]=null;return d}d[n]=m;return d}})},"dojo/dom-construct":function(){define("exports,./_base/kernel,./sniff,./_base/window,./dom,./dom-attr,./on".split(","),function(e,j,i,l,c,g,h){function b(a,b){var d=b.parentNode;d&&d.insertBefore(a,b)}var f={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"]},
-a=/<\s*([\w\:]+)/,k={},d=0,p="__"+j._scopeName+"ToDomId",m;for(m in f)if(f.hasOwnProperty(m))j=f[m],j.pre="option"==m?'<select multiple="multiple">':"<"+j.join("><")+">",j.post="</"+j.reverse().join("></")+">";var n=null,o;h(window,"unload",function(){n=null});e.toDom=function(b,c){var c=c||l.doc,g=c[p];g||(c[p]=g=++d+"",k[g]=c.createElement("div"));var b=b+"",e=b.match(a),m=e?e[1].toLowerCase():"",g=k[g];if(e&&f[m]){e=f[m];g.innerHTML=e.pre+b+e.post;for(e=e.length;e;--e)g=g.firstChild}else g.innerHTML=
-b;if(1==g.childNodes.length)return g.removeChild(g.firstChild);for(m=c.createDocumentFragment();e=g.firstChild;)m.appendChild(e);return m};e.place=function(a,d,f){d=c.byId(d);"string"==typeof a&&(a=/^\s*</.test(a)?e.toDom(a,d.ownerDocument):c.byId(a));if("number"==typeof f){var g=d.childNodes;!g.length||g.length<=f?d.appendChild(a):b(a,g[0>f?0:f])}else switch(f){case "before":b(a,d);break;case "after":f=a;(g=d.parentNode)&&(g.lastChild==d?g.appendChild(f):g.insertBefore(f,d.nextSibling));break;case "replace":d.parentNode.replaceChild(a,
-d);break;case "only":e.empty(d);d.appendChild(a);break;case "first":if(d.firstChild){b(a,d.firstChild);break}default:d.appendChild(a)}return a};e.create=function(a,b,d,f){var k=l.doc;if(d)d=c.byId(d),k=d.ownerDocument;"string"==typeof a&&(a=k.createElement(a));b&&g.set(a,b);d&&e.place(a,d,f);return a};e.empty=i("ie")?function(a){for(var a=c.byId(a),b;b=a.lastChild;)e.destroy(b)}:function(a){c.byId(a).innerHTML=""};e.destroy=function(a){a=c.byId(a);try{var b=a.ownerDocument;if(!n||o!=b)n=b.createElement("div"),
-o=b;n.appendChild(a.parentNode?a.parentNode.removeChild(a):a);n.innerHTML=""}catch(d){}}})},"dojo/dom-class":function(){define(["./_base/lang","./_base/array","./dom"],function(e,j,i){function l(b){if("string"==typeof b||b instanceof String){if(b&&!g.test(b))return h[0]=b,h;b=b.split(g);b.length&&!b[0]&&b.shift();b.length&&!b[b.length-1]&&b.pop();return b}return!b?[]:j.filter(b,function(a){return a})}var c,g=/\s+/,h=[""],b={};return c={contains:function(b,a){return 0<=(" "+i.byId(b).className+" ").indexOf(" "+
-a+" ")},add:function(b,a){var b=i.byId(b),a=l(a),c=b.className,d,c=c?" "+c+" ":" ";d=c.length;for(var g=0,e=a.length,h;g<e;++g)(h=a[g])&&0>c.indexOf(" "+h+" ")&&(c+=h+" ");d<c.length&&(b.className=c.substr(1,c.length-2))},remove:function(b,a){var b=i.byId(b),c;if(void 0!==a){a=l(a);c=" "+b.className+" ";for(var d=0,g=a.length;d<g;++d)c=c.replace(" "+a[d]+" "," ");c=e.trim(c)}else c="";b.className!=c&&(b.className=c)},replace:function(f,a,g){f=i.byId(f);b.className=f.className;c.remove(b,g);c.add(b,
-a);f.className!==b.className&&(f.className=b.className)},toggle:function(b,a,g){b=i.byId(b);if(void 0===g)for(var a=l(a),d=0,e=a.length,m;d<e;++d)m=a[d],c[c.contains(b,m)?"remove":"add"](b,m);else c[g?"add":"remove"](b,a);return g}}})},"dojo/_base/NodeList":function(){define(["./kernel","../query","./array","./html","../NodeList-dom"],function(e,j,i){var j=j.NodeList,l=j.prototype;l.connect=j._adaptAsForEach(function(){return e.connect.apply(this,arguments)});l.coords=j._adaptAsMap(e.coords);j.events=
-"blur,focus,change,click,error,keydown,keypress,keyup,load,mousedown,mouseenter,mouseleave,mousemove,mouseout,mouseover,mouseup,submit".split(",");i.forEach(j.events,function(c){var g="on"+c;l[g]=function(c,b){return this.connect(g,c,b)}});return e.NodeList=j})},"dojo/query":function(){define("./_base/kernel,./has,./dom,./on,./_base/array,./_base/lang,./selector/_loader,./selector/_loader!default".split(","),function(e,j,i,l,c,g,h,b){function f(a,b){var d=function(d,c){if("string"==typeof c&&(c=i.byId(c),
-!c))return new b([]);var f="string"==typeof d?a(d,c):d?d.orphan?d:[d]:[];return f.orphan?f:new b(f)};d.matches=a.match||function(a,b,c){return 0<d.filter([a],b,c).length};d.filter=a.filter||function(a,b,f){return d(b,f).filter(function(b){return-1<c.indexOf(a,b)})};if("function"!=typeof a)var f=a.search,a=function(a,b){return f(b||document,a)};return d}j.add("array-extensible",function(){return 1==g.delegate([],{length:1}).length&&!j("bug-for-in-skips-shadowed")});var a=Array.prototype,k=a.slice,
-d=a.concat,p=c.forEach,m=function(a,b,d){b=[0].concat(k.call(b,0));d=d||e.global;return function(c){b[0]=c;return a.apply(d,b)}},n=function(a){var b=this instanceof o&&j("array-extensible");"number"==typeof a&&(a=Array(a));var d=a&&"length"in a?a:arguments;if(b||!d.sort){for(var c=b?this:[],f=c.length=d.length,e=0;e<f;e++)c[e]=d[e];if(b)return c;d=c}g._mixin(d,r);d._NodeListCtor=function(a){return o(a)};return d},o=n,r=o.prototype=j("array-extensible")?[]:{};o._wrap=r._wrap=function(a,b,d){a=new (d||
-this._NodeListCtor||o)(a);return b?a._stash(b):a};o._adaptAsMap=function(a,b){return function(){return this.map(m(a,arguments,b))}};o._adaptAsForEach=function(a,b){return function(){this.forEach(m(a,arguments,b));return this}};o._adaptAsFilter=function(a,b){return function(){return this.filter(m(a,arguments,b))}};o._adaptWithCondition=function(a,b,d){return function(){var c=arguments,f=m(a,c,d);if(b.call(d||e.global,c))return this.map(f);this.forEach(f);return this}};p(["slice","splice"],function(b){var d=
-a[b];r[b]=function(){return this._wrap(d.apply(this,arguments),"slice"==b?this:null)}});p(["indexOf","lastIndexOf","every","some"],function(a){var b=c[a];r[a]=function(){return b.apply(e,[this].concat(k.call(arguments,0)))}});g.extend(n,{constructor:o,_NodeListCtor:o,toString:function(){return this.join(",")},_stash:function(a){this._parent=a;return this},on:function(a,b){var d=this.map(function(d){return l(d,a,b)});d.remove=function(){for(var a=0;a<d.length;a++)d[a].remove()};return d},end:function(){return this._parent?
-this._parent:new this._NodeListCtor(0)},concat:function(a){var b=k.call(this,0),f=c.map(arguments,function(a){return k.call(a,0)});return this._wrap(d.apply(b,f),this)},map:function(a,b){return this._wrap(c.map(this,a,b),this)},forEach:function(a,b){p(this,a,b);return this},filter:function(a){var b=arguments,d=this,f=0;if("string"==typeof a){d=q._filterResult(this,b[0]);if(1==b.length)return d._stash(this);f=1}return this._wrap(c.filter(d,b[f],b[f+1]),this)},instantiate:function(a,b){var d=g.isFunction(a)?
-a:g.getObject(a),b=b||{};return this.forEach(function(a){new d(b,a)})},at:function(){var a=new this._NodeListCtor(0);p(arguments,function(b){0>b&&(b=this.length+b);this[b]&&a.push(this[b])},this);return a._stash(this)}});var q=f(b,n);e.query=f(b,function(a){return n(a)});q.load=function(a,b,d){h.load(a,b,function(a){d(f(a,n))})};e._filterQueryResult=q._filterResult=function(a,b,d){return new n(q.filter(a,b,d))};e.NodeList=q.NodeList=n;return q})},"dojo/selector/_loader":function(){define(["../has",
-"require"],function(e,j){var i=document.createElement("div");e.add("dom-qsa2.1",!!i.querySelectorAll);e.add("dom-qsa3",function(){try{return i.innerHTML="<p class='TEST'></p>",1==i.querySelectorAll(".TEST:empty").length}catch(c){}});var l;return{load:function(c,g,h){var b=j,c="default"==c?e("config-selectorEngine")||"css3":c,c="css2"==c||"lite"==c?"./lite":"css2.1"==c?e("dom-qsa2.1")?"./lite":"./acme":"css3"==c?e("dom-qsa3")?"./lite":"./acme":"acme"==c?"./acme":(b=g)&&c;if("?"==c.charAt(c.length-
-1))var c=c.substring(0,c.length-1),f=!0;if(f&&(e("dom-compliant-qsa")||l))return h(l);b([c],function(a){"./lite"!=c&&(l=a);h(a)})}}})},"dojo/selector/acme":function(){define(["../dom","../sniff","../_base/array","../_base/lang","../_base/window"],function(e,j,i,l,c){var g=l.trim,h=i.forEach,b="BackCompat"==c.doc.compatMode,f=!1,a=function(){return!0},k=function(a){for(var a=0<=">~+".indexOf(a.slice(-1))?a+" * ":a+" ",b=function(b,d){return g(a.slice(b,d))},d=[],c=-1,e=-1,k=-1,m=-1,h=-1,l=-1,i=-1,
-j,n="",p="",o,q=0,u=a.length,r=null,t=null,v=function(){if(0<=l)r.id=b(l,q).replace(/\\/g,""),l=-1;if(0<=i){var a=i==q?null:b(i,q);r[0>">~+".indexOf(a)?"tag":"oper"]=a;i=-1}0<=h&&(r.classes.push(b(h+1,q).replace(/\\/g,"")),h=-1)};n=p,p=a.charAt(q),q<u;q++)if("\\"!=n)if(r||(o=q,r={query:null,pseudos:[],attrs:[],classes:[],tag:null,oper:null,id:null,getTag:function(){return f?this.otag:this.tag}},i=q),j)p==j&&(j=null);else if("'"==p||'"'==p)j=p;else if(0<=c)if("]"==p){t.attr?t.matchFor=b(k||c+1,q):
-t.attr=b(c+1,q);if((c=t.matchFor)&&('"'==c.charAt(0)||"'"==c.charAt(0)))t.matchFor=c.slice(1,-1);if(t.matchFor)t.matchFor=t.matchFor.replace(/\\/g,"");r.attrs.push(t);t=null;c=k=-1}else{if("="==p)k=0<="|~^$*".indexOf(n)?n:"",t.type=k+p,t.attr=b(c+1,q-k.length),k=q+1}else if(0<=e){if(")"==p){if(0<=m)t.value=b(e+1,q);m=e=-1}}else if("#"==p)v(),l=q+1;else if("."==p)v(),h=q;else if(":"==p)v(),m=q;else if("["==p)v(),c=q,t={};else if("("==p)0<=m&&(t={name:b(m+1,q),value:null},r.pseudos.push(t)),e=q;else if(" "==
-p&&n!=p){v();0<=m&&r.pseudos.push({name:b(m+1,q)});r.loops=r.pseudos.length||r.attrs.length||r.classes.length;r.oquery=r.query=b(o,q);r.otag=r.tag=r.oper?null:r.tag||"*";if(r.tag)r.tag=r.tag.toUpperCase();if(d.length&&d[d.length-1].oper)r.infixOper=d.pop(),r.query=r.infixOper.query+" "+r.query;d.push(r);r=null}return d},d=function(a,b){return!a?b:!b?a:function(){return a.apply(window,arguments)&&b.apply(window,arguments)}},p=function(a,b){var d=b||[];a&&d.push(a);return d},m=function(a){return 1==
-a.nodeType},n=function(a,b){return!a?"":"class"==b?a.className||"":"for"==b?a.htmlFor||"":"style"==b?a.style.cssText||"":(f?a.getAttribute(b):a.getAttribute(b,2))||""},o={"*=":function(a,b){return function(d){return 0<=n(d,a).indexOf(b)}},"^=":function(a,b){return function(d){return 0==n(d,a).indexOf(b)}},"$=":function(a,b){return function(d){var d=" "+n(d,a),c=d.lastIndexOf(b);return-1<c&&c==d.length-b.length}},"~=":function(a,b){var d=" "+b+" ";return function(b){return 0<=(" "+n(b,a)+" ").indexOf(d)}},
-"|=":function(a,b){var d=b+"-";return function(c){c=n(c,a);return c==b||0==c.indexOf(d)}},"=":function(a,b){return function(d){return n(d,a)==b}}},r="undefined"==typeof c.doc.firstChild.nextElementSibling,q=!r?"nextElementSibling":"nextSibling",v=!r?"previousElementSibling":"previousSibling",s=r?m:a,u=function(a){for(;a=a[v];)if(s(a))return!1;return!0},t=function(a){for(;a=a[q];)if(s(a))return!1;return!0},y=function(a){var b=a.parentNode,b=7!=b.nodeType?b:b.nextSibling,d=0,c=b.children||b.childNodes,
-f=a._i||a.getAttribute("_i")||-1,g=b._l||("undefined"!==typeof b.getAttribute?b.getAttribute("_l"):-1);if(!c)return-1;c=c.length;if(g==c&&0<=f&&0<=g)return f;j("ie")&&"undefined"!==typeof b.setAttribute?b.setAttribute("_l",c):b._l=c;f=-1;for(b=b.firstElementChild||b.firstChild;b;b=b[q])if(s(b))j("ie")?b.setAttribute("_i",++d):b._i=++d,a===b&&(f=d);return f},z=function(a){return!(y(a)%2)},I=function(a){return y(a)%2},J={checked:function(){return function(a){return!!("checked"in a?a.checked:a.selected)}},
-disabled:function(){return function(a){return a.disabled}},enabled:function(){return function(a){return!a.disabled}},"first-child":function(){return u},"last-child":function(){return t},"only-child":function(){return function(a){return u(a)&&t(a)}},empty:function(){return function(a){for(var b=a.childNodes,a=a.childNodes.length-1;0<=a;a--){var d=b[a].nodeType;if(1===d||3==d)return!1}return!0}},contains:function(a,b){var d=b.charAt(0);if('"'==d||"'"==d)b=b.slice(1,-1);return function(a){return 0<=
-a.innerHTML.indexOf(b)}},not:function(a,b){var d=k(b)[0],c={el:1};if("*"!=d.tag)c.tag=1;if(!d.classes.length)c.classes=1;var f=E(d,c);return function(a){return!f(a)}},"nth-child":function(a,b){var d=parseInt;if("odd"==b)return I;if("even"==b)return z;if(-1!=b.indexOf("n")){var c=b.split("n",2),f=c[0]?"-"==c[0]?-1:d(c[0]):1,g=c[1]?d(c[1]):0,e=0,k=-1;0<f?0>g?g=g%f&&f+g%f:0<g&&(g>=f&&(e=g-g%f),g%=f):0>f&&(f*=-1,0<g&&(k=g,g%=f));if(0<f)return function(a){a=y(a);return a>=e&&(0>k||a<=k)&&a%f==g};b=g}var m=
-d(b);return function(a){return y(a)==m}}},N=j("ie")&&(9>j("ie")||j("quirks"))?function(a){var b=a.toLowerCase();"class"==b&&(a="className");return function(d){return f?d.getAttribute(a):d[a]||d[b]}}:function(a){return function(b){return b&&b.getAttribute&&b.hasAttribute(a)}},E=function(b,c){if(!b)return a;var c=c||{},g=null;"el"in c||(g=d(g,m));"tag"in c||"*"!=b.tag&&(g=d(g,function(a){return a&&(f?a.tagName:a.tagName.toUpperCase())==b.getTag()}));"classes"in c||h(b.classes,function(a,b){var c=RegExp("(?:^|\\s)"+
-a+"(?:\\s|$)");g=d(g,function(a){return c.test(a.className)});g.count=b});"pseudos"in c||h(b.pseudos,function(a){var b=a.name;J[b]&&(g=d(g,J[b](b,a.value)))});"attrs"in c||h(b.attrs,function(a){var b,c=a.attr;a.type&&o[a.type]?b=o[a.type](c,a.matchFor):c.length&&(b=N(c));b&&(g=d(g,b))});"id"in c||b.id&&(g=d(g,function(a){return!!a&&a.id==b.id}));g||"default"in c||(g=a);return g},S=function(a){return function(b,d,c){for(;b=b[q];)if(!r||m(b)){(!c||P(b,c))&&a(b)&&d.push(b);break}return d}},Q=function(a){return function(b,
-d,c){for(b=b[q];b;){if(s(b)){if(c&&!P(b,c))break;a(b)&&d.push(b)}b=b[q]}return d}},B=function(b){b=b||a;return function(a,d,c){for(var f=0,g=a.children||a.childNodes;a=g[f++];)s(a)&&(!c||P(a,c))&&b(a,f)&&d.push(a);return d}},A={},w=function(d){var f=A[d.query];if(f)return f;var g=d.infixOper,g=g?g.oper:"",k=E(d,{el:1}),m="*"==d.tag,h=c.doc.getElementsByClassName;if(g){h={el:1};if(m)h.tag=1;k=E(d,h);"+"==g?f=S(k):"~"==g?f=Q(k):">"==g&&(f=B(k))}else if(d.id)k=!d.loops&&m?a:E(d,{el:1,id:1}),f=function(a,
-b){var c=e.byId(d.id,a.ownerDocument||a);if(c&&k(c)){if(9==a.nodeType)return p(c,b);for(var f=c.parentNode;f&&!(f==a);)f=f.parentNode;if(f)return p(c,b)}};else if(h&&/\{\s*\[native code\]\s*\}/.test(""+h)&&d.classes.length&&!b)var k=E(d,{el:1,classes:1,id:1}),l=d.classes.join(" "),f=function(a,b,d){for(var b=p(0,b),c,f=0,g=a.getElementsByClassName(l);c=g[f++];)k(c,a)&&P(c,d)&&b.push(c);return b};else!m&&!d.loops?f=function(a,b,c){for(var b=p(0,b),f=0,g=d.getTag(),g=g?a.getElementsByTagName(g):[];a=
-g[f++];)P(a,c)&&b.push(a);return b}:(k=E(d,{el:1,tag:1,id:1}),f=function(a,b,c){for(var b=p(0,b),f,g=0,e=(f=d.getTag())?a.getElementsByTagName(f):[];f=e[g++];)k(f,a)&&P(f,c)&&b.push(f);return b});return A[d.query]=f},x={},K={},H=function(a){var b=k(g(a));if(1==b.length){var d=w(b[0]);return function(a){if(a=d(a,[]))a.nozip=!0;return a}}return function(a){for(var a=p(a),d,c,f=b.length,g,e,k=0;k<f;k++){e=[];d=b[k];c=a.length-1;if(0<c)g={},e.nozip=!0;c=w(d);for(var m=0;d=a[m];m++)c(d,e,g);if(!e.length)break;
-a=e}return e}},C=j("ie")?"commentStrip":"nozip",F=!!c.doc.querySelectorAll,O=/\\[>~+]|n\+\d|([^ \\])?([>~+])([^ =])?/g,D=function(a,b,d,c){return d?(b?b+" ":"")+d+(c?" "+c:""):a},L=/([^[]*)([^\]]*])?/g,T=function(a,b,d){return b.replace(O,D)+(d||"")},G=function(a,d){a=a.replace(L,T);if(F){var c=K[a];if(c&&!d)return c}if(c=x[a])return c;var c=a.charAt(0),f=-1==a.indexOf(" ");0<=a.indexOf("#")&&f&&(d=!0);if(F&&!d&&-1==">~+".indexOf(c)&&(!j("ie")||-1==a.indexOf(":"))&&!(b&&0<=a.indexOf("."))&&-1==a.indexOf(":contains")&&
--1==a.indexOf(":checked")&&-1==a.indexOf("|=")){var g=0<=">~+".indexOf(a.charAt(a.length-1))?a+" *":a;return K[a]=function(b){try{if(!(9==b.nodeType||f))throw"";var d=b.querySelectorAll(g);d[C]=!0;return d}catch(c){return G(a,!0)(b)}}}var e=a.match(/([^\s,](?:"(?:\\.|[^"])+"|'(?:\\.|[^'])+'|[^,])*)/g);return x[a]=2>e.length?H(a):function(a){for(var b=0,d=[],c;c=e[b++];)d=d.concat(H(c)(a));return d}},M=0,X=j("ie")?function(a){return f?a.getAttribute("_uid")||a.setAttribute("_uid",++M)||M:a.uniqueID}:
-function(a){return a._uid||(a._uid=++M)},P=function(a,b){if(!b)return 1;var d=X(a);return!b[d]?b[d]=1:0},Y=function(a){if(a&&a.nozip)return a;var b=[];if(!a||!a.length)return b;a[0]&&b.push(a[0]);if(2>a.length)return b;M++;var d,c;if(j("ie")&&f){var g=M+"";a[0].setAttribute("_zipIdx",g);for(d=1;c=a[d];d++)a[d].getAttribute("_zipIdx")!=g&&b.push(c),c.setAttribute("_zipIdx",g)}else if(j("ie")&&a.commentStrip)try{for(d=1;c=a[d];d++)m(c)&&b.push(c)}catch(e){}else{a[0]&&(a[0]._zipIdx=M);for(d=1;c=a[d];d++)a[d]._zipIdx!=
-M&&b.push(c),c._zipIdx=M}return b},U=function(a,b){b=b||c.doc;f="div"===(b.ownerDocument||b).createElement("div").tagName;var d=G(a)(b);return d&&d.nozip?d:Y(d)};U.filter=function(a,b,d){for(var c=[],f=k(b),f=1==f.length&&!/[^\w#\.]/.test(b)?E(f[0]):function(a){return-1!=i.indexOf(U(b,e.byId(d)),a)},g=0,m;m=a[g];g++)f(m)&&c.push(m);return c};return U})},"dojo/NodeList-dom":function(){define("dojo/NodeList-dom","./_base/kernel,./query,./_base/array,./_base/lang,./dom-class,./dom-construct,./dom-geometry,./dom-attr,./dom-style".split(","),
-function(e,j,i,l,c,g,h,b,f){function a(a){return function(b,d,c){return 2==arguments.length?a["string"==typeof d?"get":"set"](b,d):a.set(b,d,c)}}var k=function(a){return 1==a.length&&"string"==typeof a[0]},d=function(a){var b=a.parentNode;b&&b.removeChild(a)},p=j.NodeList,m=p._adaptWithCondition,n=p._adaptAsForEach,o=p._adaptAsMap;l.extend(p,{_normalize:function(a,b){var d=!0===a.parse;if("string"==typeof a.template)var c=a.templateFunc||e.string&&e.string.substitute,a=c?c(a.template,a):a;c=typeof a;
-"string"==c||"number"==c?(a=g.toDom(a,b&&b.ownerDocument),a=11==a.nodeType?l._toArray(a.childNodes):[a]):l.isArrayLike(a)?l.isArray(a)||(a=l._toArray(a)):a=[a];if(d)a._runParse=!0;return a},_cloneNode:function(a){return a.cloneNode(!0)},_place:function(a,b,d,c){if(!(1!=b.nodeType&&"only"==d))for(var f,k=a.length,m=k-1;0<=m;m--){var h=c?this._cloneNode(a[m]):a[m];if(a._runParse&&e.parser&&e.parser.parse){f||(f=b.ownerDocument.createElement("div"));f.appendChild(h);e.parser.parse(f);for(h=f.firstChild;f.firstChild;)f.removeChild(f.firstChild)}m==
-k-1?g.place(h,b,d):b.parentNode.insertBefore(h,b);b=h}},position:o(h.position),attr:m(a(b),k),style:m(a(f),k),addClass:n(c.add),removeClass:n(c.remove),toggleClass:n(c.toggle),replaceClass:n(c.replace),empty:n(g.empty),removeAttr:n(b.remove),marginBox:o(h.getMarginBox),place:function(a,b){var d=j(a)[0];return this.forEach(function(a){g.place(a,d,b)})},orphan:function(a){return(a?j._filterResult(this,a):this).forEach(d)},adopt:function(a,b){return j(a).place(this[0],b)._stash(this)},query:function(a){if(!a)return this;
-var b=new p;this.map(function(d){j(a,d).forEach(function(a){void 0!==a&&b.push(a)})});return b._stash(this)},filter:function(a){var b=arguments,d=this,c=0;if("string"==typeof a){d=j._filterResult(this,b[0]);if(1==b.length)return d._stash(this);c=1}return this._wrap(i.filter(d,b[c],b[c+1]),this)},addContent:function(a,b){for(var a=this._normalize(a,this[0]),d=0,c;c=this[d];d++)this._place(a,c,b,0<d);return this}});return p})},"dojo/_base/fx":function(){define("./kernel,./config,./lang,../Evented,./Color,./connect,./sniff,../dom,../dom-style".split(","),
-function(e,j,i,l,c,g,h,b,f){var a=i.mixin,k={},d=k._Line=function(a,b){this.start=a;this.end=b};d.prototype.getValue=function(a){return(this.end-this.start)*a+this.start};var p=k.Animation=function(b){a(this,b);if(i.isArray(this.curve))this.curve=new d(this.curve[0],this.curve[1])};p.prototype=new l;i.extend(p,{duration:350,repeat:0,rate:20,_percent:0,_startRepeatCount:0,_getStep:function(){var a=this._percent,b=this.easing;return b?b(a):a},_fire:function(a,b){var d=b||[];if(this[a])if(j.debugAtAllCosts)this[a].apply(this,
-d);else try{this[a].apply(this,d)}catch(c){}return this},play:function(a,b){this._delayTimer&&this._clearTimer();if(b)this._stopTimer(),this._active=this._paused=!1,this._percent=0;else if(this._active&&!this._paused)return this;this._fire("beforeBegin",[this.node]);var d=a||this.delay,c=i.hitch(this,"_play",b);if(0<d)return this._delayTimer=setTimeout(c,d),this;c();return this},_play:function(){this._delayTimer&&this._clearTimer();this._startTime=(new Date).valueOf();this._paused&&(this._startTime-=
+a};o.prototype.remove=function(){delete _dojoIEListeners_[this.handle]};var r=function(a){return function(d){var d=b._fixEvent(d,this),g=a.call(this,d);d.modified&&(n||setTimeout(function(){n=null}),n=d);return g}},q=function(a,b,d){d=r(d);if(((a.ownerDocument?a.ownerDocument.parentWindow:a.parentWindow||a.window||window)!=top||5.8>h("jscript"))&&!h("config-_allow_leaks")){"undefined"==typeof _dojoIEListeners_&&(_dojoIEListeners_=[]);var g=a[b];if(!g||!g.listeners){var c=g,g=Function("event","var callee = arguments.callee; for(var i = 0; i<callee.listeners.length; i++){var listener = _dojoIEListeners_[callee.listeners[i]]; if(listener){listener.call(this,event);}}");
+g.listeners=[];a[b]=g;g.global=this;c&&g.listeners.push(_dojoIEListeners_.push(c)-1)}g.listeners.push(a=g.global._dojoIEListeners_.push(d)-1);return new o(a)}return f.after(a,b,d,!0)},v=function(){this.cancelBubble=!0},s=b._preventDefault=function(){this.bubbledKeyCode=this.keyCode;if(this.ctrlKey)try{this.keyCode=0}catch(a){}this.defaultPrevented=!0;this.returnValue=!1}}if(h("touch"))var t=function(){},u=window.orientation,y=function(a){return function(b){var d=b.corrected;if(!d){var g=b.type;try{delete b.type}catch(c){}b.type?
+(t.prototype=b,d=new t,d.preventDefault=function(){b.preventDefault()},d.stopPropagation=function(){b.stopPropagation()}):(d=b,d.type=g);b.corrected=d;if("resize"==g){if(u==window.orientation)return null;u=window.orientation;d.type="orientationchange";return a.call(this,d)}if(!("rotation"in d))d.rotation=0,d.scale=1;var g=d.changedTouches[0],e;for(e in g)delete d[e],d[e]=g[e]}return a.call(this,d)}};return b})},"dojo/when":function(){define(["./Deferred","./promise/Promise"],function(f,k){return function(h,
+j,e,c){var i=h&&"function"===typeof h.then,b=i&&h instanceof k;if(i){if(!b)i=new f(h.cancel),h.then(i.resolve,i.reject,i.progress),h=i.promise}else return j?j(h):(new f).resolve(h);return j||e||c?h.then(j,e,c):h}})},"dojo/_base/json":function(){define(["./kernel","../json"],function(f,k){f.fromJson=function(f){return eval("("+f+")")};f._escapeString=k.stringify;f.toJsonIndentStr="\t";f.toJson=function(h,j){return k.stringify(h,function(e,c){if(c){var f=c.__json__||c.json;if("function"==typeof f)return f.call(c)}return c},
+j&&f.toJsonIndentStr)};return f})},"dojo/request/watch":function(){define("./util,../errors/RequestTimeoutError,../errors/CancelError,../_base/array,../_base/window,../has!host-browser?dom-addeventlistener?:../on:".split(","),function(f,k,h,j,e,c){function i(){for(var c=+new Date,d=0,e;d<a.length&&(e=a[d]);d++){var f=e.response,i=f.options;if(e.isCanceled&&e.isCanceled()||e.isValid&&!e.isValid(f))a.splice(d--,1),b._onAction&&b._onAction();else if(e.isReady&&e.isReady(f))a.splice(d--,1),e.handleResponse(f),
+b._onAction&&b._onAction();else if(e.startTime&&e.startTime+(i.timeout||0)<c)a.splice(d--,1),e.cancel(new k("Timeout exceeded",f)),b._onAction&&b._onAction()}b._onInFlight&&b._onInFlight(e);a.length||(clearInterval(g),g=null)}function b(b){if(b.response.options.timeout)b.startTime=+new Date;b.isFulfilled()||(a.push(b),g||(g=setInterval(i,50)),b.response.options.sync&&i())}var g=null,a=[];b.cancelAll=function(){try{j.forEach(a,function(a){try{a.cancel(new h("All requests canceled."))}catch(b){}})}catch(b){}};
+e&&c&&e.doc.attachEvent&&c(e.global,"unload",function(){b.cancelAll()});return b})},"dojo/request/util":function(){define("exports,../errors/RequestError,../errors/CancelError,../Deferred,../io-query,../_base/array,../_base/lang".split(","),function(f,k,h,j,e,c,i){function b(a){return g(a)}f.deepCopy=function(a,b){for(var d in b){var g=a[d],c=b[d];g!==c&&(g&&"object"===typeof g&&c&&"object"===typeof c?f.deepCopy(g,c):a[d]=c)}return a};f.deepCreate=function(a,b){var b=b||{},d=i.delegate(a),g,c;for(g in a)(c=
+a[g])&&"object"===typeof c&&(d[g]=f.deepCreate(c,b[g]));return f.deepCopy(d,b)};var g=Object.freeze||function(a){return a};f.deferred=function(a,c,d,e,m,n){var o=new j(function(b){c&&c(o,a);return!b||!(b instanceof k)&&!(b instanceof h)?new h("Request canceled",a):b});o.response=a;o.isValid=d;o.isReady=e;o.handleResponse=m;d=o.then(b).otherwise(function(b){b.response=a;throw b;});f.notify&&d.then(i.hitch(f.notify,"emit","load"),i.hitch(f.notify,"emit","error"));e=d.then(function(a){return a.data||
+a.text});d=g(i.delegate(e,{response:d}));n&&o.then(function(a){n.call(o,a)},function(b){n.call(o,a,b)});o.promise=d;o.then=d.then;return o};f.addCommonMethods=function(a,b){c.forEach(b||["GET","POST","PUT","DELETE"],function(b){a[("DELETE"===b?"DEL":b).toLowerCase()]=function(g,c){c=i.delegate(c||{});c.method=b;return a(g,c)}})};f.parseArgs=function(a,b,d){var g=b.data,c=b.query;if(g&&!d&&"object"===typeof g)b.data=e.objectToQuery(g);c?("object"===typeof c&&(c=e.objectToQuery(c)),b.preventCache&&
+(c+=(c?"&":"")+"request.preventCache="+ +new Date)):b.preventCache&&(c="request.preventCache="+ +new Date);a&&c&&(a+=(~a.indexOf("?")?"&":"?")+c);return{url:a,options:b,getHeader:function(){return null}}};f.checkStatus=function(a){a=a||0;return 200<=a&&300>a||304===a||1223===a||!a}})},"dojo/errors/RequestError":function(){define(["./create"],function(f){return f("RequestError",function(f,h){this.response=h})})},"dojo/errors/RequestTimeoutError":function(){define(["./create","./RequestError"],function(f,
+k){return f("RequestTimeoutError",null,k,{dojoType:"timeout"})})},"dojo/request/xhr":function(){define(["../errors/RequestError","./watch","./handlers","./util","../has"],function(f,k,h,j,e){function c(a,b){var d=a.xhr;a.status=a.xhr.status;a.text=d.responseText;if("xml"===a.options.handleAs)a.data=d.responseXML;if(!b)try{h(a)}catch(g){b=g}b?this.reject(b):j.checkStatus(d.status)?this.resolve(a):(b=new f("Unable to load "+a.url+" status: "+d.status,a),this.reject(b))}function i(m,h,n){var v=j.parseArgs(m,
+j.deepCreate(p,h),e("native-formdata")&&h&&h.data&&h.data instanceof FormData),m=v.url,h=v.options,s,t=j.deferred(v,l,b,g,c,function(){s&&s()}),u=v.xhr=i._create();if(!u)return t.cancel(new f("XHR was not created")),n?t:t.promise;v.getHeader=function(a){return this.xhr.getResponseHeader(a)};a&&(s=a(u,t,v));var y=h.data,z=!h.sync,I=h.method;try{u.open(I,m,z,h.user||d,h.password||d);if(h.withCredentials)u.withCredentials=h.withCredentials;var J=h.headers,N;if(J)for(var E in J)"content-type"===E.toLowerCase()?
+N=J[E]:J[E]&&u.setRequestHeader(E,J[E]);N&&!1!==N&&u.setRequestHeader("Content-Type",N);(!J||!("X-Requested-With"in J))&&u.setRequestHeader("X-Requested-With","XMLHttpRequest");j.notify&&j.notify.emit("send",v,t.promise.cancel);u.send(y)}catch(S){t.reject(S)}k(t);u=null;return n?t:t.promise}e.add("native-xhr",function(){return"undefined"!==typeof XMLHttpRequest});e.add("dojo-force-activex-xhr",function(){return e("activex")&&!document.addEventListener&&"file:"===window.location.protocol});e.add("native-xhr2",
+function(){if(e("native-xhr")){var a=new XMLHttpRequest;return"undefined"!==typeof a.addEventListener&&("undefined"===typeof opera||"undefined"!==typeof a.upload)}});e.add("native-formdata",function(){return"function"===typeof FormData});var b,g,a,l;e("native-xhr2")?(b=function(){return!this.isFulfilled()},l=function(a,b){b.xhr.abort()},a=function(a,b,d){function g(){b.handleResponse(d)}function c(a){a=new f("Unable to load "+d.url+" status: "+a.target.status,d);b.handleResponse(d,a)}function e(a){if(a.lengthComputable)d.loaded=
+a.loaded,d.total=a.total,b.progress(d)}a.addEventListener("load",g,!1);a.addEventListener("error",c,!1);a.addEventListener("progress",e,!1);return function(){a.removeEventListener("load",g,!1);a.removeEventListener("error",c,!1);a.removeEventListener("progress",e,!1)}}):(b=function(a){return a.xhr.readyState},g=function(a){return 4===a.xhr.readyState},l=function(a,b){var d=b.xhr,g=typeof d.abort;("function"===g||"object"===g||"unknown"===g)&&d.abort()});var d,p={data:null,query:null,sync:!1,method:"GET",
+headers:{"Content-Type":"application/x-www-form-urlencoded"}};i._create=function(){throw Error("XMLHTTP not available");};if(e("native-xhr")&&!e("dojo-force-activex-xhr"))i._create=function(){return new XMLHttpRequest};else if(e("activex"))try{new ActiveXObject("Msxml2.XMLHTTP"),i._create=function(){return new ActiveXObject("Msxml2.XMLHTTP")}}catch(m){try{new ActiveXObject("Microsoft.XMLHTTP"),i._create=function(){return new ActiveXObject("Microsoft.XMLHTTP")}}catch(n){}}j.addCommonMethods(i);return i})},
+"dojo/request/handlers":function(){define(["../json","../_base/kernel","../_base/array","../has"],function(f,k,h,j){function e(g){var a=b[g.options.handleAs];g.data=a?a(g):g.data||g.text;return g}j.add("activex","undefined"!==typeof ActiveXObject);var c;if(j("activex")){var i=["Msxml2.DOMDocument.6.0","Msxml2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML.DOMDocument"];c=function(b){var a=b.data;if(!a||!a.documentElement){var c=b.text;h.some(i,function(b){try{var g=new ActiveXObject(b);g.async=
+!1;g.loadXML(c);a=g}catch(e){return!1}return!0})}return a}}var b={javascript:function(b){return k.eval(b.text||"")},json:function(b){return f.parse(b.text||null)},xml:c};e.register=function(g,a){b[g]=a};return e})},"dojo/main":function(){define("./_base/kernel,./has,require,./sniff,./_base/lang,./_base/array,./_base/config,./ready,./_base/declare,./_base/connect,./_base/Deferred,./_base/json,./_base/Color,./has!dojo-firebug?./_firebug/firebug,./_base/browser,require".split(","),function(f,k,h,j,e,
+c,i,b){i.isDebug&&h(["./_firebug/firebug"]);var g=i.require;g&&(g=c.map(e.isArray(g)?g:[g],function(a){return a.replace(/\./g,"/")}),f.isAsync?h(g):b(1,function(){h(g)}));return f})},"dojo/ready":function(){define(["./_base/kernel","./has","require","./domReady","./_base/lang"],function(f,k,h,j,e){var c=0,i,b=[],g=0,a=function(){if(c&&!g&&b.length){g=1;var d=b.shift();try{d()}finally{g=0}g=0;b.length&&i(a)}};h.on("idle",a);i=function(){h.idle()&&a()};var k=f.ready=f.addOnLoad=function(a,g,c){var l=
+e._toArray(arguments);"number"!=typeof a?(c=g,g=a,a=1E3):l.shift();c=c?e.hitch.apply(f,l):function(){g()};c.priority=a;for(l=0;l<b.length&&a>=b[l].priority;l++);b.splice(l,0,c);i()},l=f.config.addOnLoad;if(l)k[e.isArray(l)?"apply":"call"](f,l);j(function(){c=1;f._postLoad=f.config.afterOnLoad=!0;b.length&&i(a)});return k})},"dojo/domReady":function(){define(["./has"],function(f){function k(a){i?a(j):b.push(a)}var h=this,j=document,e={loaded:1,complete:1},c="string"!=typeof j.readyState,i=!!e[j.readyState];
+if(c)j.readyState="loading";if(!i){var b=[],g=[],a=function(a){a=a||h.event;if(!(i||"readystatechange"==a.type&&!e[j.readyState])){i=1;if(c)j.readyState="complete";for(;b.length;)b.shift()(j)}},l=function(d,g){d.addEventListener(g,a,!1);b.push(function(){d.removeEventListener(g,a,!1)})};if(!f("dom-addeventlistener")){var l=function(d,g){g="on"+g;d.attachEvent(g,a);b.push(function(){d.detachEvent(g,a)})},d=j.createElement("div");try{d.doScroll&&null===h.frameElement&&g.push(function(){try{return d.doScroll("left"),
+1}catch(a){}})}catch(p){}}l(j,"DOMContentLoaded");l(h,"load");"onreadystatechange"in j?l(j,"readystatechange"):c||g.push(function(){return e[j.readyState]});if(g.length){var m=function(){if(!i){for(var b=g.length;b--;)if(g[b]()){a("poller");return}setTimeout(m,30)}};m()}}k.load=function(a,b,d){k(d)};return k})},"dojo/_base/declare":function(){define(["./kernel","../has","./lang"],function(f,k,h){function j(a,b){throw Error("declare"+(b?" "+b:"")+": "+a);}function e(a,b,d){var g,c,e,l,f,m,i,h=this._inherited=
+this._inherited||{};"string"==typeof a&&(g=a,a=b,b=d);d=0;l=a.callee;(g=g||l.nom)||j("can't deduce a name to call inherited()",this.declaredClass);f=this.constructor._meta;e=f.bases;i=h.p;if(g!=z){if(h.c!==l&&(i=0,m=e[0],f=m._meta,f.hidden[g]!==l)){(c=f.chains)&&"string"==typeof c[g]&&j("calling chained method with inherited: "+g,this.declaredClass);do if(f=m._meta,c=m.prototype,f&&(c[g]===l&&c.hasOwnProperty(g)||f.hidden[g]===l))break;while(m=e[++i]);i=m?i:-1}if(m=e[++i])if(c=m.prototype,m._meta&&
+c.hasOwnProperty(g))d=c[g];else{l=s[g];do if(c=m.prototype,(d=c[g])&&(m._meta?c.hasOwnProperty(g):d!==l))break;while(m=e[++i])}d=m&&d||s[g]}else{if(h.c!==l&&(i=0,(f=e[0]._meta)&&f.ctor!==l)){c=f.chains;for((!c||"manual"!==c.constructor)&&j("calling chained constructor with inherited",this.declaredClass);(m=e[++i])&&!((f=m._meta)&&f.ctor===l););i=m?i:-1}for(;(m=e[++i])&&!(d=(f=m._meta)?f.ctor:m););d=m&&d}h.c=d;h.p=i;if(d)return!0===b?d:d.apply(this,b||a)}function c(a,b){return"string"==typeof a?this.__inherited(a,
+b,!0):this.__inherited(a,!0)}function i(a,b,d){var g=this.getInherited(a,b);if(g)return g.apply(this,d||b||a)}function b(a){for(var b=this.constructor._meta.bases,d=0,g=b.length;d<g;++d)if(b[d]===a)return!0;return this instanceof a}function g(a,b){for(var d in b)d!=z&&b.hasOwnProperty(d)&&(a[d]=b[d]);if(k("bug-for-in-skips-shadowed"))for(var g=h._extraNames,c=g.length;c;)d=g[--c],d!=z&&b.hasOwnProperty(d)&&(a[d]=b[d])}function a(a){q.safeMixin(this.prototype,a);return this}function l(a){return q([this].concat(a))}
+function d(a,b){return function(){var w;var d=arguments,g=d,c=d[0],e,l;l=a.length;var f;if(!(this instanceof d.callee))return r(d);if(b&&(c&&c.preamble||this.preamble)){f=Array(a.length);f[0]=d;for(e=0;;){if(c=d[0])(c=c.preamble)&&(d=c.apply(this,d)||d);c=a[e].prototype;(c=c.hasOwnProperty("preamble")&&c.preamble)&&(d=c.apply(this,d)||d);if(++e==l)break;f[e]=d}}for(e=l-1;0<=e;--e)c=a[e],(w=(l=c._meta)?l.ctor:c,c=w)&&c.apply(this,f?f[e]:d);(c=this.postscript)&&c.apply(this,g)}}function p(a,b){return function(){var d=
+arguments,g=d,c=d[0];if(!(this instanceof d.callee))return r(d);if(b){if(c)(c=c.preamble)&&(g=c.apply(this,g)||g);(c=this.preamble)&&c.apply(this,g)}a&&a.apply(this,d);(c=this.postscript)&&c.apply(this,d)}}function m(a){return function(){var w;var b=arguments,d=0,g,c;if(!(this instanceof b.callee))return r(b);for(;g=a[d];++d)if(w=(c=g._meta)?c.ctor:g,g=w){g.apply(this,b);break}(g=this.postscript)&&g.apply(this,b)}}function n(a,b,d){return function(){var g,c,e=0,l=1;d&&(e=b.length-1,l=-1);for(;g=b[e];e+=
+l)c=g._meta,(g=(c?c.hidden:g.prototype)[a])&&g.apply(this,arguments)}}function o(a){u.prototype=a.prototype;a=new u;u.prototype=null;return a}function r(a){var b=a.callee,d=o(b);b.apply(d,a);return d}function q(f,i,k){"string"!=typeof f&&(k=i,i=f,f="");var k=k||{},r,u,B,A,w,x,K,H=1,C=i;if("[object Array]"==t.call(i)){H=f;B=[];A=[{cls:0,refs:[]}];x={};for(var F=1,O=i.length,D=0,L,T,G,M;D<O;++D){(L=i[D])?"[object Function]"!=t.call(L)&&j("mixin #"+D+" is not a callable constructor.",H):j("mixin #"+
+D+" is unknown. Did you use dojo.require to pull it in?",H);T=L._meta?L._meta.bases:[L];G=0;for(L=T.length-1;0<=L;--L){M=T[L].prototype;if(!M.hasOwnProperty("declaredClass"))M.declaredClass="uniqName_"+y++;M=M.declaredClass;x.hasOwnProperty(M)||(x[M]={count:0,refs:[],cls:T[L]},++F);M=x[M];G&&G!==M&&(M.refs.push(G),++G.count);G=M}++G.count;A[0].refs.push(G)}for(;A.length;){G=A.pop();B.push(G.cls);for(--F;u=G.refs,1==u.length;){G=u[0];if(!G||--G.count){G=0;break}B.push(G.cls);--F}if(G)for(D=0,O=u.length;D<
+O;++D)G=u[D],--G.count||A.push(G)}F&&j("can't build consistent linearization",H);L=i[0];B[0]=L?L._meta&&L===B[B.length-L._meta.bases.length]?L._meta.bases.length:1:0;x=B;B=x[0];H=x.length-B;i=x[H]}else x=[0],i?"[object Function]"==t.call(i)?(B=i._meta,x=x.concat(B?B.bases:i)):j("base class is not a callable constructor.",f):null!==i&&j("unknown base class. Did you use dojo.require to pull it in?",f);if(i)for(u=H-1;;--u){r=o(i);if(!u)break;B=x[u];(B._meta?g:v)(r,B.prototype);A=new Function;A.superclass=
+i;A.prototype=r;i=r.constructor=A}else r={};q.safeMixin(r,k);B=k.constructor;if(B!==s.constructor)B.nom=z,r.constructor=B;for(u=H-1;u;--u)(B=x[u]._meta)&&B.chains&&(K=v(K||{},B.chains));r["-chains-"]&&(K=v(K||{},r["-chains-"]));B=!K||!K.hasOwnProperty(z);x[0]=A=K&&"manual"===K.constructor?m(x):1==x.length?p(k.constructor,B):d(x,B);A._meta={bases:x,hidden:k,chains:K,parents:C,ctor:k.constructor};A.superclass=i&&i.prototype;A.extend=a;A.createSubclass=l;A.prototype=r;r.constructor=A;r.getInherited=
+c;r.isInstanceOf=b;r.inherited=I;r.__inherited=e;if(f)r.declaredClass=f,h.setObject(f,A);if(K)for(w in K)if(r[w]&&"string"==typeof K[w]&&w!=z)B=r[w]=n(w,x,"after"===K[w]),B.nom=w;return A}var v=h.mixin,s=Object.prototype,t=s.toString,u=new Function,y=0,z="constructor",I=f.config.isDebug?i:e;f.safeMixin=q.safeMixin=function(a,b){var d,g;for(d in b)if(g=b[d],(g!==s[d]||!(d in s))&&d!=z){if("[object Function]"==t.call(g))g.nom=d;a[d]=g}if(k("bug-for-in-skips-shadowed"))for(var c=h._extraNames,e=c.length;e;)if(d=
+c[--e],g=b[d],(g!==s[d]||!(d in s))&&d!=z){if("[object Function]"==t.call(g))g.nom=d;a[d]=g}return a};return f.declare=q})},"dojo/_base/connect":function(){define("./kernel,../on,../topic,../aspect,./event,../mouse,./sniff,./lang,../keys".split(","),function(f,k,h,j,e,c,i,b){function g(a,d,g,e,l){e=b.hitch(g,e);if(!a||!a.addEventListener&&!a.attachEvent)return j.after(a||f.global,d,e,!0);"string"==typeof d&&"on"==d.substring(0,2)&&(d=d.substring(2));if(!a)a=f.global;if(!l)switch(d){case "keypress":d=
+m;break;case "mouseenter":d=c.enter;break;case "mouseleave":d=c.leave}return k(a,d,e,l)}function a(a){a.keyChar=a.charCode?String.fromCharCode(a.charCode):"";a.charOrCode=a.keyChar||a.keyCode}i.add("events-keypress-typed",function(){var a={charCode:0};try{a=document.createEvent("KeyboardEvent"),(a.initKeyboardEvent||a.initKeyEvent).call(a,"keypress",!0,!0,null,!1,!1,!1,!1,9,3)}catch(b){}return 0==a.charCode&&!i("opera")});var l={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,229:113},d=i("mac")?"metaKey":"ctrlKey",p=function(d,g){var c=b.mixin({},d,g);a(c);c.preventDefault=function(){d.preventDefault()};c.stopPropagation=function(){d.stopPropagation()};return c},m;m=i("events-keypress-typed")?function(a,b){var d=k(a,"keydown",function(a){var d=a.keyCode,g=13!=d&&32!=d&&(27!=d||!i("ie"))&&(48>d||90<d)&&(96>d||111<d)&&(186>d||192<d)&&(219>d||222<d)&&229!=d;if(g||a.ctrlKey){g=g?0:d;if(a.ctrlKey){if(3==d||13==d)return b.call(a.currentTarget,a);g=95<g&&
+106>g?g-48:!a.shiftKey&&65<=g&&90>=g?g+32:l[g]||g}d=p(a,{type:"keypress",faux:!0,charCode:g});b.call(a.currentTarget,d);if(i("ie"))try{a.keyCode=d.keyCode}catch(c){}}}),g=k(a,"keypress",function(a){var d=a.charCode,a=p(a,{charCode:32<=d?d:0,faux:!0});return b.call(this,a)});return{remove:function(){d.remove();g.remove()}}}:i("opera")?function(a,b){return k(a,"keypress",function(a){var d=a.which;3==d&&(d=99);d=32>d&&!a.shiftKey?0:d;a.ctrlKey&&!a.shiftKey&&65<=d&&90>=d&&(d+=32);return b.call(this,p(a,
+{charCode:d}))})}:function(b,d){return k(b,"keypress",function(b){a(b);return d.call(this,b)})};var n={_keypress:m,connect:function(a,b,d,c,e){var l=arguments,f=[],i=0;f.push("string"==typeof l[0]?null:l[i++],l[i++]);var m=l[i+1];f.push("string"==typeof m||"function"==typeof m?l[i++]:null,l[i++]);for(m=l.length;i<m;i++)f.push(l[i]);return g.apply(this,f)},disconnect:function(a){a&&a.remove()},subscribe:function(a,d,g){return h.subscribe(a,b.hitch(d,g))},publish:function(a,b){return h.publish.apply(h,
+[a].concat(b))},connectPublisher:function(a,b,d){var g=function(){n.publish(a,arguments)};return d?n.connect(b,d,g):n.connect(b,g)},isCopyKey:function(a){return a[d]}};n.unsubscribe=n.disconnect;b.mixin(f,n);return n})},"dojo/topic":function(){define(["./Evented"],function(f){var k=new f;return{publish:function(f,j){return k.emit.apply(k,arguments)},subscribe:function(f,j){return k.on.apply(k,arguments)}}})},"dojo/_base/event":function(){define(["./kernel","../on","../has","../dom-geometry"],function(f,
+k,h,j){if(k._fixEvent){var e=k._fixEvent;k._fixEvent=function(c,b){(c=e(c,b))&&j.normalizeEvent(c);return c}}var c={fix:function(c,b){return k._fixEvent?k._fixEvent(c,b):c},stop:function(c){h("dom-addeventlistener")||c&&c.preventDefault?(c.preventDefault(),c.stopPropagation()):(c=c||window.event,c.cancelBubble=!0,k._preventDefault.call(c))}};f.fixEvent=c.fix;f.stopEvent=c.stop;return c})},"dojo/dom-geometry":function(){define(["./sniff","./_base/window","./dom","./dom-style"],function(f,k,h,j){function e(a,
+b,d,g,c,e){e=e||"px";a=a.style;if(!isNaN(b))a.left=b+e;if(!isNaN(d))a.top=d+e;if(0<=g)a.width=g+e;if(0<=c)a.height=c+e}function c(a){return"button"==a.tagName.toLowerCase()||"input"==a.tagName.toLowerCase()&&"button"==(a.getAttribute("type")||"").toLowerCase()}function i(a){return"border-box"==b.boxModel||"table"==a.tagName.toLowerCase()||c(a)}var b={boxModel:"content-box"};if(f("ie"))b.boxModel="BackCompat"==document.compatMode?"border-box":"content-box";b.getPadExtents=function(a,b){var a=h.byId(a),
+d=b||j.getComputedStyle(a),g=j.toPixelValue,c=g(a,d.paddingLeft),e=g(a,d.paddingTop),f=g(a,d.paddingRight),d=g(a,d.paddingBottom);return{l:c,t:e,r:f,b:d,w:c+f,h:e+d}};b.getBorderExtents=function(a,b){var a=h.byId(a),d=j.toPixelValue,g=b||j.getComputedStyle(a),c="none"!=g.borderLeftStyle?d(a,g.borderLeftWidth):0,e="none"!=g.borderTopStyle?d(a,g.borderTopWidth):0,f="none"!=g.borderRightStyle?d(a,g.borderRightWidth):0,d="none"!=g.borderBottomStyle?d(a,g.borderBottomWidth):0;return{l:c,t:e,r:f,b:d,w:c+
+f,h:e+d}};b.getPadBorderExtents=function(a,g){var a=h.byId(a),d=g||j.getComputedStyle(a),c=b.getPadExtents(a,d),d=b.getBorderExtents(a,d);return{l:c.l+d.l,t:c.t+d.t,r:c.r+d.r,b:c.b+d.b,w:c.w+d.w,h:c.h+d.h}};b.getMarginExtents=function(a,b){var a=h.byId(a),d=b||j.getComputedStyle(a),g=j.toPixelValue,c=g(a,d.marginLeft),e=g(a,d.marginTop),f=g(a,d.marginRight),d=g(a,d.marginBottom);return{l:c,t:e,r:f,b:d,w:c+f,h:e+d}};b.getMarginBox=function(a,g){var a=h.byId(a),d=g||j.getComputedStyle(a),c=b.getMarginExtents(a,
+d),e=a.offsetLeft-c.l,i=a.offsetTop-c.t,o=a.parentNode,k=j.toPixelValue;if(f("mozilla")){var q=parseFloat(d.left),d=parseFloat(d.top);!isNaN(q)&&!isNaN(d)?(e=q,i=d):o&&o.style&&(o=j.getComputedStyle(o),"visible"!=o.overflow&&(e+="none"!=o.borderLeftStyle?k(a,o.borderLeftWidth):0,i+="none"!=o.borderTopStyle?k(a,o.borderTopWidth):0))}else if((f("opera")||8==f("ie")&&!f("quirks"))&&o)o=j.getComputedStyle(o),e-="none"!=o.borderLeftStyle?k(a,o.borderLeftWidth):0,i-="none"!=o.borderTopStyle?k(a,o.borderTopWidth):
+0;return{l:e,t:i,w:a.offsetWidth+c.w,h:a.offsetHeight+c.h}};b.getContentBox=function(a,g){var a=h.byId(a),d=g||j.getComputedStyle(a),c=a.clientWidth,e=b.getPadExtents(a,d),i=b.getBorderExtents(a,d);c?(d=a.clientHeight,i.w=i.h=0):(c=a.offsetWidth,d=a.offsetHeight);f("opera")&&(e.l+=i.l,e.t+=i.t);return{l:e.l,t:e.t,w:c-e.w-i.w,h:d-e.h-i.h}};b.setContentSize=function(a,g,d){var a=h.byId(a),c=g.w,g=g.h;i(a)&&(d=b.getPadBorderExtents(a,d),0<=c&&(c+=d.w),0<=g&&(g+=d.h));e(a,NaN,NaN,c,g)};var g={l:0,t:0,
+w:0,h:0};b.setMarginBox=function(a,l,d){var a=h.byId(a),p=d||j.getComputedStyle(a),d=l.w,m=l.h,n=i(a)?g:b.getPadBorderExtents(a,p),p=b.getMarginExtents(a,p);if(f("webkit")&&c(a)){var k=a.style;if(0<=d&&!k.width)k.width="4px";if(0<=m&&!k.height)k.height="4px"}0<=d&&(d=Math.max(d-n.w-p.w,0));0<=m&&(m=Math.max(m-n.h-p.h,0));e(a,l.l,l.t,d,m)};b.isBodyLtr=function(a){a=a||k.doc;return"ltr"==(k.body(a).dir||a.documentElement.dir||"ltr").toLowerCase()};b.docScroll=function(a){var a=a||k.doc,g=k.doc.parentWindow||
+k.doc.defaultView;return"pageXOffset"in g?{x:g.pageXOffset,y:g.pageYOffset}:(g=f("quirks")?k.body(a):a.documentElement)&&{x:b.fixIeBiDiScrollLeft(g.scrollLeft||0,a),y:g.scrollTop||0}};if(f("ie"))b.getIeDocumentElementOffset=function(a){a=a||k.doc;a=a.documentElement;if(8>f("ie")){var b=a.getBoundingClientRect(),d=b.left,b=b.top;7>f("ie")&&(d+=a.clientLeft,b+=a.clientTop);return{x:0>d?0:d,y:0>b?0:b}}return{x:0,y:0}};b.fixIeBiDiScrollLeft=function(a,g){var g=g||k.doc,d=f("ie");if(d&&!b.isBodyLtr(g)){var c=
+f("quirks"),e=c?k.body(g):g.documentElement,i=k.global;6==d&&!c&&i.frameElement&&e.scrollHeight>e.clientHeight&&(a+=e.clientLeft);return 8>d||c?a+e.clientWidth-e.scrollWidth:-a}return a};b.position=function(a,g){var a=h.byId(a),d=k.body(a.ownerDocument),c=a.getBoundingClientRect(),c={x:c.left,y:c.top,w:c.right-c.left,h:c.bottom-c.top};if(f("ie")){var e=b.getIeDocumentElementOffset(a.ownerDocument);c.x-=e.x+(f("quirks")?d.clientLeft+d.offsetLeft:0);c.y-=e.y+(f("quirks")?d.clientTop+d.offsetTop:0)}g&&
+(d=b.docScroll(a.ownerDocument),c.x+=d.x,c.y+=d.y);return c};b.getMarginSize=function(a,g){var a=h.byId(a),d=b.getMarginExtents(a,g||j.getComputedStyle(a)),c=a.getBoundingClientRect();return{w:c.right-c.left+d.w,h:c.bottom-c.top+d.h}};b.normalizeEvent=function(a){if(!("layerX"in a))a.layerX=a.offsetX,a.layerY=a.offsetY;if(!f("dom-addeventlistener")){var g=a.target,g=g&&g.ownerDocument||document,d=f("quirks")?g.body:g.documentElement,c=b.getIeDocumentElementOffset(g);a.pageX=a.clientX+b.fixIeBiDiScrollLeft(d.scrollLeft||
+0,g)-c.x;a.pageY=a.clientY+(d.scrollTop||0)-c.y}};return b})},"dojo/dom-style":function(){define(["./sniff","./dom"],function(f,k){function h(b,d,g){d=d.toLowerCase();if(f("ie")){if("auto"==g){if("height"==d)return b.offsetHeight;if("width"==d)return b.offsetWidth}if("fontweight"==d)switch(g){case 700:return"bold";default:return"normal"}}d in a||(a[d]=l.test(d));return a[d]?c(b,g):g}var j,e={};j=f("webkit")?function(a){var b;if(1==a.nodeType){var d=a.ownerDocument.defaultView;b=d.getComputedStyle(a,
+null);if(!b&&a.style)a.style.display="",b=d.getComputedStyle(a,null)}return b||{}}:f("ie")&&(9>f("ie")||f("quirks"))?function(a){return 1==a.nodeType&&a.currentStyle?a.currentStyle:{}}:function(a){return 1==a.nodeType?a.ownerDocument.defaultView.getComputedStyle(a,null):{}};e.getComputedStyle=j;var c;c=f("ie")?function(a,b){if(!b)return 0;if("medium"==b)return 4;if(b.slice&&"px"==b.slice(-2))return parseFloat(b);var d=a.style,g=a.runtimeStyle,c=d.left,e=g.left;g.left=a.currentStyle.left;try{d.left=
+b,b=d.pixelLeft}catch(l){b=0}d.left=c;g.left=e;return b}:function(a,b){return parseFloat(b)||0};e.toPixelValue=c;var i=function(a,b){try{return a.filters.item("DXImageTransform.Microsoft.Alpha")}catch(d){return b?{}:null}},b=9>f("ie")||f("ie")&&f("quirks")?function(a){try{return i(a).Opacity/100}catch(b){return 1}}:function(a){return j(a).opacity},g=9>f("ie")||f("ie")&&f("quirks")?function(a,b){var d=100*b,c=1==b;a.style.zoom=c?"":1;if(i(a))i(a,1).Opacity=d;else{if(c)return b;a.style.filter+=" progid:DXImageTransform.Microsoft.Alpha(Opacity="+
+d+")"}i(a,1).Enabled=!c;if("tr"==a.tagName.toLowerCase())for(d=a.firstChild;d;d=d.nextSibling)"td"==d.tagName.toLowerCase()&&g(d,b);return b}:function(a,b){return a.style.opacity=b},a={left:!0,top:!0},l=/margin|padding|width|height|max|min|offset/,d=f("ie")?"styleFloat":"cssFloat",p={cssFloat:d,styleFloat:d,"float":d};e.get=function(a,d){var g=k.byId(a),c=arguments.length;if(2==c&&"opacity"==d)return b(g);var d=p[d]||d,l=e.getComputedStyle(g);return 1==c?l:h(g,d,l[d]||g.style[d])};e.set=function(a,
+b,d){var c=k.byId(a),l=arguments.length,f="opacity"==b,b=p[b]||b;if(3==l)return f?g(c,d):c.style[b]=d;for(var i in b)e.set(a,i,b[i]);return e.getComputedStyle(c)};return e})},"dojo/mouse":function(){define(["./_base/kernel","./on","./has","./dom","./_base/window"],function(f,k,h,j,e){function c(e,b){var g=function(a,g){return k(a,e,function(d){if(b)return b(d,g);if(!j.isDescendant(d.relatedTarget,a))return g.call(this,d)})};g.bubble=function(a){return c(e,function(b,d){var g=a(b.target),c=b.relatedTarget;
+if(g&&g!=(c&&1==c.nodeType&&a(c)))return d.call(g,b)})};return g}h.add("dom-quirks",e.doc&&"BackCompat"==e.doc.compatMode);h.add("events-mouseenter",e.doc&&"onmouseenter"in e.doc.createElement("div"));h.add("events-mousewheel",e.doc&&"onmousewheel"in e.doc);e=h("dom-quirks")&&h("ie")||!h("dom-addeventlistener")?{LEFT:1,MIDDLE:4,RIGHT:2,isButton:function(c,b){return c.button&b},isLeft:function(c){return c.button&1},isMiddle:function(c){return c.button&4},isRight:function(c){return c.button&2}}:{LEFT:0,
+MIDDLE:1,RIGHT:2,isButton:function(c,b){return c.button==b},isLeft:function(c){return 0==c.button},isMiddle:function(c){return 1==c.button},isRight:function(c){return 2==c.button}};f.mouseButtons=e;f=h("events-mousewheel")?"mousewheel":function(c,b){return k(c,"DOMMouseScroll",function(g){g.wheelDelta=-g.detail;b.call(this,g)})};return{_eventHandler:c,enter:c("mouseover"),leave:c("mouseout"),wheel:f,isLeft:e.isLeft,isMiddle:e.isMiddle,isRight:e.isRight}})},"dojo/keys":function(){define(["./_base/kernel",
+"./sniff"],function(f,k){return f.keys={BACKSPACE:8,TAB:9,CLEAR:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,META:k("webkit")?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,UP_DPAD:175,DOWN_DPAD:176,LEFT_DPAD:177,RIGHT_DPAD:178,copyKey:k("mac")&&!k("air")?k("safari")?91:224:17}})},"dojo/_base/Color":function(){define(["./kernel","./lang","./array","./config"],function(f,k,h,j){var e=f.Color=function(c){c&&this.setColor(c)};e.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:j.transparentColor||[0,0,0,0]};k.extend(e,{r:255,g:255,b:255,a:1,_set:function(c,e,b,g){this.r=c;this.g=e;this.b=b;this.a=g},setColor:function(c){k.isString(c)?e.fromString(c,this):k.isArray(c)?e.fromArray(c,this):(this._set(c.r,c.g,c.b,c.a),c instanceof e||
+this.sanitize());return this},sanitize:function(){return this},toRgb:function(){return[this.r,this.g,this.b]},toRgba:function(){return[this.r,this.g,this.b,this.a]},toHex:function(){return"#"+h.map(["r","g","b"],function(c){c=this[c].toString(16);return 2>c.length?"0"+c:c},this).join("")},toCss:function(c){var e=this.r+", "+this.g+", "+this.b;return(c?"rgba("+e+", "+this.a:"rgb("+e)+")"},toString:function(){return this.toCss(!0)}});e.blendColors=f.blendColors=function(c,f,b,g){var a=g||new e;h.forEach(["r",
+"g","b","a"],function(g){a[g]=c[g]+(f[g]-c[g])*b;"a"!=g&&(a[g]=Math.round(a[g]))});return a.sanitize()};e.fromRgb=f.colorFromRgb=function(c,f){var b=c.toLowerCase().match(/^rgba?\(([\s\.,0-9]+)\)/);return b&&e.fromArray(b[1].split(/\s*,\s*/),f)};e.fromHex=f.colorFromHex=function(c,f){var b=f||new e,g=4==c.length?4:8,a=(1<<g)-1,c=Number("0x"+c.substr(1));if(isNaN(c))return null;h.forEach(["b","g","r"],function(e){var d=c&a;c>>=g;b[e]=4==g?17*d:d});b.a=1;return b};e.fromArray=f.colorFromArray=function(c,
+f){var b=f||new e;b._set(Number(c[0]),Number(c[1]),Number(c[2]),Number(c[3]));if(isNaN(b.a))b.a=1;return b.sanitize()};e.fromString=f.colorFromString=function(c,f){var b=e.named[c];return b&&e.fromArray(b,f)||e.fromRgb(c,f)||e.fromHex(c,f)};return e})},"dojo/_base/browser":function(){require.has&&require.has.add("config-selectorEngine","acme");define("../ready,./kernel,./connect,./unload,./window,./event,./html,./NodeList,../query,./xhr,./fx".split(","),function(f){return f})},"dojo/_base/unload":function(){define(["./kernel",
+"./lang","../on"],function(f,k,h){var j=window,e={addOnWindowUnload:function(c,e){if(!f.windowUnloaded)h(j,"unload",f.windowUnloaded=function(){});h(j,"unload",k.hitch(c,e))},addOnUnload:function(c,e){h(j,"beforeunload",k.hitch(c,e))}};f.addOnWindowUnload=e.addOnWindowUnload;f.addOnUnload=e.addOnUnload;return e})},"dojo/_base/html":function(){define("./kernel,../dom,../dom-style,../dom-attr,../dom-prop,../dom-class,../dom-construct,../dom-geometry".split(","),function(f,k,h,j,e,c,i,b){f.byId=k.byId;
+f.isDescendant=k.isDescendant;f.setSelectable=k.setSelectable;f.getAttr=j.get;f.setAttr=j.set;f.hasAttr=j.has;f.removeAttr=j.remove;f.getNodeProp=j.getNodeProp;f.attr=function(b,a,c){return 2==arguments.length?j["string"==typeof a?"get":"set"](b,a):j.set(b,a,c)};f.hasClass=c.contains;f.addClass=c.add;f.removeClass=c.remove;f.toggleClass=c.toggle;f.replaceClass=c.replace;f._toDom=f.toDom=i.toDom;f.place=i.place;f.create=i.create;f.empty=function(b){i.empty(b)};f._destroyElement=f.destroy=function(b){i.destroy(b)};
+f._getPadExtents=f.getPadExtents=b.getPadExtents;f._getBorderExtents=f.getBorderExtents=b.getBorderExtents;f._getPadBorderExtents=f.getPadBorderExtents=b.getPadBorderExtents;f._getMarginExtents=f.getMarginExtents=b.getMarginExtents;f._getMarginSize=f.getMarginSize=b.getMarginSize;f._getMarginBox=f.getMarginBox=b.getMarginBox;f.setMarginBox=b.setMarginBox;f._getContentBox=f.getContentBox=b.getContentBox;f.setContentSize=b.setContentSize;f._isBodyLtr=f.isBodyLtr=b.isBodyLtr;f._docScroll=f.docScroll=
+b.docScroll;f._getIeDocumentElementOffset=f.getIeDocumentElementOffset=b.getIeDocumentElementOffset;f._fixIeBiDiScrollLeft=f.fixIeBiDiScrollLeft=b.fixIeBiDiScrollLeft;f.position=b.position;f.marginBox=function(g,a){return a?b.setMarginBox(g,a):b.getMarginBox(g)};f.contentBox=function(g,a){return a?b.setContentSize(g,a):b.getContentBox(g)};f.coords=function(g,a){f.deprecated("dojo.coords()","Use dojo.position() or dojo.marginBox().");var g=k.byId(g),c=h.getComputedStyle(g),c=b.getMarginBox(g,c),d=
+b.position(g,a);c.x=d.x;c.y=d.y;return c};f.getProp=e.get;f.setProp=e.set;f.prop=function(b,a,c){return 2==arguments.length?e["string"==typeof a?"get":"set"](b,a):e.set(b,a,c)};f.getStyle=h.get;f.setStyle=h.set;f.getComputedStyle=h.getComputedStyle;f.__toPixelValue=f.toPixelValue=h.toPixelValue;f.style=function(b,a,c){switch(arguments.length){case 1:return h.get(b);case 2:return h["string"==typeof a?"get":"set"](b,a)}return h.set(b,a,c)};return f})},"dojo/dom-attr":function(){define("exports,./sniff,./_base/lang,./dom,./dom-style,./dom-prop".split(","),
+function(f,k,h,j,e,c){function i(a,b){var d=a.getAttributeNode&&a.getAttributeNode(b);return d&&d.specified}var b={innerHTML:1,className:1,htmlFor:k("ie"),value:1},g={classname:"class",htmlfor:"for",tabindex:"tabIndex",readonly:"readOnly"};f.has=function(a,e){var d=e.toLowerCase();return b[c.names[d]||e]||i(j.byId(a),g[d]||e)};f.get=function(a,e){var a=j.byId(a),d=e.toLowerCase(),f=c.names[d]||e,m=a[f];if(b[f]&&"undefined"!=typeof m||"href"!=f&&("boolean"==typeof m||h.isFunction(m)))return m;d=g[d]||
+e;return i(a,d)?a.getAttribute(d):null};f.set=function(a,l,d){a=j.byId(a);if(2==arguments.length){for(var i in l)f.set(a,i,l[i]);return a}i=l.toLowerCase();var m=c.names[i]||l,k=b[m];if("style"==m&&"string"!=typeof d)return e.set(a,d),a;if(k||"boolean"==typeof d||h.isFunction(d))return c.set(a,l,d);a.setAttribute(g[i]||l,d);return a};f.remove=function(a,b){j.byId(a).removeAttribute(g[b.toLowerCase()]||b)};f.getNodeProp=function(a,b){var a=j.byId(a),d=b.toLowerCase(),e=c.names[d]||b;if(e in a&&"href"!=
+e)return a[e];d=g[d]||b;return i(a,d)?a.getAttribute(d):null}})},"dojo/dom-prop":function(){define("exports,./_base/kernel,./sniff,./_base/lang,./dom,./dom-style,./dom-construct,./_base/connect".split(","),function(f,k,h,j,e,c,i,b){var g={},a=0,l=k._scopeName+"attrid";f.names={"class":"className","for":"htmlFor",tabindex:"tabIndex",readonly:"readOnly",colspan:"colSpan",frameborder:"frameBorder",rowspan:"rowSpan",valuetype:"valueType"};f.get=function(a,b){var a=e.byId(a),g=b.toLowerCase();return a[f.names[g]||
+b]};f.set=function(d,k,m){d=e.byId(d);if(2==arguments.length&&"string"!=typeof k){for(var n in k)f.set(d,n,k[n]);return d}n=k.toLowerCase();n=f.names[n]||k;if("style"==n&&"string"!=typeof m)return c.set(d,m),d;if("innerHTML"==n)return h("ie")&&d.tagName.toLowerCase()in{col:1,colgroup:1,table:1,tbody:1,tfoot:1,thead:1,tr:1,title:1}?(i.empty(d),d.appendChild(i.toDom(m,d.ownerDocument))):d[n]=m,d;if(j.isFunction(m)){var o=d[l];o||(o=a++,d[l]=o);g[o]||(g[o]={});var r=g[o][n];if(r)b.disconnect(r);else try{delete d[n]}catch(q){}m?
+g[o][n]=b.connect(d,n,m):d[n]=null;return d}d[n]=m;return d}})},"dojo/dom-construct":function(){define("exports,./_base/kernel,./sniff,./_base/window,./dom,./dom-attr,./on".split(","),function(f,k,h,j,e,c,i){function b(a,b){var d=b.parentNode;d&&d.insertBefore(a,b)}var g={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"]},
+a=/<\s*([\w\:]+)/,l={},d=0,p="__"+k._scopeName+"ToDomId",m;for(m in g)if(g.hasOwnProperty(m))k=g[m],k.pre="option"==m?'<select multiple="multiple">':"<"+k.join("><")+">",k.post="</"+k.reverse().join("></")+">";var n=null,o;i(window,"unload",function(){n=null});f.toDom=function(b,c){var c=c||j.doc,e=c[p];e||(c[p]=e=++d+"",l[e]=c.createElement("div"));var b=b+"",f=b.match(a),i=f?f[1].toLowerCase():"",e=l[e];if(f&&g[i]){f=g[i];e.innerHTML=f.pre+b+f.post;for(f=f.length;f;--f)e=e.firstChild}else e.innerHTML=
+b;if(1==e.childNodes.length)return e.removeChild(e.firstChild);for(i=c.createDocumentFragment();f=e.firstChild;)i.appendChild(f);return i};f.place=function(a,d,c){d=e.byId(d);"string"==typeof a&&(a=/^\s*</.test(a)?f.toDom(a,d.ownerDocument):e.byId(a));if("number"==typeof c){var g=d.childNodes;!g.length||g.length<=c?d.appendChild(a):b(a,g[0>c?0:c])}else switch(c){case "before":b(a,d);break;case "after":c=a;(g=d.parentNode)&&(g.lastChild==d?g.appendChild(c):g.insertBefore(c,d.nextSibling));break;case "replace":d.parentNode.replaceChild(a,
+d);break;case "only":f.empty(d);d.appendChild(a);break;case "first":if(d.firstChild){b(a,d.firstChild);break}default:d.appendChild(a)}return a};f.create=function(a,b,d,g){var l=j.doc;if(d)d=e.byId(d),l=d.ownerDocument;"string"==typeof a&&(a=l.createElement(a));b&&c.set(a,b);d&&f.place(a,d,g);return a};f.empty=h("ie")?function(a){for(var a=e.byId(a),b;b=a.lastChild;)f.destroy(b)}:function(a){e.byId(a).innerHTML=""};f.destroy=function(a){a=e.byId(a);try{var b=a.ownerDocument;if(!n||o!=b)n=b.createElement("div"),
+o=b;n.appendChild(a.parentNode?a.parentNode.removeChild(a):a);n.innerHTML=""}catch(d){}}})},"dojo/dom-class":function(){define(["./_base/lang","./_base/array","./dom"],function(f,k,h){function j(b){if("string"==typeof b||b instanceof String){if(b&&!c.test(b))return i[0]=b,i;b=b.split(c);b.length&&!b[0]&&b.shift();b.length&&!b[b.length-1]&&b.pop();return b}return!b?[]:k.filter(b,function(a){return a})}var e,c=/\s+/,i=[""],b={};return e={contains:function(b,a){return 0<=(" "+h.byId(b).className+" ").indexOf(" "+
+a+" ")},add:function(b,a){var b=h.byId(b),a=j(a),c=b.className,d,c=c?" "+c+" ":" ";d=c.length;for(var e=0,f=a.length,i;e<f;++e)(i=a[e])&&0>c.indexOf(" "+i+" ")&&(c+=i+" ");d<c.length&&(b.className=c.substr(1,c.length-2))},remove:function(b,a){var b=h.byId(b),c;if(void 0!==a){a=j(a);c=" "+b.className+" ";for(var d=0,e=a.length;d<e;++d)c=c.replace(" "+a[d]+" "," ");c=f.trim(c)}else c="";b.className!=c&&(b.className=c)},replace:function(c,a,f){c=h.byId(c);b.className=c.className;e.remove(b,f);e.add(b,
+a);c.className!==b.className&&(c.className=b.className)},toggle:function(b,a,c){b=h.byId(b);if(void 0===c)for(var a=j(a),d=0,f=a.length,i;d<f;++d)i=a[d],e[e.contains(b,i)?"remove":"add"](b,i);else e[c?"add":"remove"](b,a);return c}}})},"dojo/_base/NodeList":function(){define(["./kernel","../query","./array","./html","../NodeList-dom"],function(f,k,h){var k=k.NodeList,j=k.prototype;j.connect=k._adaptAsForEach(function(){return f.connect.apply(this,arguments)});j.coords=k._adaptAsMap(f.coords);k.events=
+"blur,focus,change,click,error,keydown,keypress,keyup,load,mousedown,mouseenter,mouseleave,mousemove,mouseout,mouseover,mouseup,submit".split(",");h.forEach(k.events,function(e){var c="on"+e;j[c]=function(e,b){return this.connect(c,e,b)}});return f.NodeList=k})},"dojo/query":function(){define("./_base/kernel,./has,./dom,./on,./_base/array,./_base/lang,./selector/_loader,./selector/_loader!default".split(","),function(f,k,h,j,e,c,i,b){function g(a,b){var d=function(d,c){if("string"==typeof c&&(c=h.byId(c),
+!c))return new b([]);var g="string"==typeof d?a(d,c):d?d.orphan?d:[d]:[];return g.orphan?g:new b(g)};d.matches=a.match||function(a,b,c){return 0<d.filter([a],b,c).length};d.filter=a.filter||function(a,b,c){return d(b,c).filter(function(b){return-1<e.indexOf(a,b)})};if("function"!=typeof a)var c=a.search,a=function(a,b){return c(b||document,a)};return d}k.add("array-extensible",function(){return 1==c.delegate([],{length:1}).length&&!k("bug-for-in-skips-shadowed")});var a=Array.prototype,l=a.slice,
+d=a.concat,p=e.forEach,m=function(a,b,d){b=[0].concat(l.call(b,0));d=d||f.global;return function(c){b[0]=c;return a.apply(d,b)}},n=function(a){var b=this instanceof o&&k("array-extensible");"number"==typeof a&&(a=Array(a));var d=a&&"length"in a?a:arguments;if(b||!d.sort){for(var g=b?this:[],e=g.length=d.length,f=0;f<e;f++)g[f]=d[f];if(b)return g;d=g}c._mixin(d,r);d._NodeListCtor=function(a){return o(a)};return d},o=n,r=o.prototype=k("array-extensible")?[]:{};o._wrap=r._wrap=function(a,b,d){a=new (d||
+this._NodeListCtor||o)(a);return b?a._stash(b):a};o._adaptAsMap=function(a,b){return function(){return this.map(m(a,arguments,b))}};o._adaptAsForEach=function(a,b){return function(){this.forEach(m(a,arguments,b));return this}};o._adaptAsFilter=function(a,b){return function(){return this.filter(m(a,arguments,b))}};o._adaptWithCondition=function(a,b,d){return function(){var c=arguments,g=m(a,c,d);if(b.call(d||f.global,c))return this.map(g);this.forEach(g);return this}};p(["slice","splice"],function(b){var d=
+a[b];r[b]=function(){return this._wrap(d.apply(this,arguments),"slice"==b?this:null)}});p(["indexOf","lastIndexOf","every","some"],function(a){var b=e[a];r[a]=function(){return b.apply(f,[this].concat(l.call(arguments,0)))}});c.extend(n,{constructor:o,_NodeListCtor:o,toString:function(){return this.join(",")},_stash:function(a){this._parent=a;return this},on:function(a,b){var d=this.map(function(d){return j(d,a,b)});d.remove=function(){for(var a=0;a<d.length;a++)d[a].remove()};return d},end:function(){return this._parent?
+this._parent:new this._NodeListCtor(0)},concat:function(a){var b=l.call(this,0),c=e.map(arguments,function(a){return l.call(a,0)});return this._wrap(d.apply(b,c),this)},map:function(a,b){return this._wrap(e.map(this,a,b),this)},forEach:function(a,b){p(this,a,b);return this},filter:function(a){var b=arguments,d=this,c=0;if("string"==typeof a){d=q._filterResult(this,b[0]);if(1==b.length)return d._stash(this);c=1}return this._wrap(e.filter(d,b[c],b[c+1]),this)},instantiate:function(a,b){var d=c.isFunction(a)?
+a:c.getObject(a),b=b||{};return this.forEach(function(a){new d(b,a)})},at:function(){var a=new this._NodeListCtor(0);p(arguments,function(b){0>b&&(b=this.length+b);this[b]&&a.push(this[b])},this);return a._stash(this)}});var q=g(b,n);f.query=g(b,function(a){return n(a)});q.load=function(a,b,d){i.load(a,b,function(a){d(g(a,n))})};f._filterQueryResult=q._filterResult=function(a,b,d){return new n(q.filter(a,b,d))};f.NodeList=q.NodeList=n;return q})},"dojo/selector/_loader":function(){define(["../has",
+"require"],function(f,k){var h=document.createElement("div");f.add("dom-qsa2.1",!!h.querySelectorAll);f.add("dom-qsa3",function(){try{return h.innerHTML="<p class='TEST'></p>",1==h.querySelectorAll(".TEST:empty").length}catch(e){}});var j;return{load:function(e,c,i){var b=k,e="default"==e?f("config-selectorEngine")||"css3":e,e="css2"==e||"lite"==e?"./lite":"css2.1"==e?f("dom-qsa2.1")?"./lite":"./acme":"css3"==e?f("dom-qsa3")?"./lite":"./acme":"acme"==e?"./acme":(b=c)&&e;if("?"==e.charAt(e.length-
+1))var e=e.substring(0,e.length-1),g=!0;if(g&&(f("dom-compliant-qsa")||j))return i(j);b([e],function(a){"./lite"!=e&&(j=a);i(a)})}}})},"dojo/selector/acme":function(){define(["../dom","../sniff","../_base/array","../_base/lang","../_base/window"],function(f,k,h,j,e){var c=j.trim,i=h.forEach,b="BackCompat"==e.doc.compatMode,g=!1,a=function(){return!0},l=function(a){for(var a=0<=">~+".indexOf(a.slice(-1))?a+" * ":a+" ",b=function(b,d){return c(a.slice(b,d))},d=[],e=-1,f=-1,l=-1,i=-1,m=-1,j=-1,h=-1,
+k,o="",n="",p,q=0,t=a.length,r=null,u=null,v=function(){if(0<=j)r.id=b(j,q).replace(/\\/g,""),j=-1;if(0<=h){var a=h==q?null:b(h,q);r[0>">~+".indexOf(a)?"tag":"oper"]=a;h=-1}0<=m&&(r.classes.push(b(m+1,q).replace(/\\/g,"")),m=-1)};o=n,n=a.charAt(q),q<t;q++)if("\\"!=o)if(r||(p=q,r={query:null,pseudos:[],attrs:[],classes:[],tag:null,oper:null,id:null,getTag:function(){return g?this.otag:this.tag}},h=q),k)n==k&&(k=null);else if("'"==n||'"'==n)k=n;else if(0<=e)if("]"==n){u.attr?u.matchFor=b(l||e+1,q):
+u.attr=b(e+1,q);if((e=u.matchFor)&&('"'==e.charAt(0)||"'"==e.charAt(0)))u.matchFor=e.slice(1,-1);if(u.matchFor)u.matchFor=u.matchFor.replace(/\\/g,"");r.attrs.push(u);u=null;e=l=-1}else{if("="==n)l=0<="|~^$*".indexOf(o)?o:"",u.type=l+n,u.attr=b(e+1,q-l.length),l=q+1}else if(0<=f){if(")"==n){if(0<=i)u.value=b(f+1,q);i=f=-1}}else if("#"==n)v(),j=q+1;else if("."==n)v(),m=q;else if(":"==n)v(),i=q;else if("["==n)v(),e=q,u={};else if("("==n)0<=i&&(u={name:b(i+1,q),value:null},r.pseudos.push(u)),f=q;else if(" "==
+n&&o!=n){v();0<=i&&r.pseudos.push({name:b(i+1,q)});r.loops=r.pseudos.length||r.attrs.length||r.classes.length;r.oquery=r.query=b(p,q);r.otag=r.tag=r.oper?null:r.tag||"*";if(r.tag)r.tag=r.tag.toUpperCase();if(d.length&&d[d.length-1].oper)r.infixOper=d.pop(),r.query=r.infixOper.query+" "+r.query;d.push(r);r=null}return d},d=function(a,b){return!a?b:!b?a:function(){return a.apply(window,arguments)&&b.apply(window,arguments)}},p=function(a,b){var d=b||[];a&&d.push(a);return d},m=function(a){return 1==
+a.nodeType},n=function(a,b){return!a?"":"class"==b?a.className||"":"for"==b?a.htmlFor||"":"style"==b?a.style.cssText||"":(g?a.getAttribute(b):a.getAttribute(b,2))||""},o={"*=":function(a,b){return function(d){return 0<=n(d,a).indexOf(b)}},"^=":function(a,b){return function(d){return 0==n(d,a).indexOf(b)}},"$=":function(a,b){return function(d){var d=" "+n(d,a),c=d.lastIndexOf(b);return-1<c&&c==d.length-b.length}},"~=":function(a,b){var d=" "+b+" ";return function(b){return 0<=(" "+n(b,a)+" ").indexOf(d)}},
+"|=":function(a,b){var d=b+"-";return function(c){c=n(c,a);return c==b||0==c.indexOf(d)}},"=":function(a,b){return function(d){return n(d,a)==b}}},r="undefined"==typeof e.doc.firstChild.nextElementSibling,q=!r?"nextElementSibling":"nextSibling",v=!r?"previousElementSibling":"previousSibling",s=r?m:a,t=function(a){for(;a=a[v];)if(s(a))return!1;return!0},u=function(a){for(;a=a[q];)if(s(a))return!1;return!0},y=function(a){var b=a.parentNode,b=7!=b.nodeType?b:b.nextSibling,d=0,c=b.children||b.childNodes,
+g=a._i||a.getAttribute("_i")||-1,e=b._l||("undefined"!==typeof b.getAttribute?b.getAttribute("_l"):-1);if(!c)return-1;c=c.length;if(e==c&&0<=g&&0<=e)return g;k("ie")&&"undefined"!==typeof b.setAttribute?b.setAttribute("_l",c):b._l=c;g=-1;for(b=b.firstElementChild||b.firstChild;b;b=b[q])if(s(b))k("ie")?b.setAttribute("_i",++d):b._i=++d,a===b&&(g=d);return g},z=function(a){return!(y(a)%2)},I=function(a){return y(a)%2},J={checked:function(){return function(a){return!!("checked"in a?a.checked:a.selected)}},
+disabled:function(){return function(a){return a.disabled}},enabled:function(){return function(a){return!a.disabled}},"first-child":function(){return t},"last-child":function(){return u},"only-child":function(){return function(a){return t(a)&&u(a)}},empty:function(){return function(a){for(var b=a.childNodes,a=a.childNodes.length-1;0<=a;a--){var d=b[a].nodeType;if(1===d||3==d)return!1}return!0}},contains:function(a,b){var d=b.charAt(0);if('"'==d||"'"==d)b=b.slice(1,-1);return function(a){return 0<=
+a.innerHTML.indexOf(b)}},not:function(a,b){var d=l(b)[0],c={el:1};if("*"!=d.tag)c.tag=1;if(!d.classes.length)c.classes=1;var g=E(d,c);return function(a){return!g(a)}},"nth-child":function(a,b){var d=parseInt;if("odd"==b)return I;if("even"==b)return z;if(-1!=b.indexOf("n")){var c=b.split("n",2),g=c[0]?"-"==c[0]?-1:d(c[0]):1,e=c[1]?d(c[1]):0,f=0,l=-1;0<g?0>e?e=e%g&&g+e%g:0<e&&(e>=g&&(f=e-e%g),e%=g):0>g&&(g*=-1,0<e&&(l=e,e%=g));if(0<g)return function(a){a=y(a);return a>=f&&(0>l||a<=l)&&a%g==e};b=e}var i=
+d(b);return function(a){return y(a)==i}}},N=k("ie")&&(9>k("ie")||k("quirks"))?function(a){var b=a.toLowerCase();"class"==b&&(a="className");return function(d){return g?d.getAttribute(a):d[a]||d[b]}}:function(a){return function(b){return b&&b.getAttribute&&b.hasAttribute(a)}},E=function(b,c){if(!b)return a;var c=c||{},e=null;"el"in c||(e=d(e,m));"tag"in c||"*"!=b.tag&&(e=d(e,function(a){return a&&(g?a.tagName:a.tagName.toUpperCase())==b.getTag()}));"classes"in c||i(b.classes,function(a,b){var c=RegExp("(?:^|\\s)"+
+a+"(?:\\s|$)");e=d(e,function(a){return c.test(a.className)});e.count=b});"pseudos"in c||i(b.pseudos,function(a){var b=a.name;J[b]&&(e=d(e,J[b](b,a.value)))});"attrs"in c||i(b.attrs,function(a){var b,c=a.attr;a.type&&o[a.type]?b=o[a.type](c,a.matchFor):c.length&&(b=N(c));b&&(e=d(e,b))});"id"in c||b.id&&(e=d(e,function(a){return!!a&&a.id==b.id}));e||"default"in c||(e=a);return e},S=function(a){return function(b,d,c){for(;b=b[q];)if(!r||m(b)){(!c||P(b,c))&&a(b)&&d.push(b);break}return d}},Q=function(a){return function(b,
+d,c){for(b=b[q];b;){if(s(b)){if(c&&!P(b,c))break;a(b)&&d.push(b)}b=b[q]}return d}},B=function(b){b=b||a;return function(a,d,c){for(var g=0,e=a.children||a.childNodes;a=e[g++];)s(a)&&(!c||P(a,c))&&b(a,g)&&d.push(a);return d}},A={},w=function(d){var c=A[d.query];if(c)return c;var g=d.infixOper,g=g?g.oper:"",l=E(d,{el:1}),i="*"==d.tag,m=e.doc.getElementsByClassName;if(g){m={el:1};if(i)m.tag=1;l=E(d,m);"+"==g?c=S(l):"~"==g?c=Q(l):">"==g&&(c=B(l))}else if(d.id)l=!d.loops&&i?a:E(d,{el:1,id:1}),c=function(a,
+b){var c=f.byId(d.id,a.ownerDocument||a);if(c&&l(c)){if(9==a.nodeType)return p(c,b);for(var g=c.parentNode;g&&!(g==a);)g=g.parentNode;if(g)return p(c,b)}};else if(m&&/\{\s*\[native code\]\s*\}/.test(""+m)&&d.classes.length&&!b)var l=E(d,{el:1,classes:1,id:1}),j=d.classes.join(" "),c=function(a,b,d){for(var b=p(0,b),c,g=0,e=a.getElementsByClassName(j);c=e[g++];)l(c,a)&&P(c,d)&&b.push(c);return b};else!i&&!d.loops?c=function(a,b,c){for(var b=p(0,b),g=0,e=d.getTag(),e=e?a.getElementsByTagName(e):[];a=
+e[g++];)P(a,c)&&b.push(a);return b}:(l=E(d,{el:1,tag:1,id:1}),c=function(a,b,c){for(var b=p(0,b),g,e=0,f=(g=d.getTag())?a.getElementsByTagName(g):[];g=f[e++];)l(g,a)&&P(g,c)&&b.push(g);return b});return A[d.query]=c},x={},K={},H=function(a){var b=l(c(a));if(1==b.length){var d=w(b[0]);return function(a){if(a=d(a,[]))a.nozip=!0;return a}}return function(a){for(var a=p(a),d,c,g=b.length,e,f,l=0;l<g;l++){f=[];d=b[l];c=a.length-1;if(0<c)e={},f.nozip=!0;c=w(d);for(var i=0;d=a[i];i++)c(d,f,e);if(!f.length)break;
+a=f}return f}},C=k("ie")?"commentStrip":"nozip",F=!!e.doc.querySelectorAll,O=/\\[>~+]|n\+\d|([^ \\])?([>~+])([^ =])?/g,D=function(a,b,d,c){return d?(b?b+" ":"")+d+(c?" "+c:""):a},L=/([^[]*)([^\]]*])?/g,T=function(a,b,d){return b.replace(O,D)+(d||"")},G=function(a,d){a=a.replace(L,T);if(F){var c=K[a];if(c&&!d)return c}if(c=x[a])return c;var c=a.charAt(0),g=-1==a.indexOf(" ");0<=a.indexOf("#")&&g&&(d=!0);if(F&&!d&&-1==">~+".indexOf(c)&&(!k("ie")||-1==a.indexOf(":"))&&!(b&&0<=a.indexOf("."))&&-1==a.indexOf(":contains")&&
+-1==a.indexOf(":checked")&&-1==a.indexOf("|=")){var e=0<=">~+".indexOf(a.charAt(a.length-1))?a+" *":a;return K[a]=function(b){try{if(!(9==b.nodeType||g))throw"";var d=b.querySelectorAll(e);d[C]=!0;return d}catch(c){return G(a,!0)(b)}}}var f=a.match(/([^\s,](?:"(?:\\.|[^"])+"|'(?:\\.|[^'])+'|[^,])*)/g);return x[a]=2>f.length?H(a):function(a){for(var b=0,d=[],c;c=f[b++];)d=d.concat(H(c)(a));return d}},M=0,X=k("ie")?function(a){return g?a.getAttribute("_uid")||a.setAttribute("_uid",++M)||M:a.uniqueID}:
+function(a){return a._uid||(a._uid=++M)},P=function(a,b){if(!b)return 1;var d=X(a);return!b[d]?b[d]=1:0},Y=function(a){if(a&&a.nozip)return a;var b=[];if(!a||!a.length)return b;a[0]&&b.push(a[0]);if(2>a.length)return b;M++;var d,c;if(k("ie")&&g){var e=M+"";a[0].setAttribute("_zipIdx",e);for(d=1;c=a[d];d++)a[d].getAttribute("_zipIdx")!=e&&b.push(c),c.setAttribute("_zipIdx",e)}else if(k("ie")&&a.commentStrip)try{for(d=1;c=a[d];d++)m(c)&&b.push(c)}catch(f){}else{a[0]&&(a[0]._zipIdx=M);for(d=1;c=a[d];d++)a[d]._zipIdx!=
+M&&b.push(c),c._zipIdx=M}return b},U=function(a,b){b=b||e.doc;g="div"===(b.ownerDocument||b).createElement("div").tagName;var d=G(a)(b);return d&&d.nozip?d:Y(d)};U.filter=function(a,b,d){for(var c=[],g=l(b),g=1==g.length&&!/[^\w#\.]/.test(b)?E(g[0]):function(a){return-1!=h.indexOf(U(b,f.byId(d)),a)},e=0,i;i=a[e];e++)g(i)&&c.push(i);return c};return U})},"dojo/NodeList-dom":function(){define("dojo/NodeList-dom","./_base/kernel,./query,./_base/array,./_base/lang,./dom-class,./dom-construct,./dom-geometry,./dom-attr,./dom-style".split(","),
+function(f,k,h,j,e,c,i,b,g){function a(a){return function(b,d,c){return 2==arguments.length?a["string"==typeof d?"get":"set"](b,d):a.set(b,d,c)}}var l=function(a){return 1==a.length&&"string"==typeof a[0]},d=function(a){var b=a.parentNode;b&&b.removeChild(a)},p=k.NodeList,m=p._adaptWithCondition,n=p._adaptAsForEach,o=p._adaptAsMap;j.extend(p,{_normalize:function(a,b){var d=!0===a.parse;if("string"==typeof a.template)var g=a.templateFunc||f.string&&f.string.substitute,a=g?g(a.template,a):a;g=typeof a;
+"string"==g||"number"==g?(a=c.toDom(a,b&&b.ownerDocument),a=11==a.nodeType?j._toArray(a.childNodes):[a]):j.isArrayLike(a)?j.isArray(a)||(a=j._toArray(a)):a=[a];if(d)a._runParse=!0;return a},_cloneNode:function(a){return a.cloneNode(!0)},_place:function(a,b,d,g){if(!(1!=b.nodeType&&"only"==d))for(var e,l=a.length,i=l-1;0<=i;i--){var m=g?this._cloneNode(a[i]):a[i];if(a._runParse&&f.parser&&f.parser.parse){e||(e=b.ownerDocument.createElement("div"));e.appendChild(m);f.parser.parse(e);for(m=e.firstChild;e.firstChild;)e.removeChild(e.firstChild)}i==
+l-1?c.place(m,b,d):b.parentNode.insertBefore(m,b);b=m}},position:o(i.position),attr:m(a(b),l),style:m(a(g),l),addClass:n(e.add),removeClass:n(e.remove),toggleClass:n(e.toggle),replaceClass:n(e.replace),empty:n(c.empty),removeAttr:n(b.remove),marginBox:o(i.getMarginBox),place:function(a,b){var d=k(a)[0];return this.forEach(function(a){c.place(a,d,b)})},orphan:function(a){return(a?k._filterResult(this,a):this).forEach(d)},adopt:function(a,b){return k(a).place(this[0],b)._stash(this)},query:function(a){if(!a)return this;
+var b=new p;this.map(function(d){k(a,d).forEach(function(a){void 0!==a&&b.push(a)})});return b._stash(this)},filter:function(a){var b=arguments,d=this,c=0;if("string"==typeof a){d=k._filterResult(this,b[0]);if(1==b.length)return d._stash(this);c=1}return this._wrap(h.filter(d,b[c],b[c+1]),this)},addContent:function(a,b){for(var a=this._normalize(a,this[0]),d=0,c;c=this[d];d++)this._place(a,c,b,0<d);return this}});return p})},"dojo/_base/fx":function(){define("./kernel,./config,./lang,../Evented,./Color,./connect,./sniff,../dom,../dom-style".split(","),
+function(f,k,h,j,e,c,i,b,g){var a=h.mixin,l={},d=l._Line=function(a,b){this.start=a;this.end=b};d.prototype.getValue=function(a){return(this.end-this.start)*a+this.start};var p=l.Animation=function(b){a(this,b);if(h.isArray(this.curve))this.curve=new d(this.curve[0],this.curve[1])};p.prototype=new j;h.extend(p,{duration:350,repeat:0,rate:20,_percent:0,_startRepeatCount:0,_getStep:function(){var a=this._percent,b=this.easing;return b?b(a):a},_fire:function(a,b){var d=b||[];if(this[a])if(k.debugAtAllCosts)this[a].apply(this,
+d);else try{this[a].apply(this,d)}catch(c){}return this},play:function(a,b){this._delayTimer&&this._clearTimer();if(b)this._stopTimer(),this._active=this._paused=!1,this._percent=0;else if(this._active&&!this._paused)return this;this._fire("beforeBegin",[this.node]);var d=a||this.delay,c=h.hitch(this,"_play",b);if(0<d)return this._delayTimer=setTimeout(c,d),this;c();return this},_play:function(){this._delayTimer&&this._clearTimer();this._startTime=(new Date).valueOf();this._paused&&(this._startTime-=
this.duration*this._percent);this._active=!0;this._paused=!1;var a=this.curve.getValue(this._getStep());if(!this._percent){if(!this._startRepeatCount)this._startRepeatCount=this.repeat;this._fire("onBegin",[a])}this._fire("onPlay",[a]);this._cycle();return this},pause:function(){this._delayTimer&&this._clearTimer();this._stopTimer();if(!this._active)return this;this._paused=!0;this._fire("onPause",[this.curve.getValue(this._getStep())]);return this},gotoPercent:function(a,b){this._stopTimer();this._active=
this._paused=!0;this._percent=a;b&&this.play();return this},stop:function(a){this._delayTimer&&this._clearTimer();if(!this._timer)return this;this._stopTimer();if(a)this._percent=1;this._fire("onStop",[this.curve.getValue(this._getStep())]);this._active=this._paused=!1;return this},status:function(){return this._active?this._paused?"paused":"playing":"stopped"},_cycle:function(){if(this._active){var a=(new Date).valueOf(),a=0===this.duration?1:(a-this._startTime)/this.duration;1<=a&&(a=1);this._percent=
a;this.easing&&(a=this.easing(a));this._fire("onAnimate",[this.curve.getValue(a)]);if(1>this._percent)this._startTimer();else{this._active=!1;if(0<this.repeat)this.repeat--,this.play(null,!0);else if(-1==this.repeat)this.play(null,!0);else if(this._startRepeatCount)this.repeat=this._startRepeatCount,this._startRepeatCount=0;this._percent=0;this._fire("onEnd",[this.node]);!this.repeat&&this._stopTimer()}}return this},_clearTimer:function(){clearTimeout(this._delayTimer);delete this._delayTimer}});
-var m=0,n=null,o={run:function(){}};i.extend(p,{_startTimer:function(){if(!this._timer)this._timer=g.connect(o,"run",this,"_cycle"),m++;n||(n=setInterval(i.hitch(o,"run"),this.rate))},_stopTimer:function(){if(this._timer)g.disconnect(this._timer),this._timer=null,m--;0>=m&&(clearInterval(n),n=null,m=0)}});var r=h("ie")?function(a){var b=a.style;if(!b.width.length&&"auto"==f.get(a,"width"))b.width="auto"}:function(){};k._fade=function(d){d.node=b.byId(d.node);var c=a({properties:{}},d),d=c.properties.opacity=
-{};d.start=!("start"in c)?function(){return+f.get(c.node,"opacity")||0}:c.start;d.end=c.end;d=k.animateProperty(c);g.connect(d,"beforeBegin",i.partial(r,c.node));return d};k.fadeIn=function(b){return k._fade(a({end:1},b))};k.fadeOut=function(b){return k._fade(a({end:0},b))};k._defaultEasing=function(a){return 0.5+Math.sin((a+1.5)*Math.PI)/2};var q=function(a){this._properties=a;for(var b in a){var d=a[b];if(d.start instanceof c)d.tempColor=new c}};q.prototype.getValue=function(a){var b={},d;for(d in this._properties){var f=
-this._properties[d],g=f.start;g instanceof c?b[d]=c.blendColors(g,f.end,a,f.tempColor).toCss():i.isArray(g)||(b[d]=(f.end-g)*a+g+("opacity"!=d?f.units||"px":0))}return b};k.animateProperty=function(d){var k=d.node=b.byId(d.node);if(!d.easing)d.easing=e._defaultEasing;d=new p(d);g.connect(d,"beforeBegin",d,function(){var b={},d;for(d in this.properties){if("width"==d||"height"==d)this.node.display="block";var g=this.properties[d];i.isFunction(g)&&(g=g(k));g=b[d]=a({},i.isObject(g)?g:{end:g});if(i.isFunction(g.start))g.start=
-g.start(k);if(i.isFunction(g.end))g.end=g.end(k);var e=0<=d.toLowerCase().indexOf("color"),m=function(a,b){var d={height:a.offsetHeight,width:a.offsetWidth}[b];if(void 0!==d)return d;d=f.get(a,b);return"opacity"==b?+d:e?d:parseFloat(d)};if("end"in g){if(!("start"in g))g.start=m(k,d)}else g.end=m(k,d);e?(g.start=new c(g.start),g.end=new c(g.end)):g.start="opacity"==d?+g.start:parseFloat(g.start)}this.curve=new q(b)});g.connect(d,"onAnimate",i.hitch(f,"set",d.node));return d};k.anim=function(a,b,d,
-c,f,g){return k.animateProperty({node:a,duration:d||p.prototype.duration,properties:b,easing:c,onEnd:f}).play(g||0)};a(e,k);e._Animation=p;return k})},"dijit/layout/BorderContainer":function(){define("dojo/_base/array,dojo/cookie,dojo/_base/declare,dojo/dom-class,dojo/dom-construct,dojo/dom-geometry,dojo/dom-style,dojo/_base/event,dojo/keys,dojo/_base/lang,dojo/on,dojo/touch,../_WidgetBase,../_Widget,../_TemplatedMixin,./_LayoutWidget,./utils".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o,r){var q=
-i("dijit.layout._Splitter",[m,n],{live:!0,templateString:'<div class="dijitSplitter" data-dojo-attach-event="onkeypress:_onKeyPress,press:_startDrag,onmouseenter:_onMouse,onmouseleave:_onMouse" tabIndex="0" role="separator"><div class="dijitSplitterThumb"></div></div>',constructor:function(){this._handlers=[]},postMixInProperties:function(){this.inherited(arguments);this.horizontal=/top|bottom/.test(this.region);this._factor=/top|left/.test(this.region)?1:-1;this._cookieName=this.container.id+"_"+
-this.region},buildRendering:function(){this.inherited(arguments);l.add(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V"));if(this.container.persist){var a=j(this._cookieName);a&&(this.child.domNode.style[this.horizontal?"height":"width"]=a)}},_computeMaxSize:function(){var a=this.horizontal?"h":"w",b=g.getMarginBox(this.child.domNode)[a],d=e.filter(this.container.getChildren(),function(a){return"center"==a.region})[0],a=g.getMarginBox(d.domNode)[a];return Math.min(this.child.maxSize,b+a)},_startDrag:function(f){if(!this.cover)this.cover=
-c.place("<div class=dijitSplitterCover></div>",this.child.domNode,"after");l.add(this.cover,"dijitSplitterCoverActive");this.fake&&c.destroy(this.fake);if(!(this._resize=this.live))(this.fake=this.domNode.cloneNode(!0)).removeAttribute("id"),l.add(this.domNode,"dijitSplitterShadow"),c.place(this.fake,this.domNode,"after");l.add(this.domNode,"dijitSplitterActive dijitSplitter"+(this.horizontal?"H":"V")+"Active");this.fake&&l.remove(this.fake,"dijitSplitterHover dijitSplitter"+(this.horizontal?"H":
-"V")+"Hover");var e=this._factor,m=this.horizontal,h=m?"pageY":"pageX",i=f[h],j=this.domNode.style,p=g.getMarginBox(this.child.domNode)[m?"h":"w"],n=this._computeMaxSize(),o=this.child.minSize||20,m=this.region,q="top"==m||"bottom"==m?"top":"left",r=parseInt(j[q],10),v=this._resize,A=a.hitch(this.container,"_layoutChildren",this.child.id),m=this.ownerDocument;this._handlers=this._handlers.concat([k(m,d.move,this._drag=function(a,b){var d=a[h]-i,c=e*d+p,f=Math.max(Math.min(c,n),o);(v||b)&&A(f);j[q]=
-d+r+e*(f-c)+"px"}),k(m,"dragstart",b.stop),k(this.ownerDocumentBody,"selectstart",b.stop),k(m,d.release,a.hitch(this,"_stopDrag"))]);b.stop(f)},_onMouse:function(a){a="mouseover"==a.type||"mouseenter"==a.type;l.toggle(this.domNode,"dijitSplitterHover",a);l.toggle(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V")+"Hover",a)},_stopDrag:function(a){try{this.cover&&l.remove(this.cover,"dijitSplitterCoverActive"),this.fake&&c.destroy(this.fake),l.remove(this.domNode,"dijitSplitterActive dijitSplitter"+
-(this.horizontal?"H":"V")+"Active dijitSplitterShadow"),this._drag(a),this._drag(a,!0)}finally{this._cleanupHandlers(),delete this._drag}this.container.persist&&j(this._cookieName,this.child.domNode.style[this.horizontal?"height":"width"],{expires:365})},_cleanupHandlers:function(){for(var a;a=this._handlers.pop();)a.remove()},_onKeyPress:function(a){this._resize=!0;var d=this.horizontal,c=1;switch(a.charOrCode){case d?f.UP_ARROW:f.LEFT_ARROW:c*=-1;case d?f.DOWN_ARROW:f.RIGHT_ARROW:break;default:return}d=
-g.getMarginSize(this.child.domNode)[d?"h":"w"]+this._factor*c;this.container._layoutChildren(this.child.id,Math.max(Math.min(d,this._computeMaxSize()),this.child.minSize));b.stop(a)},destroy:function(){this._cleanupHandlers();delete this.child;delete this.container;delete this.cover;delete this.fake;this.inherited(arguments)}}),v=i("dijit.layout._Gutter",[m,n],{templateString:'<div class="dijitGutter" role="presentation"></div>',postMixInProperties:function(){this.inherited(arguments);this.horizontal=
-/top|bottom/.test(this.region)},buildRendering:function(){this.inherited(arguments);l.add(this.domNode,"dijitGutter"+(this.horizontal?"H":"V"))}}),i=i("dijit.layout.BorderContainer",o,{design:"headline",gutters:!0,liveSplitters:!0,persist:!1,baseClass:"dijitBorderContainer",_splitterClass:q,postMixInProperties:function(){this.gutters||(this.baseClass+="NoGutter");this.inherited(arguments)},startup:function(){this._started||(e.forEach(this.getChildren(),this._setupChild,this),this.inherited(arguments))},
-_setupChild:function(b){var d=b.region;if(d){this.inherited(arguments);l.add(b.domNode,this.baseClass+"Pane");var f=this.isLeftToRight();"leading"==d&&(d=f?"left":"right");"trailing"==d&&(d=f?"right":"left");if("center"!=d&&(b.splitter||this.gutters)&&!b._splitterWidget)f=b.splitter?this._splitterClass:v,a.isString(f)&&(f=a.getObject(f)),f=new f({id:b.id+"_splitter",container:this,child:b,region:d,live:this.liveSplitters}),f.isSplitter=!0,b._splitterWidget=f,c.place(f.domNode,b.domNode,"after"),f.startup();
-b.region=d}},layout:function(){this._layoutChildren()},addChild:function(a,b){this.inherited(arguments);this._started&&this.layout()},removeChild:function(a){var b=a.region,d=a._splitterWidget;d&&(d.destroy(),delete a._splitterWidget);this.inherited(arguments);this._started&&this._layoutChildren();l.remove(a.domNode,this.baseClass+"Pane");h.set(a.domNode,{top:"auto",bottom:"auto",left:"auto",right:"auto",position:"static"});h.set(a.domNode,"top"==b||"bottom"==b?"width":"height","auto")},getChildren:function(){return e.filter(this.inherited(arguments),
-function(a){return!a.isSplitter})},getSplitter:function(a){return e.filter(this.getChildren(),function(b){return b.region==a})[0]._splitterWidget},resize:function(a,b){if(!this.cs||!this.pe){var d=this.domNode;this.cs=h.getComputedStyle(d);this.pe=g.getPadExtents(d,this.cs);this.pe.r=h.toPixelValue(d,this.cs.paddingRight);this.pe.b=h.toPixelValue(d,this.cs.paddingBottom);h.set(d,"padding","0px")}this.inherited(arguments)},_layoutChildren:function(a,b){if(this._borderBox&&this._borderBox.h){var d=
-e.map(this.getChildren(),function(a,b){return{pane:a,weight:["center"==a.region?Infinity:0,a.layoutPriority,("sidebar"==this.design?1:-1)*(/top|bottom/.test(a.region)?1:-1),b]}},this);d.sort(function(a,b){for(var d=a.weight,c=b.weight,f=0;f<d.length;f++)if(d[f]!=c[f])return d[f]-c[f];return 0});var c=[];e.forEach(d,function(a){a=a.pane;c.push(a);a._splitterWidget&&c.push(a._splitterWidget)});r.layoutChildren(this.domNode,{l:this.pe.l,t:this.pe.t,w:this._borderBox.w-this.pe.w,h:this._borderBox.h-this.pe.h},
-c,a,b)}},destroyRecursive:function(){e.forEach(this.getChildren(),function(a){var b=a._splitterWidget;b&&b.destroy();delete a._splitterWidget});this.inherited(arguments)}});i.ChildWidgetProperties={region:"",layoutPriority:0,splitter:!1,minSize:0,maxSize:Infinity};a.extend(p,i.ChildWidgetProperties);i._Splitter=q;i._Gutter=v;return i})},"dojo/cookie":function(){define("dojo/cookie",["./_base/kernel","./regexp"],function(e,j){e.cookie=function(e,l,c){var g=document.cookie,h;if(1==arguments.length)h=
-(h=g.match(RegExp("(?:^|; )"+j.escapeString(e)+"=([^;]*)")))?decodeURIComponent(h[1]):void 0;else{c=c||{};g=c.expires;if("number"==typeof g){var b=new Date;b.setTime(b.getTime()+864E5*g);g=c.expires=b}if(g&&g.toUTCString)c.expires=g.toUTCString();var l=encodeURIComponent(l),g=e+"="+l,f;for(f in c)g+="; "+f,b=c[f],!0!==b&&(g+="="+b);document.cookie=g}return h};e.cookie.isSupported=function(){if(!("cookieEnabled"in navigator))this("__djCookieTest__","CookiesAllowed"),navigator.cookieEnabled="CookiesAllowed"==
-this("__djCookieTest__"),navigator.cookieEnabled&&this("__djCookieTest__","",{expires:-1});return navigator.cookieEnabled};return e.cookie})},"dojo/regexp":function(){define(["./_base/kernel","./_base/lang"],function(e,j){var i={};j.setObject("dojo.regexp",i);i.escapeString=function(e,c){return e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,function(g){return c&&-1!=c.indexOf(g)?g:"\\"+g})};i.buildGroupRE=function(e,c,g){if(!(e instanceof Array))return c(e);for(var h=[],b=0;b<e.length;b++)h.push(c(e[b]));
-return i.group(h.join("|"),g)};i.group=function(e,c){return"("+(c?"?:":"")+e+")"};return i})},"dojo/touch":function(){define("./_base/kernel,./_base/lang,./aspect,./dom,./on,./has,./mouse,./ready,./_base/window".split(","),function(e,j,i,l,c,g,h,b,f){function a(a){return function(b,d){return c(b,a,d)}}var i=g("touch"),k=!1;g("ios")&&(g=navigator.userAgent.match(/OS ([\d_]+)/)?RegExp.$1:"1",k=5>parseFloat(g.replace(/_/,".").replace(/_/g,"")));var d,p;i&&(b(function(){p=f.body();f.doc.addEventListener("touchstart",
-function(a){var b=p;p=a.target;c.emit(b,"dojotouchout",{target:b,relatedTarget:p,bubbles:!0});c.emit(p,"dojotouchover",{target:p,relatedTarget:b,bubbles:!0})},!0);c(f.doc,"touchmove",function(a){if((a=f.doc.elementFromPoint(a.pageX-(k?0:f.global.pageXOffset),a.pageY-(k?0:f.global.pageYOffset)))&&p!==a)c.emit(p,"dojotouchout",{target:p,relatedTarget:a,bubbles:!0}),c.emit(a,"dojotouchover",{target:a,relatedTarget:p,bubbles:!0}),p=a})}),d=function(a,b){return c(f.doc,"touchmove",function(d){(a===f.doc||
-l.isDescendant(p,a))&&b.call(this,j.mixin({},d,{target:p,touches:d.touches,preventDefault:function(){d.preventDefault()},stopPropagation:function(){d.stopPropagation()}}))})});h={press:a(i?"touchstart":"mousedown"),move:i?d:a("mousemove"),release:a(i?"touchend":"mouseup"),cancel:i?a("touchcancel"):h.leave,over:a(i?"dojotouchover":"mouseover"),out:a(i?"dojotouchout":"mouseout"),enter:h._eventHandler(i?"dojotouchover":"mouseover"),leave:h._eventHandler(i?"dojotouchout":"mouseout")};return e.touch=h})},
-"dijit/_WidgetBase":function(){define("require,dojo/_base/array,dojo/aspect,dojo/_base/config,dojo/_base/connect,dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-class,dojo/dom-construct,dojo/dom-geometry,dojo/dom-style,dojo/has,dojo/_base/kernel,dojo/_base/lang,dojo/on,dojo/ready,dojo/Stateful,dojo/topic,dojo/_base/window,./Destroyable,./registry".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o,r,q,v,s,u,t){function y(a){return function(d){b[d?"set":"remove"](this.domNode,a,d);this._set(a,
-d)}}p.add("dijit-legacy-requires",!m.isAsync);p("dijit-legacy-requires")&&r(0,function(){e(["dijit/_base/manager"])});var z={};return g("dijit._WidgetBase",[q,u],{id:"",_setIdAttr:"domNode",lang:"",_setLangAttr:y("lang"),dir:"",_setDirAttr:y("dir"),textDir:"","class":"",_setClassAttr:{node:"domNode",type:"class"},style:"",title:"",tooltip:"",baseClass:"",srcNodeRef:null,domNode:null,containerNode:null,ownerDocument:null,_setOwnerDocumentAttr:function(a){this._set("ownerDocument",a)},attributeMap:{},
-_blankGif:l.blankGif||e.toUrl("dojo/resources/blank.gif"),postscript:function(a,b){this.create(a,b)},create:function(a,b){this.srcNodeRef=h.byId(b);this._connects=[];this._supportingWidgets=[];if(this.srcNodeRef&&"string"==typeof this.srcNodeRef.id)this.id=this.srcNodeRef.id;if(a)this.params=a,n.mixin(this,a);this.postMixInProperties();if(!this.id)this.id=t.getUniqueId(this.declaredClass.replace(/\./g,"_")),this.params&&delete this.params.id;this.ownerDocument=this.ownerDocument||(this.srcNodeRef?
-this.srcNodeRef.ownerDocument:s.doc);this.ownerDocumentBody=s.body(this.ownerDocument);t.add(this);this.buildRendering();var d;if(this.domNode){this._applyAttributes();var c=this.srcNodeRef;c&&c.parentNode&&this.domNode!==c&&(c.parentNode.replaceChild(this.domNode,c),d=!0);this.domNode.setAttribute("widgetId",this.id)}this.postCreate();d&&delete this.srcNodeRef;this._created=!0},_applyAttributes:function(){var a=this.constructor,b=a._setterAttrs;if(!b){var b=a._setterAttrs=[],d;for(d in this.attributeMap)b.push(d);
-var a=a.prototype,c;for(c in a)c in this.attributeMap||"_set"+c.replace(/^[a-z]|-[a-zA-Z]/g,function(a){return a.charAt(a.length-1).toUpperCase()})+"Attr"in a&&b.push(c)}var f={},g;for(g in this.params||{})f[g]=this[g];j.forEach(b,function(a){a in f||this[a]&&this.set(a,this[a])},this);for(g in f)this.set(g,f[g])},postMixInProperties:function(){},buildRendering:function(){if(!this.domNode)this.domNode=this.srcNodeRef||this.ownerDocument.createElement("div");if(this.baseClass){var a=this.baseClass.split(" ");
-this.isLeftToRight()||(a=a.concat(j.map(a,function(a){return a+"Rtl"})));f.add(this.domNode,a)}},postCreate:function(){},startup:function(){if(!this._started)this._started=!0,j.forEach(this.getChildren(),function(a){if(!a._started&&!a._destroyed&&n.isFunction(a.startup))a.startup(),a._started=!0})},destroyRecursive:function(a){this._beingDestroyed=!0;this.destroyDescendants(a);this.destroy(a)},destroy:function(a){function b(d){d.destroyRecursive?d.destroyRecursive(a):d.destroy&&d.destroy(a)}this._beingDestroyed=
-!0;this.uninitialize();j.forEach(this._connects,n.hitch(this,"disconnect"));j.forEach(this._supportingWidgets,b);this.domNode&&j.forEach(t.findWidgets(this.domNode,this.containerNode),b);this.destroyRendering(a);t.remove(this.id);this._destroyed=!0},destroyRendering:function(d){this.bgIframe&&(this.bgIframe.destroy(d),delete this.bgIframe);this.domNode&&(d?b.remove(this.domNode,"widgetId"):a.destroy(this.domNode),delete this.domNode);this.srcNodeRef&&(d||a.destroy(this.srcNodeRef),delete this.srcNodeRef)},
-destroyDescendants:function(a){j.forEach(this.getChildren(),function(b){b.destroyRecursive&&b.destroyRecursive(a)})},uninitialize:function(){return!1},_setStyleAttr:function(a){var b=this.domNode;n.isObject(a)?d.set(b,a):b.style.cssText=b.style.cssText?b.style.cssText+("; "+a):a;this._set("style",a)},_attrToDom:function(a,d,c){c=3<=arguments.length?c:this.attributeMap[a];j.forEach(n.isArray(c)?c:[c],function(c){var g=this[c.node||c||"domNode"];switch(c.type||"attribute"){case "attribute":n.isFunction(d)&&
-(d=n.hitch(this,d));c=c.attribute?c.attribute:/^on[A-Z][a-zA-Z]*$/.test(a)?a.toLowerCase():a;g.tagName?b.set(g,c,d):g.set(c,d);break;case "innerText":g.innerHTML="";g.appendChild(this.ownerDocument.createTextNode(d));break;case "innerHTML":g.innerHTML=d;break;case "class":f.replace(g,d,this[a])}},this)},get:function(a){var b=this._getAttrNames(a);return this[b.g]?this[b.g]():this[a]},set:function(a,b){if("object"===typeof a){for(var d in a)this.set(d,a[d]);return this}d=this._getAttrNames(a);var c=
-this[d.s];if(n.isFunction(c))var f=c.apply(this,Array.prototype.slice.call(arguments,1));else{var c=this.focusNode&&!n.isFunction(this.focusNode)?"focusNode":"domNode",g=this[c].tagName,e;if(!(e=z[g])){e=this[c];var k={},m;for(m in e)k[m.toLowerCase()]=!0;e=z[g]=k}m=a in this.attributeMap?this.attributeMap[a]:d.s in this?this[d.s]:d.l in e&&"function"!=typeof b||/^aria-|^data-|^role$/.test(a)?c:null;null!=m&&this._attrToDom(a,b,m);this._set(a,b)}return f||this},_attrPairNames:{},_getAttrNames:function(a){var b=
+var m=0,n=null,o={run:function(){}};h.extend(p,{_startTimer:function(){if(!this._timer)this._timer=c.connect(o,"run",this,"_cycle"),m++;n||(n=setInterval(h.hitch(o,"run"),this.rate))},_stopTimer:function(){if(this._timer)c.disconnect(this._timer),this._timer=null,m--;0>=m&&(clearInterval(n),n=null,m=0)}});var r=i("ie")?function(a){var b=a.style;if(!b.width.length&&"auto"==g.get(a,"width"))b.width="auto"}:function(){};l._fade=function(d){d.node=b.byId(d.node);var e=a({properties:{}},d),d=e.properties.opacity=
+{};d.start=!("start"in e)?function(){return+g.get(e.node,"opacity")||0}:e.start;d.end=e.end;d=l.animateProperty(e);c.connect(d,"beforeBegin",h.partial(r,e.node));return d};l.fadeIn=function(b){return l._fade(a({end:1},b))};l.fadeOut=function(b){return l._fade(a({end:0},b))};l._defaultEasing=function(a){return 0.5+Math.sin((a+1.5)*Math.PI)/2};var q=function(a){this._properties=a;for(var b in a){var d=a[b];if(d.start instanceof e)d.tempColor=new e}};q.prototype.getValue=function(a){var b={},d;for(d in this._properties){var c=
+this._properties[d],g=c.start;g instanceof e?b[d]=e.blendColors(g,c.end,a,c.tempColor).toCss():h.isArray(g)||(b[d]=(c.end-g)*a+g+("opacity"!=d?c.units||"px":0))}return b};l.animateProperty=function(d){var l=d.node=b.byId(d.node);if(!d.easing)d.easing=f._defaultEasing;d=new p(d);c.connect(d,"beforeBegin",d,function(){var b={},d;for(d in this.properties){if("width"==d||"height"==d)this.node.display="block";var c=this.properties[d];h.isFunction(c)&&(c=c(l));c=b[d]=a({},h.isObject(c)?c:{end:c});if(h.isFunction(c.start))c.start=
+c.start(l);if(h.isFunction(c.end))c.end=c.end(l);var f=0<=d.toLowerCase().indexOf("color"),i=function(a,b){var d={height:a.offsetHeight,width:a.offsetWidth}[b];if(void 0!==d)return d;d=g.get(a,b);return"opacity"==b?+d:f?d:parseFloat(d)};if("end"in c){if(!("start"in c))c.start=i(l,d)}else c.end=i(l,d);f?(c.start=new e(c.start),c.end=new e(c.end)):c.start="opacity"==d?+c.start:parseFloat(c.start)}this.curve=new q(b)});c.connect(d,"onAnimate",h.hitch(g,"set",d.node));return d};l.anim=function(a,b,d,
+c,g,e){return l.animateProperty({node:a,duration:d||p.prototype.duration,properties:b,easing:c,onEnd:g}).play(e||0)};a(f,l);f._Animation=p;return l})},"dojox/html/entities":function(){define(["dojo/_base/lang"],function(f){var k=f.getObject("dojox.html.entities",!0),h=function(e,c){var f,b;if(c._encCache&&c._encCache.regexp&&c._encCache.mapper&&c.length==c._encCache.length)f=c._encCache.mapper,b=c._encCache.regexp;else{f={};b=["["];var g;for(g=0;g<c.length;g++)f[c[g][0]]="&"+c[g][1]+";",b.push(c[g][0]);
+b.push("]");b=RegExp(b.join(""),"g");c._encCache={mapper:f,regexp:b,length:c.length}}return e=e.replace(b,function(a){return f[a]})},j=function(e,c){var f,b;if(c._decCache&&c._decCache.regexp&&c._decCache.mapper&&c.length==c._decCache.length)f=c._decCache.mapper,b=c._decCache.regexp;else{f={};b=["("];var g;for(g=0;g<c.length;g++){var a="&"+c[g][1]+";";g&&b.push("|");f[a]=c[g][0];b.push(a)}b.push(")");b=RegExp(b.join(""),"g");c._decCache={mapper:f,regexp:b,length:c.length}}return e=e.replace(b,function(a){return f[a]})};
+k.html=[["&","amp"],['"',"quot"],["<","lt"],[">","gt"],["\u00a0","nbsp"]];k.latin=[["\u00a1","iexcl"],["\u00a2","cent"],["\u00a3","pound"],["\u20ac","euro"],["\u00a4","curren"],["\u00a5","yen"],["\u00a6","brvbar"],["\u00a7","sect"],["\u00a8","uml"],["\u00a9","copy"],["\u00aa","ordf"],["\u00ab","laquo"],["\u00ac","not"],["\u00ad","shy"],["\u00ae","reg"],["\u00af","macr"],["\u00b0","deg"],["\u00b1","plusmn"],["\u00b2","sup2"],["\u00b3","sup3"],["\u00b4","acute"],["\u00b5","micro"],["\u00b6","para"],
+["\u00b7","middot"],["\u00b8","cedil"],["\u00b9","sup1"],["\u00ba","ordm"],["\u00bb","raquo"],["\u00bc","frac14"],["\u00bd","frac12"],["\u00be","frac34"],["\u00bf","iquest"],["\u00c0","Agrave"],["\u00c1","Aacute"],["\u00c2","Acirc"],["\u00c3","Atilde"],["\u00c4","Auml"],["\u00c5","Aring"],["\u00c6","AElig"],["\u00c7","Ccedil"],["\u00c8","Egrave"],["\u00c9","Eacute"],["\u00ca","Ecirc"],["\u00cb","Euml"],["\u00cc","Igrave"],["\u00cd","Iacute"],["\u00ce","Icirc"],["\u00cf","Iuml"],["\u00d0","ETH"],["\u00d1",
+"Ntilde"],["\u00d2","Ograve"],["\u00d3","Oacute"],["\u00d4","Ocirc"],["\u00d5","Otilde"],["\u00d6","Ouml"],["\u00d7","times"],["\u00d8","Oslash"],["\u00d9","Ugrave"],["\u00da","Uacute"],["\u00db","Ucirc"],["\u00dc","Uuml"],["\u00dd","Yacute"],["\u00de","THORN"],["\u00df","szlig"],["\u00e0","agrave"],["\u00e1","aacute"],["\u00e2","acirc"],["\u00e3","atilde"],["\u00e4","auml"],["\u00e5","aring"],["\u00e6","aelig"],["\u00e7","ccedil"],["\u00e8","egrave"],["\u00e9","eacute"],["\u00ea","ecirc"],["\u00eb",
+"euml"],["\u00ec","igrave"],["\u00ed","iacute"],["\u00ee","icirc"],["\u00ef","iuml"],["\u00f0","eth"],["\u00f1","ntilde"],["\u00f2","ograve"],["\u00f3","oacute"],["\u00f4","ocirc"],["\u00f5","otilde"],["\u00f6","ouml"],["\u00f7","divide"],["\u00f8","oslash"],["\u00f9","ugrave"],["\u00fa","uacute"],["\u00fb","ucirc"],["\u00fc","uuml"],["\u00fd","yacute"],["\u00fe","thorn"],["\u00ff","yuml"],["\u0192","fnof"],["\u0391","Alpha"],["\u0392","Beta"],["\u0393","Gamma"],["\u0394","Delta"],["\u0395","Epsilon"],
+["\u0396","Zeta"],["\u0397","Eta"],["\u0398","Theta"],["\u0399","Iota"],["\u039a","Kappa"],["\u039b","Lambda"],["\u039c","Mu"],["\u039d","Nu"],["\u039e","Xi"],["\u039f","Omicron"],["\u03a0","Pi"],["\u03a1","Rho"],["\u03a3","Sigma"],["\u03a4","Tau"],["\u03a5","Upsilon"],["\u03a6","Phi"],["\u03a7","Chi"],["\u03a8","Psi"],["\u03a9","Omega"],["\u03b1","alpha"],["\u03b2","beta"],["\u03b3","gamma"],["\u03b4","delta"],["\u03b5","epsilon"],["\u03b6","zeta"],["\u03b7","eta"],["\u03b8","theta"],["\u03b9","iota"],
+["\u03ba","kappa"],["\u03bb","lambda"],["\u03bc","mu"],["\u03bd","nu"],["\u03be","xi"],["\u03bf","omicron"],["\u03c0","pi"],["\u03c1","rho"],["\u03c2","sigmaf"],["\u03c3","sigma"],["\u03c4","tau"],["\u03c5","upsilon"],["\u03c6","phi"],["\u03c7","chi"],["\u03c8","psi"],["\u03c9","omega"],["\u03d1","thetasym"],["\u03d2","upsih"],["\u03d6","piv"],["\u2022","bull"],["\u2026","hellip"],["\u2032","prime"],["\u2033","Prime"],["\u203e","oline"],["\u2044","frasl"],["\u2118","weierp"],["\u2111","image"],["\u211c",
+"real"],["\u2122","trade"],["\u2135","alefsym"],["\u2190","larr"],["\u2191","uarr"],["\u2192","rarr"],["\u2193","darr"],["\u2194","harr"],["\u21b5","crarr"],["\u21d0","lArr"],["\u21d1","uArr"],["\u21d2","rArr"],["\u21d3","dArr"],["\u21d4","hArr"],["\u2200","forall"],["\u2202","part"],["\u2203","exist"],["\u2205","empty"],["\u2207","nabla"],["\u2208","isin"],["\u2209","notin"],["\u220b","ni"],["\u220f","prod"],["\u2211","sum"],["\u2212","minus"],["\u2217","lowast"],["\u221a","radic"],["\u221d","prop"],
+["\u221e","infin"],["\u2220","ang"],["\u2227","and"],["\u2228","or"],["\u2229","cap"],["\u222a","cup"],["\u222b","int"],["\u2234","there4"],["\u223c","sim"],["\u2245","cong"],["\u2248","asymp"],["\u2260","ne"],["\u2261","equiv"],["\u2264","le"],["\u2265","ge"],["\u2282","sub"],["\u2283","sup"],["\u2284","nsub"],["\u2286","sube"],["\u2287","supe"],["\u2295","oplus"],["\u2297","otimes"],["\u22a5","perp"],["\u22c5","sdot"],["\u2308","lceil"],["\u2309","rceil"],["\u230a","lfloor"],["\u230b","rfloor"],
+["\u2329","lang"],["\u232a","rang"],["\u25ca","loz"],["\u2660","spades"],["\u2663","clubs"],["\u2665","hearts"],["\u2666","diams"],["\u0152","Elig"],["\u0153","oelig"],["\u0160","Scaron"],["\u0161","scaron"],["\u0178","Yuml"],["\u02c6","circ"],["\u02dc","tilde"],["\u2002","ensp"],["\u2003","emsp"],["\u2009","thinsp"],["\u200c","zwnj"],["\u200d","zwj"],["\u200e","lrm"],["\u200f","rlm"],["\u2013","ndash"],["\u2014","mdash"],["\u2018","lsquo"],["\u2019","rsquo"],["\u201a","sbquo"],["\u201c","ldquo"],
+["\u201d","rdquo"],["\u201e","bdquo"],["\u2020","dagger"],["\u2021","Dagger"],["\u2030","permil"],["\u2039","lsaquo"],["\u203a","rsaquo"]];k.encode=function(e,c){e&&(c?e=h(e,c):(e=h(e,k.html),e=h(e,k.latin)));return e};k.decode=function(e,c){e&&(c?e=j(e,c):(e=j(e,k.html),e=j(e,k.latin)));return e};return k})},"dijit/layout/BorderContainer":function(){define("dojo/_base/array,dojo/cookie,dojo/_base/declare,dojo/dom-class,dojo/dom-construct,dojo/dom-geometry,dojo/dom-style,dojo/_base/event,dojo/keys,dojo/_base/lang,dojo/on,dojo/touch,../_WidgetBase,../_Widget,../_TemplatedMixin,./_LayoutWidget,./utils".split(","),
+function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o,r){var q=h("dijit.layout._Splitter",[m,n],{live:!0,templateString:'<div class="dijitSplitter" data-dojo-attach-event="onkeypress:_onKeyPress,press:_startDrag,onmouseenter:_onMouse,onmouseleave:_onMouse" tabIndex="0" role="separator"><div class="dijitSplitterThumb"></div></div>',constructor:function(){this._handlers=[]},postMixInProperties:function(){this.inherited(arguments);this.horizontal=/top|bottom/.test(this.region);this._factor=/top|left/.test(this.region)?
+1:-1;this._cookieName=this.container.id+"_"+this.region},buildRendering:function(){this.inherited(arguments);j.add(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V"));if(this.container.persist){var a=k(this._cookieName);a&&(this.child.domNode.style[this.horizontal?"height":"width"]=a)}},_computeMaxSize:function(){var a=this.horizontal?"h":"w",b=c.getMarginBox(this.child.domNode)[a],d=f.filter(this.container.getChildren(),function(a){return"center"==a.region})[0],a=c.getMarginBox(d.domNode)[a];
+return Math.min(this.child.maxSize,b+a)},_startDrag:function(g){if(!this.cover)this.cover=e.place("<div class=dijitSplitterCover></div>",this.child.domNode,"after");j.add(this.cover,"dijitSplitterCoverActive");this.fake&&e.destroy(this.fake);if(!(this._resize=this.live))(this.fake=this.domNode.cloneNode(!0)).removeAttribute("id"),j.add(this.domNode,"dijitSplitterShadow"),e.place(this.fake,this.domNode,"after");j.add(this.domNode,"dijitSplitterActive dijitSplitter"+(this.horizontal?"H":"V")+"Active");
+this.fake&&j.remove(this.fake,"dijitSplitterHover dijitSplitter"+(this.horizontal?"H":"V")+"Hover");var f=this._factor,i=this.horizontal,m=i?"pageY":"pageX",h=g[m],k=this.domNode.style,o=c.getMarginBox(this.child.domNode)[i?"h":"w"],n=this._computeMaxSize(),p=this.child.minSize||20,i=this.region,q="top"==i||"bottom"==i?"top":"left",r=parseInt(k[q],10),v=this._resize,A=a.hitch(this.container,"_layoutChildren",this.child.id),i=this.ownerDocument;this._handlers=this._handlers.concat([l(i,d.move,this._drag=
+function(a,b){var d=a[m]-h,c=f*d+o,g=Math.max(Math.min(c,n),p);(v||b)&&A(g);k[q]=d+r+f*(g-c)+"px"}),l(i,"dragstart",b.stop),l(this.ownerDocumentBody,"selectstart",b.stop),l(i,d.release,a.hitch(this,"_stopDrag"))]);b.stop(g)},_onMouse:function(a){a="mouseover"==a.type||"mouseenter"==a.type;j.toggle(this.domNode,"dijitSplitterHover",a);j.toggle(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V")+"Hover",a)},_stopDrag:function(a){try{this.cover&&j.remove(this.cover,"dijitSplitterCoverActive"),this.fake&&
+e.destroy(this.fake),j.remove(this.domNode,"dijitSplitterActive dijitSplitter"+(this.horizontal?"H":"V")+"Active dijitSplitterShadow"),this._drag(a),this._drag(a,!0)}finally{this._cleanupHandlers(),delete this._drag}this.container.persist&&k(this._cookieName,this.child.domNode.style[this.horizontal?"height":"width"],{expires:365})},_cleanupHandlers:function(){for(var a;a=this._handlers.pop();)a.remove()},_onKeyPress:function(a){this._resize=!0;var d=this.horizontal,e=1;switch(a.charOrCode){case d?
+g.UP_ARROW:g.LEFT_ARROW:e*=-1;case d?g.DOWN_ARROW:g.RIGHT_ARROW:break;default:return}d=c.getMarginSize(this.child.domNode)[d?"h":"w"]+this._factor*e;this.container._layoutChildren(this.child.id,Math.max(Math.min(d,this._computeMaxSize()),this.child.minSize));b.stop(a)},destroy:function(){this._cleanupHandlers();delete this.child;delete this.container;delete this.cover;delete this.fake;this.inherited(arguments)}}),v=h("dijit.layout._Gutter",[m,n],{templateString:'<div class="dijitGutter" role="presentation"></div>',
+postMixInProperties:function(){this.inherited(arguments);this.horizontal=/top|bottom/.test(this.region)},buildRendering:function(){this.inherited(arguments);j.add(this.domNode,"dijitGutter"+(this.horizontal?"H":"V"))}}),h=h("dijit.layout.BorderContainer",o,{design:"headline",gutters:!0,liveSplitters:!0,persist:!1,baseClass:"dijitBorderContainer",_splitterClass:q,postMixInProperties:function(){this.gutters||(this.baseClass+="NoGutter");this.inherited(arguments)},startup:function(){this._started||(f.forEach(this.getChildren(),
+this._setupChild,this),this.inherited(arguments))},_setupChild:function(b){var d=b.region;if(d){this.inherited(arguments);j.add(b.domNode,this.baseClass+"Pane");var c=this.isLeftToRight();"leading"==d&&(d=c?"left":"right");"trailing"==d&&(d=c?"right":"left");if("center"!=d&&(b.splitter||this.gutters)&&!b._splitterWidget)c=b.splitter?this._splitterClass:v,a.isString(c)&&(c=a.getObject(c)),c=new c({id:b.id+"_splitter",container:this,child:b,region:d,live:this.liveSplitters}),c.isSplitter=!0,b._splitterWidget=
+c,e.place(c.domNode,b.domNode,"after"),c.startup();b.region=d}},layout:function(){this._layoutChildren()},addChild:function(a,b){this.inherited(arguments);this._started&&this.layout()},removeChild:function(a){var b=a.region,d=a._splitterWidget;d&&(d.destroy(),delete a._splitterWidget);this.inherited(arguments);this._started&&this._layoutChildren();j.remove(a.domNode,this.baseClass+"Pane");i.set(a.domNode,{top:"auto",bottom:"auto",left:"auto",right:"auto",position:"static"});i.set(a.domNode,"top"==
+b||"bottom"==b?"width":"height","auto")},getChildren:function(){return f.filter(this.inherited(arguments),function(a){return!a.isSplitter})},getSplitter:function(a){return f.filter(this.getChildren(),function(b){return b.region==a})[0]._splitterWidget},resize:function(a,b){if(!this.cs||!this.pe){var d=this.domNode;this.cs=i.getComputedStyle(d);this.pe=c.getPadExtents(d,this.cs);this.pe.r=i.toPixelValue(d,this.cs.paddingRight);this.pe.b=i.toPixelValue(d,this.cs.paddingBottom);i.set(d,"padding","0px")}this.inherited(arguments)},
+_layoutChildren:function(a,b){if(this._borderBox&&this._borderBox.h){var d=f.map(this.getChildren(),function(a,b){return{pane:a,weight:["center"==a.region?Infinity:0,a.layoutPriority,("sidebar"==this.design?1:-1)*(/top|bottom/.test(a.region)?1:-1),b]}},this);d.sort(function(a,b){for(var d=a.weight,c=b.weight,g=0;g<d.length;g++)if(d[g]!=c[g])return d[g]-c[g];return 0});var c=[];f.forEach(d,function(a){a=a.pane;c.push(a);a._splitterWidget&&c.push(a._splitterWidget)});r.layoutChildren(this.domNode,{l:this.pe.l,
+t:this.pe.t,w:this._borderBox.w-this.pe.w,h:this._borderBox.h-this.pe.h},c,a,b)}},destroyRecursive:function(){f.forEach(this.getChildren(),function(a){var b=a._splitterWidget;b&&b.destroy();delete a._splitterWidget});this.inherited(arguments)}});h.ChildWidgetProperties={region:"",layoutPriority:0,splitter:!1,minSize:0,maxSize:Infinity};a.extend(p,h.ChildWidgetProperties);h._Splitter=q;h._Gutter=v;return h})},"dojo/cookie":function(){define("dojo/cookie",["./_base/kernel","./regexp"],function(f,k){f.cookie=
+function(f,j,e){var c=document.cookie,i;if(1==arguments.length)i=(i=c.match(RegExp("(?:^|; )"+k.escapeString(f)+"=([^;]*)")))?decodeURIComponent(i[1]):void 0;else{e=e||{};c=e.expires;if("number"==typeof c){var b=new Date;b.setTime(b.getTime()+864E5*c);c=e.expires=b}if(c&&c.toUTCString)e.expires=c.toUTCString();var j=encodeURIComponent(j),c=f+"="+j,g;for(g in e)c+="; "+g,b=e[g],!0!==b&&(c+="="+b);document.cookie=c}return i};f.cookie.isSupported=function(){if(!("cookieEnabled"in navigator))this("__djCookieTest__",
+"CookiesAllowed"),navigator.cookieEnabled="CookiesAllowed"==this("__djCookieTest__"),navigator.cookieEnabled&&this("__djCookieTest__","",{expires:-1});return navigator.cookieEnabled};return f.cookie})},"dojo/regexp":function(){define(["./_base/kernel","./_base/lang"],function(f,k){var h={};k.setObject("dojo.regexp",h);h.escapeString=function(f,e){return f.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,function(c){return e&&-1!=e.indexOf(c)?c:"\\"+c})};h.buildGroupRE=function(f,e,c){if(!(f instanceof Array))return e(f);
+for(var i=[],b=0;b<f.length;b++)i.push(e(f[b]));return h.group(i.join("|"),c)};h.group=function(f,e){return"("+(e?"?:":"")+f+")"};return h})},"dojo/touch":function(){define("./_base/kernel,./_base/lang,./aspect,./dom,./on,./has,./mouse,./ready,./_base/window".split(","),function(f,k,h,j,e,c,i,b,g){function a(a){return function(b,d){return e(b,a,d)}}var h=c("touch"),l=!1;c("ios")&&(c=navigator.userAgent.match(/OS ([\d_]+)/)?RegExp.$1:"1",l=5>parseFloat(c.replace(/_/,".").replace(/_/g,"")));var d,p;
+h&&(b(function(){p=g.body();g.doc.addEventListener("touchstart",function(a){var b=p;p=a.target;e.emit(b,"dojotouchout",{target:b,relatedTarget:p,bubbles:!0});e.emit(p,"dojotouchover",{target:p,relatedTarget:b,bubbles:!0})},!0);e(g.doc,"touchmove",function(a){if((a=g.doc.elementFromPoint(a.pageX-(l?0:g.global.pageXOffset),a.pageY-(l?0:g.global.pageYOffset)))&&p!==a)e.emit(p,"dojotouchout",{target:p,relatedTarget:a,bubbles:!0}),e.emit(a,"dojotouchover",{target:a,relatedTarget:p,bubbles:!0}),p=a})}),
+d=function(a,b){return e(g.doc,"touchmove",function(d){(a===g.doc||j.isDescendant(p,a))&&b.call(this,k.mixin({},d,{target:p,touches:d.touches,preventDefault:function(){d.preventDefault()},stopPropagation:function(){d.stopPropagation()}}))})});i={press:a(h?"touchstart":"mousedown"),move:h?d:a("mousemove"),release:a(h?"touchend":"mouseup"),cancel:h?a("touchcancel"):i.leave,over:a(h?"dojotouchover":"mouseover"),out:a(h?"dojotouchout":"mouseout"),enter:i._eventHandler(h?"dojotouchover":"mouseover"),leave:i._eventHandler(h?
+"dojotouchout":"mouseout")};return f.touch=i})},"dijit/_WidgetBase":function(){define("require,dojo/_base/array,dojo/aspect,dojo/_base/config,dojo/_base/connect,dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-class,dojo/dom-construct,dojo/dom-geometry,dojo/dom-style,dojo/has,dojo/_base/kernel,dojo/_base/lang,dojo/on,dojo/ready,dojo/Stateful,dojo/topic,dojo/_base/window,./Destroyable,./registry".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o,r,q,v,s,t,u){function y(a){return function(d){b[d?
+"set":"remove"](this.domNode,a,d);this._set(a,d)}}p.add("dijit-legacy-requires",!m.isAsync);p("dijit-legacy-requires")&&r(0,function(){f(["dijit/_base/manager"])});var z={};return c("dijit._WidgetBase",[q,t],{id:"",_setIdAttr:"domNode",lang:"",_setLangAttr:y("lang"),dir:"",_setDirAttr:y("dir"),textDir:"","class":"",_setClassAttr:{node:"domNode",type:"class"},style:"",title:"",tooltip:"",baseClass:"",srcNodeRef:null,domNode:null,containerNode:null,ownerDocument:null,_setOwnerDocumentAttr:function(a){this._set("ownerDocument",
+a)},attributeMap:{},_blankGif:j.blankGif||f.toUrl("dojo/resources/blank.gif"),postscript:function(a,b){this.create(a,b)},create:function(a,b){this.srcNodeRef=i.byId(b);this._connects=[];this._supportingWidgets=[];if(this.srcNodeRef&&"string"==typeof this.srcNodeRef.id)this.id=this.srcNodeRef.id;if(a)this.params=a,n.mixin(this,a);this.postMixInProperties();if(!this.id)this.id=u.getUniqueId(this.declaredClass.replace(/\./g,"_")),this.params&&delete this.params.id;this.ownerDocument=this.ownerDocument||
+(this.srcNodeRef?this.srcNodeRef.ownerDocument:s.doc);this.ownerDocumentBody=s.body(this.ownerDocument);u.add(this);this.buildRendering();var d;if(this.domNode){this._applyAttributes();var c=this.srcNodeRef;c&&c.parentNode&&this.domNode!==c&&(c.parentNode.replaceChild(this.domNode,c),d=!0);this.domNode.setAttribute("widgetId",this.id)}this.postCreate();d&&delete this.srcNodeRef;this._created=!0},_applyAttributes:function(){var a=this.constructor,b=a._setterAttrs;if(!b){var b=a._setterAttrs=[],d;for(d in this.attributeMap)b.push(d);
+var a=a.prototype,c;for(c in a)c in this.attributeMap||"_set"+c.replace(/^[a-z]|-[a-zA-Z]/g,function(a){return a.charAt(a.length-1).toUpperCase()})+"Attr"in a&&b.push(c)}var g={},e;for(e in this.params||{})g[e]=this[e];k.forEach(b,function(a){a in g||this[a]&&this.set(a,this[a])},this);for(e in g)this.set(e,g[e])},postMixInProperties:function(){},buildRendering:function(){if(!this.domNode)this.domNode=this.srcNodeRef||this.ownerDocument.createElement("div");if(this.baseClass){var a=this.baseClass.split(" ");
+this.isLeftToRight()||(a=a.concat(k.map(a,function(a){return a+"Rtl"})));g.add(this.domNode,a)}},postCreate:function(){},startup:function(){if(!this._started)this._started=!0,k.forEach(this.getChildren(),function(a){if(!a._started&&!a._destroyed&&n.isFunction(a.startup))a.startup(),a._started=!0})},destroyRecursive:function(a){this._beingDestroyed=!0;this.destroyDescendants(a);this.destroy(a)},destroy:function(a){function b(d){d.destroyRecursive?d.destroyRecursive(a):d.destroy&&d.destroy(a)}this._beingDestroyed=
+!0;this.uninitialize();k.forEach(this._connects,n.hitch(this,"disconnect"));k.forEach(this._supportingWidgets,b);this.domNode&&k.forEach(u.findWidgets(this.domNode,this.containerNode),b);this.destroyRendering(a);u.remove(this.id);this._destroyed=!0},destroyRendering:function(d){this.bgIframe&&(this.bgIframe.destroy(d),delete this.bgIframe);this.domNode&&(d?b.remove(this.domNode,"widgetId"):a.destroy(this.domNode),delete this.domNode);this.srcNodeRef&&(d||a.destroy(this.srcNodeRef),delete this.srcNodeRef)},
+destroyDescendants:function(a){k.forEach(this.getChildren(),function(b){b.destroyRecursive&&b.destroyRecursive(a)})},uninitialize:function(){return!1},_setStyleAttr:function(a){var b=this.domNode;n.isObject(a)?d.set(b,a):b.style.cssText=b.style.cssText?b.style.cssText+("; "+a):a;this._set("style",a)},_attrToDom:function(a,d,c){c=3<=arguments.length?c:this.attributeMap[a];k.forEach(n.isArray(c)?c:[c],function(c){var e=this[c.node||c||"domNode"];switch(c.type||"attribute"){case "attribute":n.isFunction(d)&&
+(d=n.hitch(this,d));c=c.attribute?c.attribute:/^on[A-Z][a-zA-Z]*$/.test(a)?a.toLowerCase():a;e.tagName?b.set(e,c,d):e.set(c,d);break;case "innerText":e.innerHTML="";e.appendChild(this.ownerDocument.createTextNode(d));break;case "innerHTML":e.innerHTML=d;break;case "class":g.replace(e,d,this[a])}},this)},get:function(a){var b=this._getAttrNames(a);return this[b.g]?this[b.g]():this[a]},set:function(a,b){if("object"===typeof a){for(var d in a)this.set(d,a[d]);return this}d=this._getAttrNames(a);var c=
+this[d.s];if(n.isFunction(c))var g=c.apply(this,Array.prototype.slice.call(arguments,1));else{var c=this.focusNode&&!n.isFunction(this.focusNode)?"focusNode":"domNode",e=this[c].tagName,f;if(!(f=z[e])){f=this[c];var l={},i;for(i in f)l[i.toLowerCase()]=!0;f=z[e]=l}i=a in this.attributeMap?this.attributeMap[a]:d.s in this?this[d.s]:d.l in f&&"function"!=typeof b||/^aria-|^data-|^role$/.test(a)?c:null;null!=i&&this._attrToDom(a,b,i);this._set(a,b)}return g||this},_attrPairNames:{},_getAttrNames:function(a){var b=
this._attrPairNames;if(b[a])return b[a];var d=a.replace(/^[a-z]|-[a-zA-Z]/g,function(a){return a.charAt(a.length-1).toUpperCase()});return b[a]={n:a+"Node",s:"_set"+d+"Attr",g:"_get"+d+"Attr",l:d.toLowerCase()}},_set:function(a,b){var d=this[a];this[a]=b;this._created&&b!==d&&(this._watchCallbacks&&this._watchCallbacks(a,d,b),this.emit("attrmodified-"+a,{detail:{prevValue:d,newValue:b}}))},emit:function(a,b,d){b=b||{};if(void 0===b.bubbles)b.bubbles=!0;if(void 0===b.cancelable)b.cancelable=!0;if(!b.detail)b.detail=
-{};b.detail.widget=this;var c,f=this["on"+a];f&&(c=f.apply(this,d?d:[b]));this._started&&!this._beingDestroyed&&o.emit(this.domNode,a.toLowerCase(),b);return c},on:function(a,b){var d=this._onMap(a);return d?i.after(this,d,b,!0):this.own(o(this.domNode,a,b))[0]},_onMap:function(a){var b=this.constructor,d=b._onMap;if(!d){var d=b._onMap={},c;for(c in b.prototype)/^on/.test(c)&&(d[c.replace(/^on/,"").toLowerCase()]=c)}return d["string"==typeof a&&a.toLowerCase()]},toString:function(){return"[Widget "+
-this.declaredClass+", "+(this.id||"NO ID")+"]"},getChildren:function(){return this.containerNode?t.findWidgets(this.containerNode):[]},getParent:function(){return t.getEnclosingWidget(this.domNode.parentNode)},connect:function(a,b,d){return this.own(c.connect(a,b,this,d))[0]},disconnect:function(a){a.remove()},subscribe:function(a,b){return this.own(v.subscribe(a,n.hitch(this,b)))[0]},unsubscribe:function(a){a.remove()},isLeftToRight:function(){return this.dir?"ltr"==this.dir:k.isBodyLtr(this.ownerDocument)},
-isFocusable:function(){return this.focus&&"none"!=d.get(this.domNode,"display")},placeAt:function(b,d){var c=!b.tagName&&t.byId(b);c&&c.addChild&&(!d||"number"===typeof d)?c.addChild(this,d):(c=c?c.containerNode&&!/after|before|replace/.test(d||"")?c.containerNode:c.domNode:h.byId(b,this.ownerDocument),a.place(this.domNode,c,d),!this._started&&(this.getParent()||{})._started&&this.startup());return this},getTextDir:function(a,b){return b},applyTextDir:function(){},defer:function(a,b){var d=setTimeout(n.hitch(this,
-function(){d=null;this._destroyed||n.hitch(this,a)()}),b||0);return{remove:function(){d&&(clearTimeout(d),d=null);return null}}}})})},"dojo/Stateful":function(){define("dojo/Stateful",["./_base/declare","./_base/lang","./_base/array","dojo/when"],function(e,j,i,l){return e("dojo.Stateful",null,{_attrPairNames:{},_getAttrNames:function(c){var g=this._attrPairNames;return g[c]?g[c]:g[c]={s:"_"+c+"Setter",g:"_"+c+"Getter"}},postscript:function(c){c&&this.set(c)},_get:function(c,g){return"function"===
-typeof this[g.g]?this[g.g]():this[c]},get:function(c){return this._get(c,this._getAttrNames(c))},set:function(c,g){if("object"===typeof c){for(var e in c)c.hasOwnProperty(e)&&"_watchCallbacks"!=e&&this.set(e,c[e]);return this}e=this._getAttrNames(c);var b=this._get(c,e);e=this[e.s];var f;"function"===typeof e?f=e.apply(this,Array.prototype.slice.call(arguments,1)):this[c]=g;if(this._watchCallbacks){var a=this;l(f,function(){a._watchCallbacks(c,b,g)})}return this},_changeAttrValue:function(c,g){var e=
-this.get(c);this[c]=g;this._watchCallbacks&&this._watchCallbacks(c,e,g);return this},watch:function(c,g){var e=this._watchCallbacks;if(!e)var b=this,e=this._watchCallbacks=function(a,d,c,f){var g=function(f){if(f)for(var f=f.slice(),g=0,e=f.length;g<e;g++)f[g].call(b,a,d,c)};g(e["_"+a]);f||g(e["*"])};!g&&"function"===typeof c?(g=c,c="*"):c="_"+c;var f=e[c];"object"!==typeof f&&(f=e[c]=[]);f.push(g);var a={};a.unwatch=a.remove=function(){var a=i.indexOf(f,g);-1<a&&f.splice(a,1)};return a}})})},"dijit/Destroyable":function(){define(["dojo/_base/array",
-"dojo/aspect","dojo/_base/declare"],function(e,j,i){return i("dijit.Destroyable",null,{destroy:function(){this._destroyed=!0},own:function(){e.forEach(arguments,function(e){var c="destroyRecursive"in e?"destroyRecursive":"destroy"in e?"destroy":"remove",g=j.before(this,"destroy",function(g){e[c](g)});j.after(e,c,function(){g.remove()},!0)},this);return arguments}})})},"dijit/registry":function(){define(["dojo/_base/array","dojo/sniff","dojo/_base/unload","dojo/_base/window","./main"],function(e,j,
-i,l,c){var g={},h={},b={length:0,add:function(b){if(h[b.id])throw Error("Tried to register widget with id=="+b.id+" but that id is already registered");h[b.id]=b;this.length++},remove:function(b){h[b]&&(delete h[b],this.length--)},byId:function(b){return"string"==typeof b?h[b]:b},byNode:function(b){return h[b.getAttribute("widgetId")]},toArray:function(){var b=[],a;for(a in h)b.push(h[a]);return b},getUniqueId:function(b){var a;do a=b+"_"+(b in g?++g[b]:g[b]=0);while(h[a]);return"dijit"==c._scopeName?
-a:c._scopeName+"_"+a},findWidgets:function(b,a){function c(b){for(b=b.firstChild;b;b=b.nextSibling)if(1==b.nodeType){var f=b.getAttribute("widgetId");f?(f=h[f])&&d.push(f):b!==a&&c(b)}}var d=[];c(b);return d},_destroyAll:function(){c._curFocus=null;c._prevFocus=null;c._activeStack=[];e.forEach(b.findWidgets(l.body()),function(b){b._destroyed||(b.destroyRecursive?b.destroyRecursive():b.destroy&&b.destroy())})},getEnclosingWidget:function(b){for(;b;){var a=b.getAttribute&&b.getAttribute("widgetId");
-if(a)return h[a];b=b.parentNode}return null},_hash:h};return c.registry=b})},"dijit/main":function(){define(["dojo/_base/kernel"],function(e){return e.dijit})},"dijit/_Widget":function(){define("dojo/aspect,dojo/_base/config,dojo/_base/connect,dojo/_base/declare,dojo/has,dojo/_base/kernel,dojo/_base/lang,dojo/query,dojo/ready,./registry,./_WidgetBase,./_OnDijitClickMixin,./_FocusMixin,dojo/uacss,./hccss".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p){function m(){}function n(a){return function(b,
-d,c,f){return b&&"string"==typeof d&&b[d]==m?b.on(d.substring(2).toLowerCase(),h.hitch(c,f)):a.apply(i,arguments)}}e.around(i,"connect",n);g.connect&&e.around(g,"connect",n);e=l("dijit._Widget",[k,d,p],{onClick:m,onDblClick:m,onKeyDown:m,onKeyPress:m,onKeyUp:m,onMouseDown:m,onMouseMove:m,onMouseOut:m,onMouseOver:m,onMouseLeave:m,onMouseEnter:m,onMouseUp:m,constructor:function(a){this._toConnect={};for(var b in a)this[b]===m&&(this._toConnect[b.replace(/^on/,"").toLowerCase()]=a[b],delete a[b])},postCreate:function(){this.inherited(arguments);
-for(var a in this._toConnect)this.on(a,this._toConnect[a]);delete this._toConnect},on:function(a,b){return this[this._onMap(a)]===m?i.connect(this.domNode,a.toLowerCase(),this,b):this.inherited(arguments)},_setFocusedAttr:function(a){this._focused=a;this._set("focused",a)},setAttribute:function(a,b){g.deprecated(this.declaredClass+"::setAttribute(attr, value) is deprecated. Use set() instead.","","2.0");this.set(a,b)},attr:function(a,b){if(j.isDebug){var d=arguments.callee._ach||(arguments.callee._ach=
-{}),c=(arguments.callee.caller||"unknown caller").toString();d[c]||(g.deprecated(this.declaredClass+"::attr() is deprecated. Use get() or set() instead, called from "+c,"","2.0"),d[c]=!0)}return 2<=arguments.length||"object"===typeof a?this.set.apply(this,arguments):this.get(a)},getDescendants:function(){g.deprecated(this.declaredClass+"::getDescendants() is deprecated. Use getChildren() instead.","","2.0");return this.containerNode?b("[widgetId]",this.containerNode).map(a.byNode):[]},_onShow:function(){this.onShow()},
-onShow:function(){},onHide:function(){},onClose:function(){return!0}});c("dijit-legacy-requires")&&f(0,function(){require(["dijit/_base"])});return e})},"dijit/_OnDijitClickMixin":function(){define("dojo/on,dojo/_base/array,dojo/keys,dojo/_base/declare,dojo/has,dojo/_base/unload,dojo/_base/window,./a11yclick".split(","),function(e,j,i,l,c,g,h,b){e=l("dijit._OnDijitClickMixin",null,{connect:function(c,a,g){return this.inherited(arguments,[c,"ondijitclick"==a?b:a,g])}});e.a11yclick=b;return e})},"dijit/a11yclick":function(){define("dojo/on,dojo/_base/array,dojo/keys,dojo/_base/declare,dojo/has,dojo/_base/unload,dojo/_base/window".split(","),
-function(e,j,i,l,c,g,h){function b(a){return(a.keyCode===i.ENTER||a.keyCode===i.SPACE)&&!a.ctrlKey&&!a.shiftKey&&!a.altKey&&!a.metaKey}var f=null;c("dom-addeventlistener")?h.doc.addEventListener("keydown",function(a){f=a.target},!0):function(){var a=function(a){f=a.srcElement};h.doc.attachEvent("onkeydown",a);g.addOnWindowUnload(function(){h.doc.detachEvent("onkeydown",a)})}();return function(a,g){if(/input|button/i.test(a.nodeName))return e(a,"click",g);var d=[e(a,"keydown",function(a){if(b(a))f=
-a.target,a.preventDefault()}),e(a,"keyup",function(a){b(a)&&a.target==f&&(f=null,e.emit(a.target,"click",{cancelable:!0,bubbles:!0}))}),e(a,"click",function(a){g.call(this,a)})];if(c("touch")){var h;d.push(e(a,"touchend",function(a){var b=a.target;h=setTimeout(function(){h=null;e.emit(b,"click",{cancelable:!0,bubbles:!0})},600)}),e(a,"click",function(){h&&clearTimeout(h)}))}return{remove:function(){j.forEach(d,function(a){a.remove()});h&&(clearTimeout(h),h=null)}}}})},"dijit/_FocusMixin":function(){define(["./focus",
-"./_WidgetBase","dojo/_base/declare","dojo/_base/lang"],function(e,j,i,l){l.extend(j,{focused:!1,onFocus:function(){},onBlur:function(){},_onFocus:function(){this.onFocus()},_onBlur:function(){this.onBlur()}});return i("dijit._FocusMixin",null,{_focusManager:e})})},"dijit/focus":function(){define("dojo/aspect,dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-construct,dojo/Evented,dojo/_base/lang,dojo/on,dojo/ready,dojo/sniff,dojo/Stateful,dojo/_base/unload,dojo/_base/window,dojo/window,./a11y,./registry,./main".split(","),
-function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o,r){var q=new (j([k,g],{curNode:null,activeStack:[],constructor:function(){var a=h.hitch(this,function(a){i.isDescendant(this.curNode,a)&&this.set("curNode",null);i.isDescendant(this.prevNode,a)&&this.set("prevNode",null)});e.before(c,"empty",a);e.before(c,"destroy",a)},registerIframe:function(a){return this.registerWin(a.contentWindow,a)},registerWin:function(b,d){var c=this,f=function(b){c._justMouseDowned=!0;setTimeout(function(){c._justMouseDowned=!1},0);
-if(!a("ie")||!b||!(b.srcElement&&null==b.srcElement.parentNode))c._onTouchNode(d||b.target||b.srcElement,"mouse")},g=a("ie")?b.document.documentElement:b.document;if(g){if(a("ie")){b.document.body.attachEvent("onmousedown",f);var e=function(a){var b=a.srcElement.tagName.toLowerCase();"#document"==b||"body"==b||(n.isTabNavigable(a.srcElement)?c._onFocusNode(d||a.srcElement):c._onTouchNode(d||a.srcElement))};g.attachEvent("onfocusin",e);var k=function(a){c._onBlurNode(d||a.srcElement)};g.attachEvent("onfocusout",
-k);return{remove:function(){b.document.detachEvent("onmousedown",f);g.detachEvent("onfocusin",e);g.detachEvent("onfocusout",k);g=null}}}g.body.addEventListener("mousedown",f,!0);g.body.addEventListener("touchstart",f,!0);var m=function(a){c._onFocusNode(d||a.target)};g.addEventListener("focus",m,!0);var h=function(a){c._onBlurNode(d||a.target)};g.addEventListener("blur",h,!0);return{remove:function(){g.body.removeEventListener("mousedown",f,!0);g.body.removeEventListener("touchstart",f,!0);g.removeEventListener("focus",
-m,!0);g.removeEventListener("blur",h,!0);g=null}}}},_onBlurNode:function(){this._clearFocusTimer&&clearTimeout(this._clearFocusTimer);this._clearFocusTimer=setTimeout(h.hitch(this,function(){this.set("prevNode",this.curNode);this.set("curNode",null)}),0);if(!this._justMouseDowned)this._clearActiveWidgetsTimer&&clearTimeout(this._clearActiveWidgetsTimer),this._clearActiveWidgetsTimer=setTimeout(h.hitch(this,function(){delete this._clearActiveWidgetsTimer;this._setStack([])}),0)},_onTouchNode:function(a,
-b){this._clearActiveWidgetsTimer&&(clearTimeout(this._clearActiveWidgetsTimer),delete this._clearActiveWidgetsTimer);var d=[];try{for(;a;){var c=l.get(a,"dijitPopupParent");if(c)a=o.byId(c).domNode;else if(a.tagName&&"body"==a.tagName.toLowerCase()){if(a===p.body())break;a=m.get(a.ownerDocument).frameElement}else{var f=a.getAttribute&&a.getAttribute("widgetId"),g=f&&o.byId(f);g&&!("mouse"==b&&g.get("disabled"))&&d.unshift(f);a=a.parentNode}}}catch(e){}this._setStack(d,b)},_onFocusNode:function(a){a&&
-9!=a.nodeType&&(this._clearFocusTimer&&(clearTimeout(this._clearFocusTimer),delete this._clearFocusTimer),this._onTouchNode(a),a!=this.curNode&&(this.set("prevNode",this.curNode),this.set("curNode",a)))},_setStack:function(a,b){var d=this.activeStack;this.set("activeStack",a);for(var c=0;c<Math.min(d.length,a.length)&&!(d[c]!=a[c]);c++);for(var f,g=d.length-1;g>=c;g--)if(f=o.byId(d[g]))f._hasBeenBlurred=!0,f.set("focused",!1),f._focusManager==this&&f._onBlur(b),this.emit("widget-blur",f,b);for(g=
-c;g<a.length;g++)if(f=o.byId(a[g]))f.set("focused",!0),f._focusManager==this&&f._onFocus(b),this.emit("widget-focus",f,b)},focus:function(a){if(a)try{a.focus()}catch(b){}}}));f(function(){var b=q.registerWin(m.get(p.doc));a("ie")&&d.addOnWindowUnload(function(){b&&(b.remove(),b=null)})});r.focus=function(a){q.focus(a)};for(var v in q)/^_/.test(v)||(r.focus[v]="function"==typeof q[v]?h.hitch(q,v):q[v]);q.watch(function(a,b,d){r.focus[a]=d});return q})},"dojo/window":function(){define("./_base/lang,./sniff,./_base/window,./dom,./dom-geometry,./dom-style".split(","),
-function(e,j,i,l,c,g){var h={getBox:function(b){var b=b||i.doc,f="BackCompat"==b.compatMode?i.body(b):b.documentElement,a=c.docScroll(b);if(j("touch"))var g=h.get(b),b=g.innerWidth||f.clientWidth,f=g.innerHeight||f.clientHeight;else b=f.clientWidth,f=f.clientHeight;return{l:a.x,t:a.y,w:b,h:f}},get:function(b){if(j("ie")&&h!==document.parentWindow){b.parentWindow.execScript("document._parentWindow = window;","Javascript");var c=b._parentWindow;b._parentWindow=null;return c}return b.parentWindow||b.defaultView},
-scrollIntoView:function(b,f){try{var b=l.byId(b),a=b.ownerDocument||i.doc,e=i.body(a),d=a.documentElement||e.parentNode,h=j("ie"),m=j("webkit");if((!j("mozilla")&&!h&&!m&&!j("opera")||b==e||b==d)&&"undefined"!=typeof b.scrollIntoView)b.scrollIntoView(!1);else{var n="BackCompat"==a.compatMode,o=9<=h&&"frameElement"in b.ownerDocument.parentWindow?0<d.clientHeight&&0<d.clientWidth&&(0==e.clientHeight||0==e.clientWidth||e.clientHeight>d.clientHeight||e.clientWidth>d.clientWidth)?d:e:n?e:d,m=m?e:o,r=o.clientWidth,
-q=o.clientHeight,v=!c.isBodyLtr(a),s=f||c.position(b),u=b.parentNode,a=function(a){return 6>=h||h&&n?!1:"fixed"==g.get(a,"position").toLowerCase()};if(!a(b))for(;u;){u==e&&(u=m);var t=c.position(u),y=a(u);if(u==m){t.w=r;t.h=q;m==d&&h&&v&&(t.x+=m.offsetWidth-t.w);if(0>t.x||!h)t.x=0;if(0>t.y||!h)t.y=0}else{var z=c.getPadBorderExtents(u);t.w-=z.w;t.h-=z.h;t.x+=z.l;t.y+=z.t;var I=u.clientWidth,J=t.w-I;if(0<I&&0<J)t.w=I,t.x+=v&&(h||u.clientLeft>z.l)?J:0;I=u.clientHeight;J=t.h-I;if(0<I&&0<J)t.h=I}if(y){if(0>
-t.y)t.h+=t.y,t.y=0;if(0>t.x)t.w+=t.x,t.x=0;if(t.y+t.h>q)t.h=q-t.y;if(t.x+t.w>r)t.w=r-t.x}var N=s.x-t.x,E=s.y-Math.max(t.y,0),S=N+s.w-t.w,Q=E+s.h-t.h;if(0<S*N){var B=Math[0>N?"max":"min"](N,S);if(v&&(8==h&&!n||9<=h))B=-B;s.x+=u.scrollLeft;u.scrollLeft+=B;s.x-=u.scrollLeft}0<Q*E&&(s.y+=u.scrollTop,u.scrollTop+=Math[0>E?"max":"min"](E,Q),s.y-=u.scrollTop);u=u!=m&&!y&&u.parentNode}}}catch(A){b.scrollIntoView(!1)}}};e.setObject("dojo.window",h);return h})},"dijit/a11y":function(){define("dojo/_base/array,dojo/_base/config,dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-style,dojo/sniff,./main".split(","),
-function(e,j,i,l,c,g,h,b){var f=b._isElementShown=function(a){var b=g.get(a);return"hidden"!=b.visibility&&"collapsed"!=b.visibility&&"none"!=b.display&&"hidden"!=c.get(a,"type")};b.hasDefaultTabStop=function(a){switch(a.nodeName.toLowerCase()){case "a":return c.has(a,"href");case "area":case "button":case "input":case "object":case "select":case "textarea":return!0;case "iframe":var b;try{var f=a.contentDocument;if("designMode"in f&&"on"==f.designMode)return!0;b=f.body}catch(g){try{b=a.contentWindow.document.body}catch(e){return!1}}return b&&
-("true"==b.contentEditable||b.firstChild&&"true"==b.firstChild.contentEditable);default:return"true"==a.contentEditable}};var a=b.isTabNavigable=function(a){return c.get(a,"disabled")?!1:c.has(a,"tabIndex")?0<=c.get(a,"tabIndex"):b.hasDefaultTabStop(a)};b._getTabNavigable=function(b){function d(a){return a&&"input"==a.tagName.toLowerCase()&&a.type&&"radio"==a.type.toLowerCase()&&a.name&&a.name.toLowerCase()}var g,e,l,i,j,q,v={},s=function(b){for(b=b.firstChild;b;b=b.nextSibling)if(!(1!=b.nodeType||
-h("ie")&&"HTML"!==b.scopeName||!f(b))){if(a(b)){var k=+c.get(b,"tabIndex");if(!c.has(b,"tabIndex")||0==k)g||(g=b),e=b;else if(0<k){if(!l||k<i)i=k,l=b;if(!j||k>=q)q=k,j=b}k=d(b);c.get(b,"checked")&&k&&(v[k]=b)}"SELECT"!=b.nodeName.toUpperCase()&&s(b)}};f(b)&&s(b);return{first:v[d(g)]||g,last:v[d(e)]||e,lowest:v[d(l)]||l,highest:v[d(j)]||j}};b.getFirstInTabbingOrder=function(a,d){var c=b._getTabNavigable(l.byId(a,d));return c.lowest?c.lowest:c.first};b.getLastInTabbingOrder=function(a,d){var c=b._getTabNavigable(l.byId(a,
-d));return c.last?c.last:c.highest};return{hasDefaultTabStop:b.hasDefaultTabStop,isTabNavigable:b.isTabNavigable,_getTabNavigable:b._getTabNavigable,getFirstInTabbingOrder:b.getFirstInTabbingOrder,getLastInTabbingOrder:b.getLastInTabbingOrder}})},"dojo/uacss":function(){define(["./dom-geometry","./_base/lang","./ready","./sniff","./_base/window"],function(e,j,i,l,c){var g=c.doc.documentElement,h=l("ie"),b=l("opera"),f=Math.floor,a=l("ff"),c=e.boxModel.replace(/-/,""),h={dj_ie:h,dj_ie6:6==f(h),dj_ie7:7==
-f(h),dj_ie8:8==f(h),dj_ie9:9==f(h),dj_quirks:l("quirks"),dj_iequirks:h&&l("quirks"),dj_opera:b,dj_khtml:l("khtml"),dj_webkit:l("webkit"),dj_safari:l("safari"),dj_chrome:l("chrome"),dj_gecko:l("mozilla"),dj_ff3:3==f(a)};h["dj_"+c]=!0;var k="",d;for(d in h)h[d]&&(k+=d+" ");g.className=j.trim(g.className+" "+k);i(90,function(){if(!e.isBodyLtr()){var a="dj_rtl dijitRtl "+k.replace(/ /g,"-rtl ");g.className=j.trim(g.className+" "+a+"dj_rtl dijitRtl "+k.replace(/ /g,"-rtl "))}});return l})},"dijit/hccss":function(){define(["dojo/dom-class",
-"dojo/hccss","dojo/ready","dojo/_base/window"],function(e,j,i,l){i(90,function(){j("highcontrast")&&e.add(l.body(),"dijit_a11y")});return j})},"dojo/hccss":function(){define("require,./_base/config,./dom-class,./dom-construct,./dom-style,./has,./ready,./_base/window".split(","),function(e,j,i,l,c,g,h,b){g.add("highcontrast",function(){var f=b.doc.createElement("div");f.style.cssText="border: 1px solid; border-color:red green; position: absolute; height: 5px; top: -999px;background-image: url("+(j.blankGif||
-e.toUrl("./resources/blank.gif"))+");";b.body().appendChild(f);var a=c.getComputedStyle(f),g=a.backgroundImage,a=a.borderTopColor==a.borderRightColor||g&&("none"==g||"url(invalid-url:)"==g);l.destroy(f);return a});h(90,function(){g("highcontrast")&&i.add(b.body(),"dj_a11y")});return g})},"dijit/_TemplatedMixin":function(){define("dojo/_base/lang,dojo/touch,./_WidgetBase,dojo/string,dojo/cache,dojo/_base/array,dojo/_base/declare,dojo/dom-construct,dojo/sniff,dojo/_base/unload".split(","),function(e,
-j,i,l,c,g,h,b,f,a){var k=h("dijit._TemplatedMixin",null,{templateString:null,templatePath:null,_skipNodeCache:!1,_earlyTemplatedStartup:!1,constructor:function(){this._attachPoints=[];this._attachEvents=[]},_stringRepl:function(a){var b=this.declaredClass,c=this;return l.substitute(a,this,function(a,d){"!"==d.charAt(0)&&(a=e.getObject(d.substr(1),!1,c));if("undefined"==typeof a)throw Error(b+" template:"+d);return null==a?"":"!"==d.charAt(0)?a:a.toString().replace(/"/g,"&quot;")},this)},buildRendering:function(){if(!this.templateString)this.templateString=
-c(this.templatePath,{sanitize:!0});var a=k.getCachedTemplate(this.templateString,this._skipNodeCache,this.ownerDocument),f;if(e.isString(a)){if(f=b.toDom(this._stringRepl(a),this.ownerDocument),1!=f.nodeType)throw Error("Invalid template: "+a);}else f=a.cloneNode(!0);this.domNode=f;this.inherited(arguments);this._attachTemplateNodes(f,function(a,b){return a.getAttribute(b)});this._beforeFillContent();this._fillContent(this.srcNodeRef)},_beforeFillContent:function(){},_fillContent:function(a){var b=
-this.containerNode;if(a&&b)for(;a.hasChildNodes();)b.appendChild(a.firstChild)},_attachTemplateNodes:function(a,b){for(var c=e.isArray(a)?a:a.all||a.getElementsByTagName("*"),f=e.isArray(a)?0:-1;0>f||c[f];f++){var g=-1==f?a:c[f];if(!this.widgetsInTemplate||!b(g,"dojoType")&&!b(g,"data-dojo-type")){var k=b(g,"dojoAttachPoint")||b(g,"data-dojo-attach-point");if(k)for(var h=k.split(/\s*,\s*/);k=h.shift();)e.isArray(this[k])?this[k].push(g):this[k]=g,this._attachPoints.push(k);if(k=b(g,"dojoAttachEvent")||
-b(g,"data-dojo-attach-event"))for(var h=k.split(/\s*,\s*/),l=e.trim;k=h.shift();)if(k){var i=null;-1!=k.indexOf(":")?(i=k.split(":"),k=l(i[0]),i=l(i[1])):k=l(k);i||(i=k);this._attachEvents.push(this.connect(g,j[k]||k,i))}}}},destroyRendering:function(){g.forEach(this._attachPoints,function(a){delete this[a]},this);this._attachPoints=[];g.forEach(this._attachEvents,this.disconnect,this);this._attachEvents=[];this.inherited(arguments)}});k._templateCache={};k.getCachedTemplate=function(a,c,f){var g=
-k._templateCache,e=a,h=g[e];if(h){try{if(!h.ownerDocument||h.ownerDocument==(f||document))return h}catch(i){}b.destroy(h)}a=l.trim(a);if(c||a.match(/\$\{([^\}]+)\}/g))return g[e]=a;c=b.toDom(a,f);if(1!=c.nodeType)throw Error("Invalid template: "+a);return g[e]=c};f("ie")&&a.addOnWindowUnload(function(){var a=k._templateCache,c;for(c in a){var f=a[c];"object"==typeof f&&b.destroy(f);delete a[c]}});e.extend(i,{dojoAttachEvent:"",dojoAttachPoint:""});return k})},"dojo/string":function(){define(["./_base/kernel",
-"./_base/lang"],function(e,j){var i={};j.setObject("dojo.string",i);i.rep=function(e,c){if(0>=c||!e)return"";for(var g=[];;){c&1&&g.push(e);if(!(c>>=1))break;e+=e}return g.join("")};i.pad=function(e,c,g,h){g||(g="0");e=""+e;c=i.rep(g,Math.ceil((c-e.length)/g.length));return h?e+c:c+e};i.substitute=function(i,c,g,h){h=h||e.global;g=g?j.hitch(h,g):function(b){return b};return i.replace(/\$\{([^\s\:\}]+)(?:\:([^\s\:\}]+))?\}/g,function(b,f,a){b=j.getObject(f,!1,c);a&&(b=j.getObject(a,!1,h).call(h,b,
-f));return g(b,f).toString()})};i.trim=String.prototype.trim?j.trim:function(e){for(var e=e.replace(/^\s+/,""),c=e.length-1;0<=c;c--)if(/\S/.test(e.charAt(c))){e=e.substring(0,c+1);break}return e};return i})},"dojo/cache":function(){define("dojo/cache",["./_base/kernel","./text"],function(e){return e.cache})},"dojo/text":function(){define(["./_base/kernel","require","./has","./_base/xhr"],function(e,j,i,l){var c;c=function(a,b,d){l("GET",{url:a,sync:!!b,load:d,headers:e.config.textPluginHeaders||
-{}})};var g={},h=function(a){if(a){var a=a.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,""),b=a.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);b&&(a=b[1])}else a="";return a},b={},f={};e.cache=function(a,b,d){var f;"string"==typeof a?/\//.test(a)?(f=a,d=b):f=j.toUrl(a.replace(/\./g,"/")+(b?"/"+b:"")):(f=a+"",d=b);a=void 0!=d&&"string"!=typeof d?d.value:d;d=d&&d.sanitize;if("string"==typeof a)return g[f]=a,d?h(a):a;if(null===a)return delete g[f],null;f in g||c(f,!0,function(a){g[f]=
-a});return d?h(g[f]):g[f]};return{dynamic:!0,normalize:function(a,b){var d=a.split("!"),c=d[0];return(/^\./.test(c)?b(c):c)+(d[1]?"!"+d[1]:"")},load:function(a,e,d){var a=a.split("!"),i=1<a.length,m=a[0],l=e.toUrl(a[0]),a="url:"+l,j=b,r=function(a){d(i?h(a):a)};m in g?j=g[m]:a in e.cache?j=e.cache[a]:l in g&&(j=g[l]);if(j===b)if(f[l])f[l].push(r);else{var q=f[l]=[r];c(l,!e.async,function(a){g[m]=g[l]=a;for(var b=0;b<q.length;)q[b++](a);delete f[l]})}else r(j)}}})},"dijit/layout/_LayoutWidget":function(){define("dojo/_base/lang,../_Widget,../_Container,../_Contained,../Viewport,dojo/_base/declare,dojo/dom-class,dojo/dom-geometry,dojo/dom-style".split(","),
-function(e,j,i,l,c,g,h,b,f){return g("dijit.layout._LayoutWidget",[j,i,l],{baseClass:"dijitLayoutContainer",isLayoutContainer:!0,buildRendering:function(){this.inherited(arguments);h.add(this.domNode,"dijitContainer")},startup:function(){if(!this._started){this.inherited(arguments);var a=this.getParent&&this.getParent();if(!a||!a.isLayoutContainer)this.resize(),this.own(c.on("resize",e.hitch(this,"resize")))}},resize:function(a,c){var d=this.domNode;a&&b.setMarginBox(d,a);var g=c||{};e.mixin(g,a||
-{});if(!("h"in g)||!("w"in g))g=e.mixin(b.getMarginBox(d),g);var m=f.getComputedStyle(d),h=b.getMarginExtents(d,m),i=b.getBorderExtents(d,m),g=this._borderBox={w:g.w-(h.w+i.w),h:g.h-(h.h+i.h)},h=b.getPadExtents(d,m);this._contentBox={l:f.toPixelValue(d,m.paddingLeft),t:f.toPixelValue(d,m.paddingTop),w:g.w-h.w,h:g.h-h.h};this.layout()},layout:function(){},_setupChild:function(a){h.add(a.domNode,this.baseClass+"-child "+(a.baseClass?this.baseClass+"-"+a.baseClass:""))},addChild:function(a,b){this.inherited(arguments);
-this._started&&this._setupChild(a)},removeChild:function(a){h.remove(a.domNode,this.baseClass+"-child"+(a.baseClass?" "+this.baseClass+"-"+a.baseClass:""));this.inherited(arguments)}})})},"dijit/_Container":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-construct"],function(e,j,i){return j("dijit._Container",null,{buildRendering:function(){this.inherited(arguments);if(!this.containerNode)this.containerNode=this.domNode},addChild:function(e,c){var g=this.containerNode;if(c&&"number"==
-typeof c){var h=this.getChildren();if(h&&h.length>=c)g=h[c-1].domNode,c="after"}i.place(e.domNode,g,c);this._started&&!e._started&&e.startup()},removeChild:function(e){"number"==typeof e&&(e=this.getChildren()[e]);if(e)(e=e.domNode)&&e.parentNode&&e.parentNode.removeChild(e)},hasChildren:function(){return 0<this.getChildren().length},_getSiblingOfChild:function(i,c){var g=this.getChildren(),h=e.indexOf(this.getChildren(),i);return g[h+c]},getIndexOfChild:function(i){return e.indexOf(this.getChildren(),
-i)}})})},"dijit/_Contained":function(){define(["dojo/_base/declare","./registry"],function(e,j){return e("dijit._Contained",null,{_getSibling:function(e){var l=this.domNode;do l=l[e+"Sibling"];while(l&&1!=l.nodeType);return l&&j.byNode(l)},getPreviousSibling:function(){return this._getSibling("previous")},getNextSibling:function(){return this._getSibling("next")},getIndexInParent:function(){var e=this.getParent();return!e||!e.getIndexOfChild?-1:e.getIndexOfChild(this)}})})},"dijit/Viewport":function(){define("dojo/Evented,dojo/on,dojo/ready,dojo/sniff,dojo/_base/window,dojo/window".split(","),
-function(e,j,i,l,c,g){var h=new e;i(200,function(){var b=g.getBox();h._rlh=j(c.global,"resize",function(){var a=g.getBox();b.h==a.h&&b.w==a.w||(b=a,h.emit("resize"))});if(8==l("ie")){var f=screen.deviceXDPI;setInterval(function(){if(screen.deviceXDPI!=f)f=screen.deviceXDPI,h.emit("resize")},500)}});return h})},"dijit/layout/utils":function(){define("dojo/_base/array,dojo/dom-class,dojo/dom-geometry,dojo/dom-style,dojo/_base/lang,../main".split(","),function(e,j,i,l,c,g){function h(b,f){var a=b.resize?
-b.resize(f):i.setMarginBox(b.domNode,f);a?c.mixin(b,a):(c.mixin(b,i.getMarginBox(b.domNode)),c.mixin(b,f))}g=c.getObject("layout",!0,g);g.marginBox2contentBox=function(b,c){var a=l.getComputedStyle(b),g=i.getMarginExtents(b,a),d=i.getPadBorderExtents(b,a);return{l:l.toPixelValue(b,a.paddingLeft),t:l.toPixelValue(b,a.paddingTop),w:c.w-(g.w+d.w),h:c.h-(g.h+d.h)}};g.layoutChildren=function(b,f,a,g,d){f=c.mixin({},f);j.add(b,"dijitLayoutContainer");a=e.filter(a,function(a){return"center"!=a.region&&"client"!=
-a.layoutAlign}).concat(e.filter(a,function(a){return"center"==a.region||"client"==a.layoutAlign}));e.forEach(a,function(a){var b=a.domNode,c=a.region||a.layoutAlign;if(!c)throw Error("No region setting for "+a.id);var e=b.style;e.left=f.l+"px";e.top=f.t+"px";e.position="absolute";j.add(b,"dijitAlign"+(c.substring(0,1).toUpperCase()+c.substring(1)));b={};g&&g==a.id&&(b["top"==a.region||"bottom"==a.region?"h":"w"]=d);"top"==c||"bottom"==c?(b.w=f.w,h(a,b),f.h-=a.h,"top"==c?f.t+=a.h:e.top=f.t+f.h+"px"):
-"left"==c||"right"==c?(b.h=f.h,h(a,b),f.w-=a.w,"left"==c?f.l+=a.w:e.left=f.l+f.w+"px"):("client"==c||"center"==c)&&h(a,f)})};return{marginBox2contentBox:g.marginBox2contentBox,layoutChildren:g.layoutChildren}})},"dijit/layout/ContentPane":function(){define("dojo/_base/kernel,dojo/_base/lang,../_Widget,../_Container,./_ContentPaneResizeMixin,dojo/string,dojo/html,dojo/i18n!../nls/loading,dojo/_base/array,dojo/_base/declare,dojo/_base/Deferred,dojo/dom,dojo/dom-attr,dojo/_base/xhr,dojo/i18n,dojo/when".split(","),
-function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o){return a("dijit.layout.ContentPane",[i,l,c],{href:"",content:"",extractContent:!1,parseOnLoad:!0,parserScope:e._scopeName,preventCache:!1,preload:!1,refreshOnShow:!1,loadingMessage:"<span class='dijitContentPaneLoading'><span class='dijitInline dijitIconLoading'></span>${loadingState}</span>",errorMessage:"<span class='dijitContentPaneError'><span class='dijitInline dijitIconError'></span>${errorState}</span>",isLoaded:!1,baseClass:"dijitContentPane",ioArgs:{},
-onLoadDeferred:null,_setTitleAttr:null,stopParser:!0,template:!1,create:function(a,b){if((!a||!a.template)&&b&&!("href"in a)&&!("content"in a)){for(var b=d.byId(b),c=b.ownerDocument.createDocumentFragment();b.firstChild;)c.appendChild(b.firstChild);a=j.delegate(a,{content:c})}this.inherited(arguments,[a,b])},postMixInProperties:function(){this.inherited(arguments);var a=n.getLocalization("dijit","loading",this.lang);this.loadingMessage=g.substitute(this.loadingMessage,a);this.errorMessage=g.substitute(this.errorMessage,
-a)},buildRendering:function(){this.inherited(arguments);if(!this.containerNode)this.containerNode=this.domNode;this.domNode.title="";p.get(this.domNode,"role")||this.domNode.setAttribute("role","group")},startup:function(){this.inherited(arguments);this._contentSetter&&f.forEach(this._contentSetter.parseResults,function(a){if(!a._started&&!a._destroyed&&j.isFunction(a.startup))a.startup(),a._started=!0},this)},_startChildren:function(){f.forEach(this.getChildren(),function(a){if(!a._started&&!a._destroyed&&
-j.isFunction(a.startup))a.startup(),a._started=!0});this._contentSetter&&f.forEach(this._contentSetter.parseResults,function(a){if(!a._started&&!a._destroyed&&j.isFunction(a.startup))a.startup(),a._started=!0},this)},setHref:function(a){e.deprecated("dijit.layout.ContentPane.setHref() is deprecated. Use set('href', ...) instead.","","2.0");return this.set("href",a)},_setHrefAttr:function(a){this.cancel();this.onLoadDeferred=new k(j.hitch(this,"cancel"));this.onLoadDeferred.then(j.hitch(this,"onLoad"));
-this._set("href",a);this.preload||this._created&&this._isShown()?this._load():this._hrefChanged=!0;return this.onLoadDeferred},setContent:function(a){e.deprecated("dijit.layout.ContentPane.setContent() is deprecated. Use set('content', ...) instead.","","2.0");this.set("content",a)},_setContentAttr:function(a){this._set("href","");this.cancel();this.onLoadDeferred=new k(j.hitch(this,"cancel"));this._created&&this.onLoadDeferred.then(j.hitch(this,"onLoad"));this._setContent(a||"");this._isDownloaded=
+{};b.detail.widget=this;var c,g=this["on"+a];g&&(c=g.apply(this,d?d:[b]));this._started&&!this._beingDestroyed&&o.emit(this.domNode,a.toLowerCase(),b);return c},on:function(a,b){var d=this._onMap(a);return d?h.after(this,d,b,!0):this.own(o(this.domNode,a,b))[0]},_onMap:function(a){var b=this.constructor,d=b._onMap;if(!d){var d=b._onMap={},c;for(c in b.prototype)/^on/.test(c)&&(d[c.replace(/^on/,"").toLowerCase()]=c)}return d["string"==typeof a&&a.toLowerCase()]},toString:function(){return"[Widget "+
+this.declaredClass+", "+(this.id||"NO ID")+"]"},getChildren:function(){return this.containerNode?u.findWidgets(this.containerNode):[]},getParent:function(){return u.getEnclosingWidget(this.domNode.parentNode)},connect:function(a,b,d){return this.own(e.connect(a,b,this,d))[0]},disconnect:function(a){a.remove()},subscribe:function(a,b){return this.own(v.subscribe(a,n.hitch(this,b)))[0]},unsubscribe:function(a){a.remove()},isLeftToRight:function(){return this.dir?"ltr"==this.dir:l.isBodyLtr(this.ownerDocument)},
+isFocusable:function(){return this.focus&&"none"!=d.get(this.domNode,"display")},placeAt:function(b,d){var c=!b.tagName&&u.byId(b);c&&c.addChild&&(!d||"number"===typeof d)?c.addChild(this,d):(c=c?c.containerNode&&!/after|before|replace/.test(d||"")?c.containerNode:c.domNode:i.byId(b,this.ownerDocument),a.place(this.domNode,c,d),!this._started&&(this.getParent()||{})._started&&this.startup());return this},getTextDir:function(a,b){return b},applyTextDir:function(){},defer:function(a,b){var d=setTimeout(n.hitch(this,
+function(){d=null;this._destroyed||n.hitch(this,a)()}),b||0);return{remove:function(){d&&(clearTimeout(d),d=null);return null}}}})})},"dojo/Stateful":function(){define("dojo/Stateful",["./_base/declare","./_base/lang","./_base/array","dojo/when"],function(f,k,h,j){return f("dojo.Stateful",null,{_attrPairNames:{},_getAttrNames:function(e){var c=this._attrPairNames;return c[e]?c[e]:c[e]={s:"_"+e+"Setter",g:"_"+e+"Getter"}},postscript:function(e){e&&this.set(e)},_get:function(e,c){return"function"===
+typeof this[c.g]?this[c.g]():this[e]},get:function(e){return this._get(e,this._getAttrNames(e))},set:function(e,c){if("object"===typeof e){for(var f in e)e.hasOwnProperty(f)&&"_watchCallbacks"!=f&&this.set(f,e[f]);return this}f=this._getAttrNames(e);var b=this._get(e,f);f=this[f.s];var g;"function"===typeof f?g=f.apply(this,Array.prototype.slice.call(arguments,1)):this[e]=c;if(this._watchCallbacks){var a=this;j(g,function(){a._watchCallbacks(e,b,c)})}return this},_changeAttrValue:function(e,c){var f=
+this.get(e);this[e]=c;this._watchCallbacks&&this._watchCallbacks(e,f,c);return this},watch:function(e,c){var f=this._watchCallbacks;if(!f)var b=this,f=this._watchCallbacks=function(a,d,c,g){var e=function(g){if(g)for(var g=g.slice(),e=0,f=g.length;e<f;e++)g[e].call(b,a,d,c)};e(f["_"+a]);g||e(f["*"])};!c&&"function"===typeof e?(c=e,e="*"):e="_"+e;var g=f[e];"object"!==typeof g&&(g=f[e]=[]);g.push(c);var a={};a.unwatch=a.remove=function(){var a=h.indexOf(g,c);-1<a&&g.splice(a,1)};return a}})})},"dijit/Destroyable":function(){define(["dojo/_base/array",
+"dojo/aspect","dojo/_base/declare"],function(f,k,h){return h("dijit.Destroyable",null,{destroy:function(){this._destroyed=!0},own:function(){f.forEach(arguments,function(f){var e="destroyRecursive"in f?"destroyRecursive":"destroy"in f?"destroy":"remove",c=k.before(this,"destroy",function(c){f[e](c)});k.after(f,e,function(){c.remove()},!0)},this);return arguments}})})},"dijit/registry":function(){define(["dojo/_base/array","dojo/sniff","dojo/_base/unload","dojo/_base/window","./main"],function(f,k,
+h,j,e){var c={},i={},b={length:0,add:function(b){if(i[b.id])throw Error("Tried to register widget with id=="+b.id+" but that id is already registered");i[b.id]=b;this.length++},remove:function(b){i[b]&&(delete i[b],this.length--)},byId:function(b){return"string"==typeof b?i[b]:b},byNode:function(b){return i[b.getAttribute("widgetId")]},toArray:function(){var b=[],a;for(a in i)b.push(i[a]);return b},getUniqueId:function(b){var a;do a=b+"_"+(b in c?++c[b]:c[b]=0);while(i[a]);return"dijit"==e._scopeName?
+a:e._scopeName+"_"+a},findWidgets:function(b,a){function c(b){for(b=b.firstChild;b;b=b.nextSibling)if(1==b.nodeType){var g=b.getAttribute("widgetId");g?(g=i[g])&&d.push(g):b!==a&&c(b)}}var d=[];c(b);return d},_destroyAll:function(){e._curFocus=null;e._prevFocus=null;e._activeStack=[];f.forEach(b.findWidgets(j.body()),function(b){b._destroyed||(b.destroyRecursive?b.destroyRecursive():b.destroy&&b.destroy())})},getEnclosingWidget:function(b){for(;b;){var a=b.getAttribute&&b.getAttribute("widgetId");
+if(a)return i[a];b=b.parentNode}return null},_hash:i};return e.registry=b})},"dijit/main":function(){define(["dojo/_base/kernel"],function(f){return f.dijit})},"dijit/_Widget":function(){define("dojo/aspect,dojo/_base/config,dojo/_base/connect,dojo/_base/declare,dojo/has,dojo/_base/kernel,dojo/_base/lang,dojo/query,dojo/ready,./registry,./_WidgetBase,./_OnDijitClickMixin,./_FocusMixin,dojo/uacss,./hccss".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,p){function m(){}function n(a){return function(b,
+d,c,g){return b&&"string"==typeof d&&b[d]==m?b.on(d.substring(2).toLowerCase(),i.hitch(c,g)):a.apply(h,arguments)}}f.around(h,"connect",n);c.connect&&f.around(c,"connect",n);f=j("dijit._Widget",[l,d,p],{onClick:m,onDblClick:m,onKeyDown:m,onKeyPress:m,onKeyUp:m,onMouseDown:m,onMouseMove:m,onMouseOut:m,onMouseOver:m,onMouseLeave:m,onMouseEnter:m,onMouseUp:m,constructor:function(a){this._toConnect={};for(var b in a)this[b]===m&&(this._toConnect[b.replace(/^on/,"").toLowerCase()]=a[b],delete a[b])},postCreate:function(){this.inherited(arguments);
+for(var a in this._toConnect)this.on(a,this._toConnect[a]);delete this._toConnect},on:function(a,b){return this[this._onMap(a)]===m?h.connect(this.domNode,a.toLowerCase(),this,b):this.inherited(arguments)},_setFocusedAttr:function(a){this._focused=a;this._set("focused",a)},setAttribute:function(a,b){c.deprecated(this.declaredClass+"::setAttribute(attr, value) is deprecated. Use set() instead.","","2.0");this.set(a,b)},attr:function(a,b){if(k.isDebug){var d=arguments.callee._ach||(arguments.callee._ach=
+{}),g=(arguments.callee.caller||"unknown caller").toString();d[g]||(c.deprecated(this.declaredClass+"::attr() is deprecated. Use get() or set() instead, called from "+g,"","2.0"),d[g]=!0)}return 2<=arguments.length||"object"===typeof a?this.set.apply(this,arguments):this.get(a)},getDescendants:function(){c.deprecated(this.declaredClass+"::getDescendants() is deprecated. Use getChildren() instead.","","2.0");return this.containerNode?b("[widgetId]",this.containerNode).map(a.byNode):[]},_onShow:function(){this.onShow()},
+onShow:function(){},onHide:function(){},onClose:function(){return!0}});e("dijit-legacy-requires")&&g(0,function(){require(["dijit/_base"])});return f})},"dijit/_OnDijitClickMixin":function(){define("dojo/on,dojo/_base/array,dojo/keys,dojo/_base/declare,dojo/has,dojo/_base/unload,dojo/_base/window,./a11yclick".split(","),function(f,k,h,j,e,c,i,b){f=j("dijit._OnDijitClickMixin",null,{connect:function(c,a,e){return this.inherited(arguments,[c,"ondijitclick"==a?b:a,e])}});f.a11yclick=b;return f})},"dijit/a11yclick":function(){define("dojo/on,dojo/_base/array,dojo/keys,dojo/_base/declare,dojo/has,dojo/_base/unload,dojo/_base/window".split(","),
+function(f,k,h,j,e,c,i){function b(a){return(a.keyCode===h.ENTER||a.keyCode===h.SPACE)&&!a.ctrlKey&&!a.shiftKey&&!a.altKey&&!a.metaKey}var g=null;e("dom-addeventlistener")?i.doc.addEventListener("keydown",function(a){g=a.target},!0):function(){var a=function(a){g=a.srcElement};i.doc.attachEvent("onkeydown",a);c.addOnWindowUnload(function(){i.doc.detachEvent("onkeydown",a)})}();return function(a,c){if(/input|button/i.test(a.nodeName))return f(a,"click",c);var d=[f(a,"keydown",function(a){if(b(a))g=
+a.target,a.preventDefault()}),f(a,"keyup",function(a){b(a)&&a.target==g&&(g=null,f.emit(a.target,"click",{cancelable:!0,bubbles:!0}))}),f(a,"click",function(a){c.call(this,a)})];if(e("touch")){var i;d.push(f(a,"touchend",function(a){var b=a.target;i=setTimeout(function(){i=null;f.emit(b,"click",{cancelable:!0,bubbles:!0})},600)}),f(a,"click",function(){i&&clearTimeout(i)}))}return{remove:function(){k.forEach(d,function(a){a.remove()});i&&(clearTimeout(i),i=null)}}}})},"dijit/_FocusMixin":function(){define(["./focus",
+"./_WidgetBase","dojo/_base/declare","dojo/_base/lang"],function(f,k,h,j){j.extend(k,{focused:!1,onFocus:function(){},onBlur:function(){},_onFocus:function(){this.onFocus()},_onBlur:function(){this.onBlur()}});return h("dijit._FocusMixin",null,{_focusManager:f})})},"dijit/focus":function(){define("dojo/aspect,dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-construct,dojo/Evented,dojo/_base/lang,dojo/on,dojo/ready,dojo/sniff,dojo/Stateful,dojo/_base/unload,dojo/_base/window,dojo/window,./a11y,./registry,./main".split(","),
+function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o,r){var q=new (k([l,c],{curNode:null,activeStack:[],constructor:function(){var a=i.hitch(this,function(a){h.isDescendant(this.curNode,a)&&this.set("curNode",null);h.isDescendant(this.prevNode,a)&&this.set("prevNode",null)});f.before(e,"empty",a);f.before(e,"destroy",a)},registerIframe:function(a){return this.registerWin(a.contentWindow,a)},registerWin:function(b,d){var c=this,g=function(b){c._justMouseDowned=!0;setTimeout(function(){c._justMouseDowned=!1},0);
+if(!a("ie")||!b||!(b.srcElement&&null==b.srcElement.parentNode))c._onTouchNode(d||b.target||b.srcElement,"mouse")},e=a("ie")?b.document.documentElement:b.document;if(e){if(a("ie")){b.document.body.attachEvent("onmousedown",g);var f=function(a){var b=a.srcElement.tagName.toLowerCase();"#document"==b||"body"==b||(n.isTabNavigable(a.srcElement)?c._onFocusNode(d||a.srcElement):c._onTouchNode(d||a.srcElement))};e.attachEvent("onfocusin",f);var l=function(a){c._onBlurNode(d||a.srcElement)};e.attachEvent("onfocusout",
+l);return{remove:function(){b.document.detachEvent("onmousedown",g);e.detachEvent("onfocusin",f);e.detachEvent("onfocusout",l);e=null}}}e.body.addEventListener("mousedown",g,!0);e.body.addEventListener("touchstart",g,!0);var i=function(a){c._onFocusNode(d||a.target)};e.addEventListener("focus",i,!0);var m=function(a){c._onBlurNode(d||a.target)};e.addEventListener("blur",m,!0);return{remove:function(){e.body.removeEventListener("mousedown",g,!0);e.body.removeEventListener("touchstart",g,!0);e.removeEventListener("focus",
+i,!0);e.removeEventListener("blur",m,!0);e=null}}}},_onBlurNode:function(){this._clearFocusTimer&&clearTimeout(this._clearFocusTimer);this._clearFocusTimer=setTimeout(i.hitch(this,function(){this.set("prevNode",this.curNode);this.set("curNode",null)}),0);if(!this._justMouseDowned)this._clearActiveWidgetsTimer&&clearTimeout(this._clearActiveWidgetsTimer),this._clearActiveWidgetsTimer=setTimeout(i.hitch(this,function(){delete this._clearActiveWidgetsTimer;this._setStack([])}),0)},_onTouchNode:function(a,
+b){this._clearActiveWidgetsTimer&&(clearTimeout(this._clearActiveWidgetsTimer),delete this._clearActiveWidgetsTimer);var d=[];try{for(;a;){var c=j.get(a,"dijitPopupParent");if(c)a=o.byId(c).domNode;else if(a.tagName&&"body"==a.tagName.toLowerCase()){if(a===p.body())break;a=m.get(a.ownerDocument).frameElement}else{var g=a.getAttribute&&a.getAttribute("widgetId"),e=g&&o.byId(g);e&&!("mouse"==b&&e.get("disabled"))&&d.unshift(g);a=a.parentNode}}}catch(f){}this._setStack(d,b)},_onFocusNode:function(a){a&&
+9!=a.nodeType&&(this._clearFocusTimer&&(clearTimeout(this._clearFocusTimer),delete this._clearFocusTimer),this._onTouchNode(a),a!=this.curNode&&(this.set("prevNode",this.curNode),this.set("curNode",a)))},_setStack:function(a,b){var d=this.activeStack;this.set("activeStack",a);for(var c=0;c<Math.min(d.length,a.length)&&!(d[c]!=a[c]);c++);for(var g,e=d.length-1;e>=c;e--)if(g=o.byId(d[e]))g._hasBeenBlurred=!0,g.set("focused",!1),g._focusManager==this&&g._onBlur(b),this.emit("widget-blur",g,b);for(e=
+c;e<a.length;e++)if(g=o.byId(a[e]))g.set("focused",!0),g._focusManager==this&&g._onFocus(b),this.emit("widget-focus",g,b)},focus:function(a){if(a)try{a.focus()}catch(b){}}}));g(function(){var b=q.registerWin(m.get(p.doc));a("ie")&&d.addOnWindowUnload(function(){b&&(b.remove(),b=null)})});r.focus=function(a){q.focus(a)};for(var v in q)/^_/.test(v)||(r.focus[v]="function"==typeof q[v]?i.hitch(q,v):q[v]);q.watch(function(a,b,d){r.focus[a]=d});return q})},"dojo/window":function(){define("./_base/lang,./sniff,./_base/window,./dom,./dom-geometry,./dom-style".split(","),
+function(f,k,h,j,e,c){var i={getBox:function(b){var b=b||h.doc,c="BackCompat"==b.compatMode?h.body(b):b.documentElement,a=e.docScroll(b);if(k("touch"))var f=i.get(b),b=f.innerWidth||c.clientWidth,c=f.innerHeight||c.clientHeight;else b=c.clientWidth,c=c.clientHeight;return{l:a.x,t:a.y,w:b,h:c}},get:function(b){if(k("ie")&&i!==document.parentWindow){b.parentWindow.execScript("document._parentWindow = window;","Javascript");var c=b._parentWindow;b._parentWindow=null;return c}return b.parentWindow||b.defaultView},
+scrollIntoView:function(b,g){try{var b=j.byId(b),a=b.ownerDocument||h.doc,f=h.body(a),d=a.documentElement||f.parentNode,i=k("ie"),m=k("webkit");if((!k("mozilla")&&!i&&!m&&!k("opera")||b==f||b==d)&&"undefined"!=typeof b.scrollIntoView)b.scrollIntoView(!1);else{var n="BackCompat"==a.compatMode,o=9<=i&&"frameElement"in b.ownerDocument.parentWindow?0<d.clientHeight&&0<d.clientWidth&&(0==f.clientHeight||0==f.clientWidth||f.clientHeight>d.clientHeight||f.clientWidth>d.clientWidth)?d:f:n?f:d,m=m?f:o,r=o.clientWidth,
+q=o.clientHeight,v=!e.isBodyLtr(a),s=g||e.position(b),t=b.parentNode,a=function(a){return 6>=i||i&&n?!1:"fixed"==c.get(a,"position").toLowerCase()};if(!a(b))for(;t;){t==f&&(t=m);var u=e.position(t),y=a(t);if(t==m){u.w=r;u.h=q;m==d&&i&&v&&(u.x+=m.offsetWidth-u.w);if(0>u.x||!i)u.x=0;if(0>u.y||!i)u.y=0}else{var z=e.getPadBorderExtents(t);u.w-=z.w;u.h-=z.h;u.x+=z.l;u.y+=z.t;var I=t.clientWidth,J=u.w-I;if(0<I&&0<J)u.w=I,u.x+=v&&(i||t.clientLeft>z.l)?J:0;I=t.clientHeight;J=u.h-I;if(0<I&&0<J)u.h=I}if(y){if(0>
+u.y)u.h+=u.y,u.y=0;if(0>u.x)u.w+=u.x,u.x=0;if(u.y+u.h>q)u.h=q-u.y;if(u.x+u.w>r)u.w=r-u.x}var N=s.x-u.x,E=s.y-Math.max(u.y,0),S=N+s.w-u.w,Q=E+s.h-u.h;if(0<S*N){var B=Math[0>N?"max":"min"](N,S);if(v&&(8==i&&!n||9<=i))B=-B;s.x+=t.scrollLeft;t.scrollLeft+=B;s.x-=t.scrollLeft}0<Q*E&&(s.y+=t.scrollTop,t.scrollTop+=Math[0>E?"max":"min"](E,Q),s.y-=t.scrollTop);t=t!=m&&!y&&t.parentNode}}}catch(A){b.scrollIntoView(!1)}}};f.setObject("dojo.window",i);return i})},"dijit/a11y":function(){define("dojo/_base/array,dojo/_base/config,dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-style,dojo/sniff,./main".split(","),
+function(f,k,h,j,e,c,i,b){var g=b._isElementShown=function(a){var b=c.get(a);return"hidden"!=b.visibility&&"collapsed"!=b.visibility&&"none"!=b.display&&"hidden"!=e.get(a,"type")};b.hasDefaultTabStop=function(a){switch(a.nodeName.toLowerCase()){case "a":return e.has(a,"href");case "area":case "button":case "input":case "object":case "select":case "textarea":return!0;case "iframe":var b;try{var c=a.contentDocument;if("designMode"in c&&"on"==c.designMode)return!0;b=c.body}catch(g){try{b=a.contentWindow.document.body}catch(f){return!1}}return b&&
+("true"==b.contentEditable||b.firstChild&&"true"==b.firstChild.contentEditable);default:return"true"==a.contentEditable}};var a=b.isTabNavigable=function(a){return e.get(a,"disabled")?!1:e.has(a,"tabIndex")?0<=e.get(a,"tabIndex"):b.hasDefaultTabStop(a)};b._getTabNavigable=function(b){function d(a){return a&&"input"==a.tagName.toLowerCase()&&a.type&&"radio"==a.type.toLowerCase()&&a.name&&a.name.toLowerCase()}var c,f,h,j,k,q,v={},s=function(b){for(b=b.firstChild;b;b=b.nextSibling)if(!(1!=b.nodeType||
+i("ie")&&"HTML"!==b.scopeName||!g(b))){if(a(b)){var l=+e.get(b,"tabIndex");if(!e.has(b,"tabIndex")||0==l)c||(c=b),f=b;else if(0<l){if(!h||l<j)j=l,h=b;if(!k||l>=q)q=l,k=b}l=d(b);e.get(b,"checked")&&l&&(v[l]=b)}"SELECT"!=b.nodeName.toUpperCase()&&s(b)}};g(b)&&s(b);return{first:v[d(c)]||c,last:v[d(f)]||f,lowest:v[d(h)]||h,highest:v[d(k)]||k}};b.getFirstInTabbingOrder=function(a,d){var c=b._getTabNavigable(j.byId(a,d));return c.lowest?c.lowest:c.first};b.getLastInTabbingOrder=function(a,d){var c=b._getTabNavigable(j.byId(a,
+d));return c.last?c.last:c.highest};return{hasDefaultTabStop:b.hasDefaultTabStop,isTabNavigable:b.isTabNavigable,_getTabNavigable:b._getTabNavigable,getFirstInTabbingOrder:b.getFirstInTabbingOrder,getLastInTabbingOrder:b.getLastInTabbingOrder}})},"dojo/uacss":function(){define(["./dom-geometry","./_base/lang","./ready","./sniff","./_base/window"],function(f,k,h,j,e){var c=e.doc.documentElement,i=j("ie"),b=j("opera"),g=Math.floor,a=j("ff"),e=f.boxModel.replace(/-/,""),i={dj_ie:i,dj_ie6:6==g(i),dj_ie7:7==
+g(i),dj_ie8:8==g(i),dj_ie9:9==g(i),dj_quirks:j("quirks"),dj_iequirks:i&&j("quirks"),dj_opera:b,dj_khtml:j("khtml"),dj_webkit:j("webkit"),dj_safari:j("safari"),dj_chrome:j("chrome"),dj_gecko:j("mozilla"),dj_ff3:3==g(a)};i["dj_"+e]=!0;var l="",d;for(d in i)i[d]&&(l+=d+" ");c.className=k.trim(c.className+" "+l);h(90,function(){if(!f.isBodyLtr()){var a="dj_rtl dijitRtl "+l.replace(/ /g,"-rtl ");c.className=k.trim(c.className+" "+a+"dj_rtl dijitRtl "+l.replace(/ /g,"-rtl "))}});return j})},"dijit/hccss":function(){define(["dojo/dom-class",
+"dojo/hccss","dojo/ready","dojo/_base/window"],function(f,k,h,j){h(90,function(){k("highcontrast")&&f.add(j.body(),"dijit_a11y")});return k})},"dojo/hccss":function(){define("require,./_base/config,./dom-class,./dom-construct,./dom-style,./has,./ready,./_base/window".split(","),function(f,k,h,j,e,c,i,b){c.add("highcontrast",function(){var c=b.doc.createElement("div");c.style.cssText="border: 1px solid; border-color:red green; position: absolute; height: 5px; top: -999px;background-image: url("+(k.blankGif||
+f.toUrl("./resources/blank.gif"))+");";b.body().appendChild(c);var a=e.getComputedStyle(c),l=a.backgroundImage,a=a.borderTopColor==a.borderRightColor||l&&("none"==l||"url(invalid-url:)"==l);j.destroy(c);return a});i(90,function(){c("highcontrast")&&h.add(b.body(),"dj_a11y")});return c})},"dijit/_TemplatedMixin":function(){define("dojo/_base/lang,dojo/touch,./_WidgetBase,dojo/string,dojo/cache,dojo/_base/array,dojo/_base/declare,dojo/dom-construct,dojo/sniff,dojo/_base/unload".split(","),function(f,
+k,h,j,e,c,i,b,g,a){var l=i("dijit._TemplatedMixin",null,{templateString:null,templatePath:null,_skipNodeCache:!1,_earlyTemplatedStartup:!1,constructor:function(){this._attachPoints=[];this._attachEvents=[]},_stringRepl:function(a){var b=this.declaredClass,c=this;return j.substitute(a,this,function(a,d){"!"==d.charAt(0)&&(a=f.getObject(d.substr(1),!1,c));if("undefined"==typeof a)throw Error(b+" template:"+d);return null==a?"":"!"==d.charAt(0)?a:a.toString().replace(/"/g,"&quot;")},this)},buildRendering:function(){if(!this.templateString)this.templateString=
+e(this.templatePath,{sanitize:!0});var a=l.getCachedTemplate(this.templateString,this._skipNodeCache,this.ownerDocument),c;if(f.isString(a)){if(c=b.toDom(this._stringRepl(a),this.ownerDocument),1!=c.nodeType)throw Error("Invalid template: "+a);}else c=a.cloneNode(!0);this.domNode=c;this.inherited(arguments);this._attachTemplateNodes(c,function(a,b){return a.getAttribute(b)});this._beforeFillContent();this._fillContent(this.srcNodeRef)},_beforeFillContent:function(){},_fillContent:function(a){var b=
+this.containerNode;if(a&&b)for(;a.hasChildNodes();)b.appendChild(a.firstChild)},_attachTemplateNodes:function(a,b){for(var c=f.isArray(a)?a:a.all||a.getElementsByTagName("*"),g=f.isArray(a)?0:-1;0>g||c[g];g++){var e=-1==g?a:c[g];if(!this.widgetsInTemplate||!b(e,"dojoType")&&!b(e,"data-dojo-type")){var l=b(e,"dojoAttachPoint")||b(e,"data-dojo-attach-point");if(l)for(var i=l.split(/\s*,\s*/);l=i.shift();)f.isArray(this[l])?this[l].push(e):this[l]=e,this._attachPoints.push(l);if(l=b(e,"dojoAttachEvent")||
+b(e,"data-dojo-attach-event"))for(var i=l.split(/\s*,\s*/),h=f.trim;l=i.shift();)if(l){var j=null;-1!=l.indexOf(":")?(j=l.split(":"),l=h(j[0]),j=h(j[1])):l=h(l);j||(j=l);this._attachEvents.push(this.connect(e,k[l]||l,j))}}}},destroyRendering:function(){c.forEach(this._attachPoints,function(a){delete this[a]},this);this._attachPoints=[];c.forEach(this._attachEvents,this.disconnect,this);this._attachEvents=[];this.inherited(arguments)}});l._templateCache={};l.getCachedTemplate=function(a,c,g){var e=
+l._templateCache,f=a,i=e[f];if(i){try{if(!i.ownerDocument||i.ownerDocument==(g||document))return i}catch(h){}b.destroy(i)}a=j.trim(a);if(c||a.match(/\$\{([^\}]+)\}/g))return e[f]=a;c=b.toDom(a,g);if(1!=c.nodeType)throw Error("Invalid template: "+a);return e[f]=c};g("ie")&&a.addOnWindowUnload(function(){var a=l._templateCache,c;for(c in a){var g=a[c];"object"==typeof g&&b.destroy(g);delete a[c]}});f.extend(h,{dojoAttachEvent:"",dojoAttachPoint:""});return l})},"dojo/string":function(){define(["./_base/kernel",
+"./_base/lang"],function(f,k){var h={};k.setObject("dojo.string",h);h.rep=function(f,e){if(0>=e||!f)return"";for(var c=[];;){e&1&&c.push(f);if(!(e>>=1))break;f+=f}return c.join("")};h.pad=function(f,e,c,i){c||(c="0");f=""+f;e=h.rep(c,Math.ceil((e-f.length)/c.length));return i?f+e:e+f};h.substitute=function(h,e,c,i){i=i||f.global;c=c?k.hitch(i,c):function(b){return b};return h.replace(/\$\{([^\s\:\}]+)(?:\:([^\s\:\}]+))?\}/g,function(b,g,a){b=k.getObject(g,!1,e);a&&(b=k.getObject(a,!1,i).call(i,b,
+g));return c(b,g).toString()})};h.trim=String.prototype.trim?k.trim:function(f){for(var f=f.replace(/^\s+/,""),e=f.length-1;0<=e;e--)if(/\S/.test(f.charAt(e))){f=f.substring(0,e+1);break}return f};return h})},"dojo/cache":function(){define("dojo/cache",["./_base/kernel","./text"],function(f){return f.cache})},"dojo/text":function(){define(["./_base/kernel","require","./has","./_base/xhr"],function(f,k,h,j){var e;e=function(a,b,d){j("GET",{url:a,sync:!!b,load:d,headers:f.config.textPluginHeaders||
+{}})};var c={},i=function(a){if(a){var a=a.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,""),b=a.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);b&&(a=b[1])}else a="";return a},b={},g={};f.cache=function(a,b,d){var g;"string"==typeof a?/\//.test(a)?(g=a,d=b):g=k.toUrl(a.replace(/\./g,"/")+(b?"/"+b:"")):(g=a+"",d=b);a=void 0!=d&&"string"!=typeof d?d.value:d;d=d&&d.sanitize;if("string"==typeof a)return c[g]=a,d?i(a):a;if(null===a)return delete c[g],null;g in c||e(g,!0,function(a){c[g]=
+a});return d?i(c[g]):c[g]};return{dynamic:!0,normalize:function(a,b){var d=a.split("!"),c=d[0];return(/^\./.test(c)?b(c):c)+(d[1]?"!"+d[1]:"")},load:function(a,f,d){var a=a.split("!"),h=1<a.length,m=a[0],j=f.toUrl(a[0]),a="url:"+j,k=b,r=function(a){d(h?i(a):a)};m in c?k=c[m]:a in f.cache?k=f.cache[a]:j in c&&(k=c[j]);if(k===b)if(g[j])g[j].push(r);else{var q=g[j]=[r];e(j,!f.async,function(a){c[m]=c[j]=a;for(var b=0;b<q.length;)q[b++](a);delete g[j]})}else r(k)}}})},"dijit/layout/_LayoutWidget":function(){define("dojo/_base/lang,../_Widget,../_Container,../_Contained,../Viewport,dojo/_base/declare,dojo/dom-class,dojo/dom-geometry,dojo/dom-style".split(","),
+function(f,k,h,j,e,c,i,b,g){return c("dijit.layout._LayoutWidget",[k,h,j],{baseClass:"dijitLayoutContainer",isLayoutContainer:!0,buildRendering:function(){this.inherited(arguments);i.add(this.domNode,"dijitContainer")},startup:function(){if(!this._started){this.inherited(arguments);var a=this.getParent&&this.getParent();if(!a||!a.isLayoutContainer)this.resize(),this.own(e.on("resize",f.hitch(this,"resize")))}},resize:function(a,c){var d=this.domNode;a&&b.setMarginBox(d,a);var e=c||{};f.mixin(e,a||
+{});if(!("h"in e)||!("w"in e))e=f.mixin(b.getMarginBox(d),e);var i=g.getComputedStyle(d),h=b.getMarginExtents(d,i),j=b.getBorderExtents(d,i),e=this._borderBox={w:e.w-(h.w+j.w),h:e.h-(h.h+j.h)},h=b.getPadExtents(d,i);this._contentBox={l:g.toPixelValue(d,i.paddingLeft),t:g.toPixelValue(d,i.paddingTop),w:e.w-h.w,h:e.h-h.h};this.layout()},layout:function(){},_setupChild:function(a){i.add(a.domNode,this.baseClass+"-child "+(a.baseClass?this.baseClass+"-"+a.baseClass:""))},addChild:function(a,b){this.inherited(arguments);
+this._started&&this._setupChild(a)},removeChild:function(a){i.remove(a.domNode,this.baseClass+"-child"+(a.baseClass?" "+this.baseClass+"-"+a.baseClass:""));this.inherited(arguments)}})})},"dijit/_Container":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-construct"],function(f,k,h){return k("dijit._Container",null,{buildRendering:function(){this.inherited(arguments);if(!this.containerNode)this.containerNode=this.domNode},addChild:function(f,e){var c=this.containerNode;if(e&&"number"==
+typeof e){var i=this.getChildren();if(i&&i.length>=e)c=i[e-1].domNode,e="after"}h.place(f.domNode,c,e);this._started&&!f._started&&f.startup()},removeChild:function(f){"number"==typeof f&&(f=this.getChildren()[f]);if(f)(f=f.domNode)&&f.parentNode&&f.parentNode.removeChild(f)},hasChildren:function(){return 0<this.getChildren().length},_getSiblingOfChild:function(h,e){var c=this.getChildren(),i=f.indexOf(this.getChildren(),h);return c[i+e]},getIndexOfChild:function(h){return f.indexOf(this.getChildren(),
+h)}})})},"dijit/_Contained":function(){define(["dojo/_base/declare","./registry"],function(f,k){return f("dijit._Contained",null,{_getSibling:function(f){var j=this.domNode;do j=j[f+"Sibling"];while(j&&1!=j.nodeType);return j&&k.byNode(j)},getPreviousSibling:function(){return this._getSibling("previous")},getNextSibling:function(){return this._getSibling("next")},getIndexInParent:function(){var f=this.getParent();return!f||!f.getIndexOfChild?-1:f.getIndexOfChild(this)}})})},"dijit/Viewport":function(){define("dojo/Evented,dojo/on,dojo/ready,dojo/sniff,dojo/_base/window,dojo/window".split(","),
+function(f,k,h,j,e,c){var i=new f;h(200,function(){var b=c.getBox();i._rlh=k(e.global,"resize",function(){var a=c.getBox();b.h==a.h&&b.w==a.w||(b=a,i.emit("resize"))});if(8==j("ie")){var g=screen.deviceXDPI;setInterval(function(){if(screen.deviceXDPI!=g)g=screen.deviceXDPI,i.emit("resize")},500)}});return i})},"dijit/layout/utils":function(){define("dojo/_base/array,dojo/dom-class,dojo/dom-geometry,dojo/dom-style,dojo/_base/lang,../main".split(","),function(f,k,h,j,e,c){function i(b,c){var a=b.resize?
+b.resize(c):h.setMarginBox(b.domNode,c);a?e.mixin(b,a):(e.mixin(b,h.getMarginBox(b.domNode)),e.mixin(b,c))}c=e.getObject("layout",!0,c);c.marginBox2contentBox=function(b,c){var a=j.getComputedStyle(b),e=h.getMarginExtents(b,a),d=h.getPadBorderExtents(b,a);return{l:j.toPixelValue(b,a.paddingLeft),t:j.toPixelValue(b,a.paddingTop),w:c.w-(e.w+d.w),h:c.h-(e.h+d.h)}};c.layoutChildren=function(b,c,a,l,d){c=e.mixin({},c);k.add(b,"dijitLayoutContainer");a=f.filter(a,function(a){return"center"!=a.region&&"client"!=
+a.layoutAlign}).concat(f.filter(a,function(a){return"center"==a.region||"client"==a.layoutAlign}));f.forEach(a,function(a){var b=a.domNode,e=a.region||a.layoutAlign;if(!e)throw Error("No region setting for "+a.id);var f=b.style;f.left=c.l+"px";f.top=c.t+"px";f.position="absolute";k.add(b,"dijitAlign"+(e.substring(0,1).toUpperCase()+e.substring(1)));b={};l&&l==a.id&&(b["top"==a.region||"bottom"==a.region?"h":"w"]=d);"top"==e||"bottom"==e?(b.w=c.w,i(a,b),c.h-=a.h,"top"==e?c.t+=a.h:f.top=c.t+c.h+"px"):
+"left"==e||"right"==e?(b.h=c.h,i(a,b),c.w-=a.w,"left"==e?c.l+=a.w:f.left=c.l+c.w+"px"):("client"==e||"center"==e)&&i(a,c)})};return{marginBox2contentBox:c.marginBox2contentBox,layoutChildren:c.layoutChildren}})},"dijit/layout/ContentPane":function(){define("dojo/_base/kernel,dojo/_base/lang,../_Widget,../_Container,./_ContentPaneResizeMixin,dojo/string,dojo/html,dojo/i18n!../nls/loading,dojo/_base/array,dojo/_base/declare,dojo/_base/Deferred,dojo/dom,dojo/dom-attr,dojo/_base/xhr,dojo/i18n,dojo/when".split(","),
+function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o){return a("dijit.layout.ContentPane",[h,j,e],{href:"",content:"",extractContent:!1,parseOnLoad:!0,parserScope:f._scopeName,preventCache:!1,preload:!1,refreshOnShow:!1,loadingMessage:"<span class='dijitContentPaneLoading'><span class='dijitInline dijitIconLoading'></span>${loadingState}</span>",errorMessage:"<span class='dijitContentPaneError'><span class='dijitInline dijitIconError'></span>${errorState}</span>",isLoaded:!1,baseClass:"dijitContentPane",ioArgs:{},
+onLoadDeferred:null,_setTitleAttr:null,stopParser:!0,template:!1,create:function(a,b){if((!a||!a.template)&&b&&!("href"in a)&&!("content"in a)){for(var b=d.byId(b),c=b.ownerDocument.createDocumentFragment();b.firstChild;)c.appendChild(b.firstChild);a=k.delegate(a,{content:c})}this.inherited(arguments,[a,b])},postMixInProperties:function(){this.inherited(arguments);var a=n.getLocalization("dijit","loading",this.lang);this.loadingMessage=c.substitute(this.loadingMessage,a);this.errorMessage=c.substitute(this.errorMessage,
+a)},buildRendering:function(){this.inherited(arguments);if(!this.containerNode)this.containerNode=this.domNode;this.domNode.title="";p.get(this.domNode,"role")||this.domNode.setAttribute("role","group")},startup:function(){this.inherited(arguments);this._contentSetter&&g.forEach(this._contentSetter.parseResults,function(a){if(!a._started&&!a._destroyed&&k.isFunction(a.startup))a.startup(),a._started=!0},this)},_startChildren:function(){g.forEach(this.getChildren(),function(a){if(!a._started&&!a._destroyed&&
+k.isFunction(a.startup))a.startup(),a._started=!0});this._contentSetter&&g.forEach(this._contentSetter.parseResults,function(a){if(!a._started&&!a._destroyed&&k.isFunction(a.startup))a.startup(),a._started=!0},this)},setHref:function(a){f.deprecated("dijit.layout.ContentPane.setHref() is deprecated. Use set('href', ...) instead.","","2.0");return this.set("href",a)},_setHrefAttr:function(a){this.cancel();this.onLoadDeferred=new l(k.hitch(this,"cancel"));this.onLoadDeferred.then(k.hitch(this,"onLoad"));
+this._set("href",a);this.preload||this._created&&this._isShown()?this._load():this._hrefChanged=!0;return this.onLoadDeferred},setContent:function(a){f.deprecated("dijit.layout.ContentPane.setContent() is deprecated. Use set('content', ...) instead.","","2.0");this.set("content",a)},_setContentAttr:function(a){this._set("href","");this.cancel();this.onLoadDeferred=new l(k.hitch(this,"cancel"));this._created&&this.onLoadDeferred.then(k.hitch(this,"onLoad"));this._setContent(a||"");this._isDownloaded=
!1;return this.onLoadDeferred},_getContentAttr:function(){return this.containerNode.innerHTML},cancel:function(){this._xhrDfd&&-1==this._xhrDfd.fired&&this._xhrDfd.cancel();delete this._xhrDfd;this.onLoadDeferred=null},destroy:function(){this.cancel();this.inherited(arguments)},destroyRecursive:function(a){this._beingDestroyed||this.inherited(arguments)},_onShow:function(){this.inherited(arguments);if(this.href&&!this._xhrDfd&&(!this.isLoaded||this._hrefChanged||this.refreshOnShow))return this.refresh()},
-refresh:function(){this.cancel();this.onLoadDeferred=new k(j.hitch(this,"cancel"));this.onLoadDeferred.then(j.hitch(this,"onLoad"));this._load();return this.onLoadDeferred},_load:function(){this._setContent(this.onDownloadStart(),!0);var a=this,b={preventCache:this.preventCache||this.refreshOnShow,url:this.href,handleAs:"text"};j.isObject(this.ioArgs)&&j.mixin(b,this.ioArgs);var d=this._xhrDfd=(this.ioMethod||m.get)(b),c;d.then(function(b){c=b;try{return a._isDownloaded=!0,a._setContent(b,!1)}catch(d){a._onError("Content",
-d)}},function(b){d.canceled||a._onError("Download",b);delete a._xhrDfd;return b}).then(function(){a.onDownloadEnd();delete a._xhrDfd;return c});delete this._hrefChanged},_onLoadHandler:function(a){this._set("isLoaded",!0);try{this.onLoadDeferred.resolve(a)}catch(b){}},_onUnloadHandler:function(){this._set("isLoaded",!1);try{this.onUnload()}catch(a){}},destroyDescendants:function(a){this.isLoaded&&this._onUnloadHandler();var b=this._contentSetter;f.forEach(this.getChildren(),function(b){b.destroyRecursive?
-b.destroyRecursive(a):b.destroy&&b.destroy(a);b._destroyed=!0});b&&(f.forEach(b.parseResults,function(b){if(!b._destroyed)b.destroyRecursive?b.destroyRecursive(a):b.destroy&&b.destroy(a),b._destroyed=!0}),delete b.parseResults);a||h._emptyNode(this.containerNode);delete this._singleChild},_setContent:function(a,b){this.destroyDescendants();var d=this._contentSetter;if(!(d&&d instanceof h._ContentSetter))d=this._contentSetter=new h._ContentSetter({node:this.containerNode,_onError:j.hitch(this,this._onError),
-onContentError:j.hitch(this,function(a){a=this.onContentError(a);try{this.containerNode.innerHTML=a}catch(b){}})});var c=j.mixin({cleanContent:this.cleanContent,extractContent:this.extractContent,parseContent:!a.domNode&&this.parseOnLoad,parserScope:this.parserScope,startup:!1,dir:this.dir,lang:this.lang,textDir:this.textDir},this._contentSetterParams||{}),c=d.set(j.isObject(a)&&a.domNode?a.domNode:a,c),f=this;return o(c&&c.then?c:d.parseDeferred,function(){delete f._contentSetterParams;b||(f._started&&
-(f._startChildren(),f._scheduleLayout()),f._onLoadHandler(a))})},_onError:function(a,b,d){this.onLoadDeferred.reject(b);a=this["on"+a+"Error"].call(this,b);d||a&&this._setContent(a,!0)},onLoad:function(){},onUnload:function(){},onDownloadStart:function(){return this.loadingMessage},onContentError:function(){},onDownloadError:function(){return this.errorMessage},onDownloadEnd:function(){}})})},"dijit/layout/_ContentPaneResizeMixin":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom-class,dojo/dom-geometry,dojo/dom-style,dojo/_base/lang,dojo/query,dojo/sniff,../registry,../Viewport,./utils".split(","),
-function(e,j,i,l,c,g,h,b,f,a,k){return j("dijit.layout._ContentPaneResizeMixin",null,{doLayout:!0,isLayoutContainer:!0,startup:function(){if(!this._started){var b=this.getParent();this._childOfLayoutWidget=b&&b.isLayoutContainer;this._needLayout=!this._childOfLayoutWidget;this.inherited(arguments);this._isShown()&&this._onShow();this._childOfLayoutWidget||this.own(a.on("resize",g.hitch(this,"resize")))}},_checkIfSingleChild:function(){var a=[],b=!1;h("> *",this.containerNode).some(function(c){var g=
-f.byNode(c);g&&g.resize?a.push(g):c.offsetHeight&&(b=!0)});this._singleChild=1==a.length&&!b?a[0]:null;i.toggle(this.containerNode,this.baseClass+"SingleChild",!!this._singleChild)},resize:function(a,b){this._resizeCalled=!0;this._scheduleLayout(a,b)},_scheduleLayout:function(a,b){this._isShown()?this._layout(a,b):(this._needLayout=!0,this._changeSize=a,this._resultSize=b)},_layout:function(a,b){delete this._needLayout;!this._wasShown&&!1!==this.open&&this._onShow();a&&l.setMarginBox(this.domNode,
-a);var c=this.containerNode;if(c===this.domNode){var f=b||{};g.mixin(f,a||{});if(!("h"in f)||!("w"in f))f=g.mixin(l.getMarginBox(c),f);this._contentBox=k.marginBox2contentBox(c,f)}else this._contentBox=l.getContentBox(c);this._layoutChildren()},_layoutChildren:function(){this.doLayout&&this._checkIfSingleChild();if(this._singleChild&&this._singleChild.resize){var a=this._contentBox||l.getContentBox(this.containerNode);this._singleChild.resize({w:a.w,h:a.h})}else e.forEach(this.getChildren(),function(a){a.resize&&
-a.resize()})},_isShown:function(){if(this._childOfLayoutWidget)return this._resizeCalled&&"open"in this?this.open:this._resizeCalled;if("open"in this)return this.open;var a=this.domNode,b=this.domNode.parentNode;return"none"!=a.style.display&&"hidden"!=a.style.visibility&&!i.contains(a,"dijitHidden")&&b&&b.style&&"none"!=b.style.display},_onShow:function(){this._wasShown=!0;this._needLayout&&this._layout(this._changeSize,this._resultSize);this.inherited(arguments)}})})},"dojo/html":function(){define("./_base/kernel,./_base/lang,./_base/array,./_base/declare,./dom,./dom-construct,./parser".split(","),
-function(e,j,i,l,c,g,h){var b={};j.setObject("dojo.html",b);var f=0;b._secureForInnerHtml=function(a){return a.replace(/(?:\s*<!DOCTYPE\s[^>]+>|<title[^>]*>[\s\S]*?<\/title>)/ig,"")};b._emptyNode=g.empty;b._setNodeContent=function(a,b){g.empty(a);if(b)if("string"==typeof b&&(b=g.toDom(b,a.ownerDocument)),!b.nodeType&&j.isArrayLike(b))for(var d=b.length,c=0;c<b.length;c=d==b.length?c+1:0)g.place(b[c],a,"last");else g.place(b,a,"last");return a};b._ContentSetter=l("dojo.html._ContentSetter",null,{node:"",
-content:"",id:"",cleanContent:!1,extractContent:!1,parseContent:!1,parserScope:e._scopeName,startup:!0,constructor:function(a,b){j.mixin(this,a||{});b=this.node=c.byId(this.node||b);if(!this.id)this.id=["Setter",b?b.id||b.tagName:"",f++].join("_")},set:function(a,b){if(void 0!==a)this.content=a;b&&this._mixin(b);this.onBegin();this.setContent();var d=this.onEnd();return d&&d.then?d:this.node},setContent:function(){var a=this.node;if(!a)throw Error(this.declaredClass+": setContent given no node");
-try{a=b._setNodeContent(a,this.content)}catch(c){var d=this.onContentError(c);try{a.innerHTML=d}catch(f){}}this.node=a},empty:function(){this.parseDeferred&&(this.parseDeferred.isResolved()||this.parseDeferred.cancel(),delete this.parseDeferred);this.parseResults&&this.parseResults.length&&(i.forEach(this.parseResults,function(a){a.destroy&&a.destroy()}),delete this.parseResults);b._emptyNode(this.node)},onBegin:function(){var a=this.content;if(j.isString(a)&&(this.cleanContent&&(a=b._secureForInnerHtml(a)),
-this.extractContent)){var c=a.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);c&&(a=c[1])}this.empty();this.content=a;return this.node},onEnd:function(){this.parseContent&&this._parse();return this.node},tearDown:function(){delete this.parseResults;delete this.parseDeferred;delete this.node;delete this.content},onContentError:function(a){return"Error occurred setting content: "+a},onExecError:function(a){return"Error occurred executing scripts: "+a},_mixin:function(a){var b={},d;for(d in a)d in b||
-(this[d]=a[d])},_parse:function(){var a=this.node;try{var b={};i.forEach(["dir","lang","textDir"],function(a){this[a]&&(b[a]=this[a])},this);var d=this;this.parseDeferred=h.parse({rootNode:a,noStart:!this.startup,inherited:b,scope:this.parserScope}).then(function(a){return d.parseResults=a})}catch(c){this._onError("Content",c,"Error parsing in _ContentSetter#"+this.id)}},_onError:function(a,c,d){a=this["on"+a+"Error"].call(this,c);d||a&&b._setNodeContent(this.node,a,!0)}});b.set=function(a,c,d){void 0==
-c&&(c="");return d?(new b._ContentSetter(j.mixin(d,{content:c,node:a}))).set():b._setNodeContent(a,c,!0)};return b})},"dojo/parser":function(){define("require,./_base/kernel,./_base/lang,./_base/array,./_base/config,./_base/html,./_base/window,./_base/url,./_base/json,./aspect,./date/stamp,./Deferred,./has,./query,./on,./ready".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o){function r(a){var b=a._nameCaseMap,d=a.prototype;if(!b||b._extendCnt<v){var b=a._nameCaseMap={},c;for(c in d)"_"!==c.charAt(0)&&
-(b[c.toLowerCase()]=c);b._extendCnt=v}return b}function q(a){var b=a.join();if(!s[b]){for(var d=[],c=0,f=a.length;c<f;c++){var g=a[c];d[d.length]=s[g]=s[g]||i.getObject(g)||~g.indexOf("/")&&e(g)}a=d.shift();s[b]=d.length?a.createSubclass?a.createSubclass(d):a.extend.apply(a,d):a}return s[b]}var v=0;a.after(i,"extend",function(){v++},!0);var s={},u={_clearCache:function(){v++;s={}},_functionFromScript:function(a,b){var d="",c="",f=a.getAttribute(b+"args")||a.getAttribute("args"),g=a.getAttribute("with"),
-f=(f||"").split(/\s*,\s*/);g&&g.length&&l.forEach(g.split(/\s*,\s*/),function(a){d+="with("+a+"){";c+="}"});return new Function(f,d+a.innerHTML+c)},instantiate:function(a,b,d){var b=b||{},d=d||{},c=(d.scope||j._scopeName)+"Type",f="data-"+(d.scope||j._scopeName)+"-",g=f+"type",e=f+"mixins",k=[];l.forEach(a,function(a){var d=c in b?b[c]:a.getAttribute(g)||a.getAttribute(c);if(d){var f=a.getAttribute(e),d=f?[d].concat(f.split(/\s*,\s*/)):[d];k.push({node:a,types:d})}});return this._instantiate(k,b,
-d)},_instantiate:function(a,b,d){a=l.map(a,function(a){var c=a.ctor||q(a.types);if(!c)throw Error("Unable to resolve constructor for: '"+a.types.join()+"'");return this.construct(c,a.node,b,d,a.scripts,a.inherited)},this);!b._started&&!d.noStart&&l.forEach(a,function(a){"function"===typeof a.startup&&!a._started&&a.startup()});return a},construct:function(d,c,g,e,h,o){var t;var q=d&&d.prototype,e=e||{},u={};e.defaults&&i.mixin(u,e.defaults);o&&i.mixin(u,o);var v;p("dom-attributes-explicit")?v=c.attributes:
-p("dom-attributes-specified-flag")?v=l.filter(c.attributes,function(a){return a.specified}):(o=(/^input$|^img$/i.test(c.nodeName)?c:c.cloneNode(!1)).outerHTML.replace(/=[^\s"']+|="[^"]*"|='[^']*'/g,"").replace(/^\s*<[a-zA-Z0-9]*\s*/,"").replace(/\s*>.*$/,""),v=l.map(o.split(/\s+/),function(a){var b=a.toLowerCase();return{name:a,value:"LI"==c.nodeName&&"value"==a||"enctype"==b?c.getAttribute(b):c.getAttributeNode(b).value}}));var s=e.scope||j._scopeName,o="data-"+s+"-",A={};"dojo"!==s&&(A[o+"props"]=
-"data-dojo-props",A[o+"type"]="data-dojo-type",A[o+"mixins"]="data-dojo-mixins",A[s+"type"]="dojoType",A[o+"id"]="data-dojo-id");for(var s=0,w,x=[],K,H;w=v[s++];){var C=w.name,F=C.toLowerCase();w=w.value;switch(A[F]||F){case "data-dojo-type":case "dojotype":case "data-dojo-mixins":break;case "data-dojo-props":H=w;break;case "data-dojo-id":case "jsid":K=w;break;case "data-dojo-attach-point":case "dojoattachpoint":u.dojoAttachPoint=w;break;case "data-dojo-attach-event":case "dojoattachevent":u.dojoAttachEvent=
-w;break;case "class":u["class"]=c.className;break;case "style":u.style=c.style&&c.style.cssText;break;default:if(C in q||(C=r(d)[F]||C),C in q)switch(typeof q[C]){case "string":u[C]=w;break;case "number":u[C]=w.length?Number(w):NaN;break;case "boolean":u[C]="false"!=w.toLowerCase();break;case "function":u[C]=""===w||-1!=w.search(/[^\w\.]+/i)?new Function(w):i.getObject(w,!1)||new Function(w);x.push(C);break;default:F=q[C],u[C]=F&&"length"in F?w?w.split(/\s*,\s*/):[]:F instanceof Date?""==w?new Date(""):
-"now"==w?new Date:k.fromISOString(w):F instanceof b?j.baseUrl+w:f.fromJson(w)}else u[C]=w}}for(s=0;s<x.length;s++)v=x[s].toLowerCase(),c.removeAttribute(v),c[v]=null;if(H)try{H=f.fromJson.call(e.propsThis,"{"+H+"}"),i.mixin(u,H)}catch(O){throw Error(O.toString()+" in data-dojo-props='"+H+"'");}i.mixin(u,g);h||(h=d&&(d._noScript||q._noScript)?[]:m("> script[type^='dojo/']",c));g=[];e=[];H=[];x=[];if(h)for(s=0;s<h.length;s++){var D=h[s];c.removeChild(D);v=D.getAttribute(o+"event")||D.getAttribute("event");
-A=D.getAttribute(o+"prop");C=D.getAttribute(o+"method");F=D.getAttribute(o+"advice");w=D.getAttribute("type");D=this._functionFromScript(D,o);v?"dojo/connect"==w?g.push({method:v,func:D}):"dojo/on"==w?x.push({event:v,func:D}):u[v]=D:"dojo/aspect"==w?g.push({method:C,advice:F,func:D}):"dojo/watch"==w?H.push({prop:A,func:D}):e.push(D)}t=(h=d.markupFactory||q.markupFactory)?h(u,c,d):new d(u,c),d=t;K&&i.setObject(K,d);for(s=0;s<g.length;s++)a[g[s].advice||"after"](d,g[s].method,i.hitch(d,g[s].func),!0);
-for(s=0;s<e.length;s++)e[s].call(d);for(s=0;s<H.length;s++)d.watch(H[s].prop,H[s].func);for(s=0;s<x.length;s++)n(d,x[s].event,x[s].func);return d},scan:function(a,b){function c(a){if(!a.inherited){a.inherited={};var b=a.node,d=c(a.parent),b={dir:b.getAttribute("dir")||d.dir,lang:b.getAttribute("lang")||d.lang,textDir:b.getAttribute(o)||d.textDir},f;for(f in b)b[f]&&(a.inherited[f]=b[f])}return a.inherited}var f=[],g=[],k={},m=(b.scope||j._scopeName)+"Type",h="data-"+(b.scope||j._scopeName)+"-",i=
-h+"type",o=h+"textdir",h=h+"mixins",n=a.firstChild,u=b.inherited;if(!u){var r=function(a,b){return a.getAttribute&&a.getAttribute(b)||a.parentNode&&r(a.parentNode,b)},u={dir:r(a,"dir"),lang:r(a,"lang"),textDir:r(a,o)},v;for(v in u)u[v]||delete u[v]}for(var u={inherited:u},s,C;;)if(n)if(1!=n.nodeType)n=n.nextSibling;else if(s&&"script"==n.nodeName.toLowerCase())(F=n.getAttribute("type"))&&/^dojo\/\w/i.test(F)&&s.push(n),n=n.nextSibling;else if(C)n=n.nextSibling;else{var F=n.getAttribute(i)||n.getAttribute(m);
-v=n.firstChild;if(!F&&(!v||3==v.nodeType&&!v.nextSibling))n=n.nextSibling;else{C=null;if(F){var O=n.getAttribute(h);s=O?[F].concat(O.split(/\s*,\s*/)):[F];try{C=q(s)}catch(D){}C||l.forEach(s,function(a){~a.indexOf("/")&&!k[a]&&(k[a]=!0,g[g.length]=a)});O=C&&!C.prototype._noScript?[]:null;u={types:s,ctor:C,parent:u,node:n,scripts:O};u.inherited=c(u);f.push(u)}else u={node:n,scripts:s,parent:u};n=v;s=O;C=C&&C.prototype.stopParser&&!b.template}}else{if(!u||!u.node)break;n=u.node.nextSibling;C=!1;u=u.parent;
-s=u.scripts}var L=new d;g.length?(p("dojo-debug-messages"),e(g,function(){L.resolve(l.filter(f,function(a){if(!a.ctor)try{a.ctor=q(a.types)}catch(d){}for(var c=a.parent;c&&!c.types;)c=c.parent;var f=a.ctor&&a.ctor.prototype;a.instantiateChildren=!(f&&f.stopParser&&!b.template);a.instantiate=!c||c.instantiate&&c.instantiateChildren;return a.instantiate}))})):L.resolve(f);return L.promise},_require:function(a){var a=f.fromJson("{"+a.innerHTML+"}"),b=[],c=[],g=new d,k;for(k in a)b.push(k),c.push(a[k]);
-e(c,function(){for(var a=0;a<b.length;a++)i.setObject(b[a],arguments[a]);g.resolve(arguments)});return g.promise},_scanAmd:function(a){var b=new d,c=b.promise;b.resolve(!0);var f=this;m("script[type='dojo/require']",a).forEach(function(a){c=c.then(function(){return f._require(a)});a.parentNode.removeChild(a)});return c},parse:function(a,b){var d;!b&&a&&a.rootNode?(b=a,d=b.rootNode):a&&i.isObject(a)&&!("nodeType"in a)?b=a:d=a;d=d?g.byId(d):h.body();var b=b||{},c=b.template?{template:!0}:{},f=[],e=
-this,k=this._scanAmd(d,b).then(function(){return e.scan(d,b)}).then(function(a){return f=f.concat(e._instantiate(a,c,b))}).otherwise(function(a){throw a;});i.mixin(f,k);return f}};j.parser=u;c.parseOnLoad&&o(100,u,"parse");return u})},"dojo/_base/url":function(){define(["./kernel"],function(e){var j=/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/,i=/^((([^\[:]+):)?([^@]+)@)?(\[([^\]]+)\]|([^\[:]*))(:([0-9]+))?$/,l=function(){for(var c=arguments,g=[c[0]],e=1;e<c.length;e++)if(c[e]){var b=
-new l(c[e]+""),g=new l(g[0]+"");if(""==b.path&&!b.scheme&&!b.authority&&!b.query){if(null!=b.fragment)g.fragment=b.fragment;b=g}else if(!b.scheme&&(b.scheme=g.scheme,!b.authority&&(b.authority=g.authority,"/"!=b.path.charAt(0)))){for(var g=(g.path.substring(0,g.path.lastIndexOf("/")+1)+b.path).split("/"),f=0;f<g.length;f++)"."==g[f]?f==g.length-1?g[f]="":(g.splice(f,1),f--):0<f&&!(1==f&&""==g[0])&&".."==g[f]&&".."!=g[f-1]&&(f==g.length-1?(g.splice(f,1),g[f-1]=""):(g.splice(f-1,2),f-=2));b.path=g.join("/")}g=
-[];b.scheme&&g.push(b.scheme,":");b.authority&&g.push("//",b.authority);g.push(b.path);b.query&&g.push("?",b.query);b.fragment&&g.push("#",b.fragment)}this.uri=g.join("");c=this.uri.match(j);this.scheme=c[2]||(c[1]?"":null);this.authority=c[4]||(c[3]?"":null);this.path=c[5];this.query=c[7]||(c[6]?"":null);this.fragment=c[9]||(c[8]?"":null);if(null!=this.authority)c=this.authority.match(i),this.user=c[3]||null,this.password=c[4]||null,this.host=c[6]||c[7],this.port=c[9]||null};l.prototype.toString=
-function(){return this.uri};return e._Url=l})},"dojo/date/stamp":function(){define(["../_base/lang","../_base/array"],function(e,j){var i={};e.setObject("dojo.date.stamp",i);i.fromISOString=function(e,c){if(!i._isoRegExp)i._isoRegExp=/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(.\d+)?)?((?:[+-](\d{2}):(\d{2}))|Z)?)?$/;var g=i._isoRegExp.exec(e),h=null;if(g){g.shift();g[1]&&g[1]--;g[6]&&(g[6]*=1E3);c&&(c=new Date(c),j.forEach(j.map("FullYear,Month,Date,Hours,Minutes,Seconds,Milliseconds".split(","),
-function(a){return c["get"+a]()}),function(a,b){g[b]=g[b]||a}));h=new Date(g[0]||1970,g[1]||0,g[2]||1,g[3]||0,g[4]||0,g[5]||0,g[6]||0);100>g[0]&&h.setFullYear(g[0]||1970);var b=0,f=g[7]&&g[7].charAt(0);"Z"!=f&&(b=60*(g[8]||0)+(Number(g[9])||0),"-"!=f&&(b*=-1));f&&(b-=h.getTimezoneOffset());b&&h.setTime(h.getTime()+6E4*b)}return h};i.toISOString=function(e,c){var g=function(a){return 10>a?"0"+a:a},c=c||{},h=[],b=c.zulu?"getUTC":"get",f="";"time"!=c.selector&&(f=e[b+"FullYear"](),f=["0000".substr((f+
-"").length)+f,g(e[b+"Month"]()+1),g(e[b+"Date"]())].join("-"));h.push(f);if("date"!=c.selector){f=[g(e[b+"Hours"]()),g(e[b+"Minutes"]()),g(e[b+"Seconds"]())].join(":");b=e[b+"Milliseconds"]();c.milliseconds&&(f+="."+(100>b?"0":"")+g(b));if(c.zulu)f+="Z";else if("time"!=c.selector)var b=e.getTimezoneOffset(),a=Math.abs(b),f=f+((0<b?"-":"+")+g(Math.floor(a/60))+":"+g(a%60));h.push(f)}return h.join("T")};return i})},"dojox/layout/ExpandoPane":function(){define("dojo/_base/kernel,dojo/_base/lang,dojo/_base/declare,dojo/_base/array,dojo/_base/connect,dojo/_base/event,dojo/_base/fx,dojo/dom-style,dojo/dom-class,dojo/dom-geometry,dojo/text!./resources/ExpandoPane.html,dijit/layout/ContentPane,dijit/_TemplatedMixin,dijit/_Contained,dijit/_Container".split(","),
-function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n){e.experimental("dojox.layout.ExpandoPane");return i("dojox.layout.ExpandoPane",[d,p,m,n],{attributeMap:j.delegate(d.prototype.attributeMap,{title:{node:"titleNode",type:"innerHTML"}}),templateString:k,easeOut:"dojo._DefaultEasing",easeIn:"dojo._DefaultEasing",duration:420,startExpanded:!0,previewOpacity:0.75,previewOnDblClick:!1,tabIndex:"0",_setTabIndexAttr:"iconNode",baseClass:"dijitExpandoPane",postCreate:function(){this.inherited(arguments);this._animConnects=
-[];this._isHorizontal=!0;if(j.isString(this.easeOut))this.easeOut=j.getObject(this.easeOut);if(j.isString(this.easeIn))this.easeIn=j.getObject(this.easeIn);var a="",d=!this.isLeftToRight();if(this.region){switch(this.region){case "trailing":case "right":a=d?"Left":"Right";this._needsPosition="left";break;case "leading":case "left":a=d?"Right":"Left";break;case "top":a="Top";break;case "bottom":this._needsPosition="top",a="Bottom"}f.add(this.domNode,"dojoxExpando"+a);f.add(this.iconNode,"dojoxExpandoIcon"+
-a);this._isHorizontal=/top|bottom/.test(this.region)}b.set(this.domNode,{overflow:"hidden",padding:0});this.connect(this.domNode,"ondblclick",this.previewOnDblClick?"preview":"toggle");this.iconNode.setAttribute("aria-controls",this.id);this.previewOnDblClick&&this.connect(this.getParent(),"_layoutChildren",j.hitch(this,function(){this._isonlypreview=!1}))},_startupSizes:function(){this._container=this.getParent();this._closedSize=this._titleHeight=a.getMarginBox(this.titleWrapper).h;if(this.splitter){var b=
-this.id;l.forEach(dijit.registry.toArray(),function(a){a&&a.child&&a.child.id==b&&this.connect(a,"_stopDrag","_afterResize")},this)}this._currentSize=a.getContentBox(this.domNode);this._showSize=this._currentSize[this._isHorizontal?"h":"w"];this._setupAnims();this.startExpanded?this._showing=!0:(this._showing=!1,this._hideWrapper(),this._hideAnim.gotoPercent(99,!0));this.domNode.setAttribute("aria-expanded",this._showing);this._hasSizes=!0},_afterResize:function(){var b=this._currentSize;this._currentSize=
-a.getMarginBox(this.domNode);var d=this._currentSize[this._isHorizontal?"h":"w"];if(d>this._titleHeight){if(!this._showing)this._showing=!this._showing,this._showEnd();this._showSize=d;this._setupAnims()}else this._showSize=b[this._isHorizontal?"h":"w"],this._showing=!1,this._hideWrapper(),this._hideAnim.gotoPercent(89,!0)},_setupAnims:function(){l.forEach(this._animConnects,c.disconnect);var a={node:this.domNode,duration:this.duration},b={},d=this._showSize,f=this._closedSize,g={},e=this._isHorizontal?
-"height":"width",k=this._needsPosition;b[e]={end:d};g[e]={end:f};k&&(b[k]={end:function(a){return parseInt(a.style[k],10)-d+f}},g[k]={end:function(a){return parseInt(a.style[k],10)+d-f}});this._showAnim=h.animateProperty(j.mixin(a,{easing:this.easeIn,properties:b}));this._hideAnim=h.animateProperty(j.mixin(a,{easing:this.easeOut,properties:g}));this._animConnects=[c.connect(this._showAnim,"onEnd",this,"_showEnd"),c.connect(this._hideAnim,"onEnd",this,"_hideEnd")]},preview:function(){if(!this._showing)this._isonlypreview=
-!this._isonlypreview;this.toggle()},toggle:function(){this._showing?(this._hideWrapper(),this._showAnim&&this._showAnim.stop(),this._hideAnim.play()):(this._hideAnim&&this._hideAnim.stop(),this._showAnim.play());this._showing=!this._showing;this.domNode.setAttribute("aria-expanded",this._showing)},_hideWrapper:function(){f.add(this.domNode,"dojoxExpandoClosed");b.set(this.cwrapper,{visibility:"hidden",opacity:"0",overflow:"hidden"})},_showEnd:function(){b.set(this.cwrapper,{opacity:0,visibility:"visible"});
-h.anim(this.cwrapper,{opacity:this._isonlypreview?this.previewOpacity:1},227);f.remove(this.domNode,"dojoxExpandoClosed");this._isonlypreview?(this._previewShowing=!0,this.resize()):setTimeout(j.hitch(this._container,"layout"),15)},_hideEnd:function(){this._isonlypreview?this._previewShowing=!1:setTimeout(j.hitch(this._container,"layout"),25);this._isonlypreview=!1},resize:function(d){this._hasSizes||this._startupSizes(d);var c=a.getMarginBox(this.domNode);this._contentBox={w:d&&"w"in d?d.w:c.w,h:(d&&
-"h"in d?d.h:c.h)-this._titleHeight};b.set(this.containerNode,"height",this._contentBox.h+"px");d&&a.setMarginBox(this.domNode,d);this._layoutChildren();this._setupAnims()},_trap:function(a){g.stop(a)}})})},"url:dojox/layout/resources/ExpandoPane.html":'<div class="dojoxExpandoPane">\n\t<div dojoAttachPoint="titleWrapper" class="dojoxExpandoTitle">\n\t\t<div class="dojoxExpandoIcon" dojoAttachPoint="iconNode" dojoAttachEvent="ondijitclick:toggle"><span class="a11yNode">X</span></div>\n\t\t<span class="dojoxExpandoTitleNode" dojoAttachPoint="titleNode">${title}</span>\n\t</div>\n\t<div class="dojoxExpandoWrapper" dojoAttachPoint="cwrapper" dojoAttachEvent="ondblclick:_trap">\n\t\t<div class="dojoxExpandoContent" dojoAttachPoint="containerNode"></div>\n\t</div>\n</div>\n',
-"dijit/form/Form":function(){define("dojo/_base/declare,dojo/dom-attr,dojo/_base/event,dojo/_base/kernel,dojo/sniff,../_Widget,../_TemplatedMixin,./_FormMixin,../layout/_ContentPaneResizeMixin".split(","),function(e,j,i,l,c,g,h,b,f){return e("dijit.form.Form",[g,h,b,f],{name:"",action:"",method:"",encType:"","accept-charset":"",accept:"",target:"",templateString:"<form data-dojo-attach-point='containerNode' data-dojo-attach-event='onreset:_onReset,onsubmit:_onSubmit' ${!nameAttrSetting}></form>",
-postMixInProperties:function(){this.nameAttrSetting=this.name?"name='"+this.name+"'":"";this.inherited(arguments)},execute:function(){},onExecute:function(){},_setEncTypeAttr:function(a){this.encType=a;j.set(this.domNode,"encType",a);if(c("ie"))this.domNode.encoding=a},reset:function(a){var b={returnValue:!0,preventDefault:function(){this.returnValue=!1},stopPropagation:function(){},currentTarget:a?a.target:this.domNode,target:a?a.target:this.domNode};!1!==this.onReset(b)&&b.returnValue&&this.inherited(arguments,
-[])},onReset:function(){return!0},_onReset:function(a){this.reset(a);i.stop(a);return!1},_onSubmit:function(a){var b=this.constructor.prototype;if(this.execute!=b.execute||this.onExecute!=b.onExecute)l.deprecated("dijit.form.Form:execute()/onExecute() are deprecated. Use onSubmit() instead.","","2.0"),this.onExecute(),this.execute(this.getValues());!1===this.onSubmit(a)&&i.stop(a)},onSubmit:function(){return this.isValid()},submit:function(){!1!==this.onSubmit()&&this.containerNode.submit()}})})},
-"dijit/form/_FormMixin":function(){define("dojo/_base/array,dojo/_base/declare,dojo/_base/kernel,dojo/_base/lang,dojo/on,dojo/window".split(","),function(e,j,i,l,c,g){return j("dijit.form._FormMixin",null,{state:"",_getDescendantFormWidgets:function(c){var b=[];e.forEach(c||this.getChildren(),function(c){"value"in c?b.push(c):b=b.concat(this._getDescendantFormWidgets(c.getChildren()))},this);return b},reset:function(){e.forEach(this._getDescendantFormWidgets(),function(c){c.reset&&c.reset()})},validate:function(){var c=
-!1;return e.every(e.map(this._getDescendantFormWidgets(),function(b){b._hasBeenBlurred=!0;var f=b.disabled||!b.validate||b.validate();!f&&!c&&(g.scrollIntoView(b.containerNode||b.domNode),b.focus(),c=!0);return f}),function(b){return b})},setValues:function(c){i.deprecated(this.declaredClass+"::setValues() is deprecated. Use set('value', val) instead.","","2.0");return this.set("value",c)},_setValueAttr:function(c){var b={};e.forEach(this._getDescendantFormWidgets(),function(a){a.name&&(b[a.name]||
-(b[a.name]=[])).push(a)});for(var f in b)if(b.hasOwnProperty(f)){var a=b[f],g=l.getObject(f,!1,c);void 0!==g&&(l.isArray(g)||(g=[g]),"boolean"==typeof a[0].checked?e.forEach(a,function(a){a.set("value",-1!=e.indexOf(g,a.value))}):a[0].multiple?a[0].set("value",g):e.forEach(a,function(a,b){a.set("value",g[b])}))}},getValues:function(){i.deprecated(this.declaredClass+"::getValues() is deprecated. Use get('value') instead.","","2.0");return this.get("value")},_getValueAttr:function(){var c={};e.forEach(this._getDescendantFormWidgets(),
-function(b){var f=b.name;if(f&&!b.disabled){var a=b.get("value");"boolean"==typeof b.checked?/Radio/.test(b.declaredClass)?!1!==a?l.setObject(f,a,c):(a=l.getObject(f,!1,c),void 0===a&&l.setObject(f,null,c)):(b=l.getObject(f,!1,c),b||(b=[],l.setObject(f,b,c)),!1!==a&&b.push(a)):(b=l.getObject(f,!1,c),"undefined"!=typeof b?l.isArray(b)?b.push(a):l.setObject(f,[b,a],c):l.setObject(f,a,c))}});return c},isValid:function(){return""==this.state},onValidStateChange:function(){},_getState:function(){var c=
-e.map(this._descendants,function(b){return b.get("state")||""});return 0<=e.indexOf(c,"Error")?"Error":0<=e.indexOf(c,"Incomplete")?"Incomplete":""},disconnectChildren:function(){},connectChildren:function(c){this._descendants=this._getDescendantFormWidgets();e.forEach(this._descendants,function(b){b._started||b.startup()});c||this._onChildChange()},_onChildChange:function(c){(!c||"state"==c||"disabled"==c)&&this._set("state",this._getState());if(!c||"value"==c||"disabled"==c||"checked"==c)this._onChangeDelayTimer&&
-this._onChangeDelayTimer.remove(),this._onChangeDelayTimer=this.defer(function(){delete this._onChangeDelayTimer;this._set("value",this.get("value"))},10)},startup:function(){this.inherited(arguments);this._descendants=this._getDescendantFormWidgets();this.value=this.get("value");this.state=this._getState();var g=this;this.own(c(this.containerNode,"attrmodified-state, attrmodified-disabled, attrmodified-value, attrmodified-checked",function(b){b.target!=g.domNode&&g._onChildChange(b.type.replace("attrmodified-",
-""))}));this.watch("state",function(b,c,a){this.onValidStateChange(""==a)})},destroy:function(){this.inherited(arguments)}})})},"dijit/form/TextBox":function(){define("dojo/_base/declare,dojo/dom-construct,dojo/dom-style,dojo/_base/kernel,dojo/_base/lang,dojo/sniff,./_FormValueWidget,./_TextBoxMixin,dojo/text!./templates/TextBox.html,../main".split(","),function(e,j,i,l,c,g,h,b,f,a){e=e("dijit.form.TextBox",[h,b],{templateString:f,_singleNodeTemplate:'<input class="dijit dijitReset dijitLeft dijitInputField" data-dojo-attach-point="textbox,focusNode" autocomplete="off" type="${type}" ${!nameAttrSetting} />',
-_buttonInputDisabled:g("ie")?"disabled":"",baseClass:"dijitTextBox",postMixInProperties:function(){var a=this.type.toLowerCase();if(this.templateString&&"input"==this.templateString.toLowerCase()||("hidden"==a||"file"==a)&&this.templateString==this.constructor.prototype.templateString)this.templateString=this._singleNodeTemplate;this.inherited(arguments)},postCreate:function(){this.inherited(arguments);9>g("ie")&&this.defer(function(){try{var a=i.getComputedStyle(this.domNode);if(a){var b=a.fontFamily;
-if(b){var c=this.domNode.getElementsByTagName("INPUT");if(c)for(a=0;a<c.length;a++)c[a].style.fontFamily=b}}}catch(f){}})},_onInput:function(a){this.inherited(arguments);this.intermediateChanges&&this.defer(function(){this._handleOnChange(this.get("value"),!1)})},_setPlaceHolderAttr:function(a){this._set("placeHolder",a);if(!this._phspan)this._attachPoints.push("_phspan"),this._phspan=j.create("span",{onmousedown:function(a){a.preventDefault()},className:"dijitPlaceHolder dijitInputField"},this.textbox,
-"after");this._phspan.innerHTML="";this._phspan.appendChild(this._phspan.ownerDocument.createTextNode(a));this._updatePlaceHolder()},_updatePlaceHolder:function(){if(this._phspan)this._phspan.style.display=this.placeHolder&&!this.focused&&!this.textbox.value?"":"none"},_setValueAttr:function(a,b,c){this.inherited(arguments);this._updatePlaceHolder()},getDisplayedValue:function(){l.deprecated(this.declaredClass+"::getDisplayedValue() is deprecated. Use get('displayedValue') instead.","","2.0");return this.get("displayedValue")},
-setDisplayedValue:function(a){l.deprecated(this.declaredClass+"::setDisplayedValue() is deprecated. Use set('displayedValue', ...) instead.","","2.0");this.set("displayedValue",a)},_onBlur:function(a){if(!this.disabled&&(this.inherited(arguments),this._updatePlaceHolder(),g("mozilla")&&this.selectOnClick))this.textbox.selectionStart=this.textbox.selectionEnd=void 0},_onFocus:function(a){!this.disabled&&!this.readOnly&&(this.inherited(arguments),this._updatePlaceHolder())}});if(g("ie"))e.prototype._isTextSelected=
-function(){var a=this.ownerDocument.selection.createRange();return a.parentElement()==this.textbox&&0<a.text.length},a._setSelectionRange=b._setSelectionRange=function(a,b,c){a.createTextRange&&(a=a.createTextRange(),a.collapse(!0),a.moveStart("character",-99999),a.moveStart("character",b),a.moveEnd("character",c-b),a.select())};return e})},"dijit/form/_FormValueWidget":function(){define(["dojo/_base/declare","dojo/sniff","./_FormWidget","./_FormValueMixin"],function(e,j,i,l){return e("dijit.form._FormValueWidget",
-[i,l],{_layoutHackIE7:function(){if(7==j("ie"))for(var c=this.domNode,g=c.parentNode,e=c.firstChild||c,b=e.style.filter,f=this;g&&0==g.clientHeight;)(function(){var a=f.connect(g,"onscroll",function(){f.disconnect(a);e.style.filter=(new Date).getMilliseconds();f.defer(function(){e.style.filter=b})})})(),g=g.parentNode}})})},"dijit/form/_FormWidget":function(){define("dojo/_base/declare,dojo/has,dojo/_base/kernel,dojo/ready,../_Widget,../_CssStateMixin,../_TemplatedMixin,./_FormWidgetMixin".split(","),
-function(e,j,i,l,c,g,h,b){j("dijit-legacy-requires")&&l(0,function(){require(["dijit/form/_FormValueWidget"])});return e("dijit.form._FormWidget",[c,h,g,b],{setDisabled:function(b){i.deprecated("setDisabled("+b+") is deprecated. Use set('disabled',"+b+") instead.","","2.0");this.set("disabled",b)},setValue:function(b){i.deprecated("dijit.form._FormWidget:setValue("+b+") is deprecated. Use set('value',"+b+") instead.","","2.0");this.set("value",b)},getValue:function(){i.deprecated(this.declaredClass+
-"::getValue() is deprecated. Use get('value') instead.","","2.0");return this.get("value")},postMixInProperties:function(){this.nameAttrSetting=this.name?'name="'+this.name.replace(/"/g,"&quot;")+'"':"";this.inherited(arguments)},_setTypeAttr:null})})},"dijit/_CssStateMixin":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom,dojo/dom-class,dojo/has,dojo/_base/lang,dojo/on,dojo/ready,dojo/_base/window,./registry".split(","),function(e,j,i,l,c,g,h,b,f,a){j=j("dijit._CssStateMixin",[],{cssStateNodes:{},
-hovering:!1,active:!1,_applyAttributes:function(){this.inherited(arguments);e.forEach("disabled,readOnly,checked,selected,focused,state,hovering,active,_opened".split(","),function(a){this.watch(a,g.hitch(this,"_setStateClass"))},this);for(var a in this.cssStateNodes)this._trackMouseState(this[a],this.cssStateNodes[a]);this._trackMouseState(this.domNode,this.baseClass);this._setStateClass()},_cssMouseEvent:function(a){if(!this.disabled)switch(a.type){case "mouseover":this._set("hovering",!0);this._set("active",
-this._mouseDown);break;case "mouseout":this._set("hovering",!1);this._set("active",!1);break;case "mousedown":case "touchstart":this._set("active",!0);break;case "mouseup":case "touchend":this._set("active",!1)}},_setStateClass:function(){function a(c){b=b.concat(e.map(b,function(a){return a+c}),"dijit"+c)}var b=this.baseClass.split(" ");this.isLeftToRight()||a("Rtl");var c="mixed"==this.checked?"Mixed":this.checked?"Checked":"";this.checked&&a(c);this.state&&a(this.state);this.selected&&a("Selected");
-this._opened&&a("Opened");this.disabled?a("Disabled"):this.readOnly?a("ReadOnly"):this.active?a("Active"):this.hovering&&a("Hover");this.focused&&a("Focused");var c=this.stateNode||this.domNode,f={};e.forEach(c.className.split(" "),function(a){f[a]=!0});"_stateClasses"in this&&e.forEach(this._stateClasses,function(a){delete f[a]});e.forEach(b,function(a){f[a]=!0});var g=[],h;for(h in f)g.push(h);c.className=g.join(" ");this._stateClasses=b},_subnodeCssMouseEvent:function(a,b,c){function f(c){l.toggle(a,
-b+"Active",c)}if(!this.disabled&&!this.readOnly)switch(c.type){case "mouseover":l.toggle(a,b+"Hover",!0);break;case "mouseout":l.toggle(a,b+"Hover",!1);f(!1);break;case "mousedown":case "touchstart":f(!0);break;case "mouseup":case "touchend":f(!1);break;case "focus":case "focusin":l.toggle(a,b+"Focused",!0);break;case "blur":case "focusout":l.toggle(a,b+"Focused",!1)}},_trackMouseState:function(a,b){a._cssState=b}});b(function(){function b(d){if(!i.isDescendant(d.relatedTarget,d.target))for(var c=
-d.target;c&&c!=d.relatedTarget;c=c.parentNode)if(c._cssState){var f=a.getEnclosingWidget(c);f&&(c==f.domNode?f._cssMouseEvent(d):f._subnodeCssMouseEvent(c,c._cssState,d))}}function d(a){a.target=a.srcElement;b(a)}var g=f.body(),m=(c("touch")?[]:["mouseover","mouseout"]).concat(["mousedown","touchstart","mouseup","touchend"]);e.forEach(m,function(a){g.addEventListener?g.addEventListener(a,b,!0):g.attachEvent("on"+a,d)});h(g,"focusin, focusout",function(b){var d=b.target;d._cssState&&!d.getAttribute("widgetId")&&
-a.getEnclosingWidget(d)._subnodeCssMouseEvent(d,d._cssState,b)})});return j})},"dijit/form/_FormWidgetMixin":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom-attr,dojo/dom-style,dojo/_base/lang,dojo/mouse,dojo/sniff,dojo/window,../a11y".split(","),function(e,j,i,l,c,g,h,b,f){return j("dijit.form._FormWidgetMixin",null,{name:"",alt:"",value:"",type:"text",tabIndex:"0",_setTabIndexAttr:"focusNode",disabled:!1,intermediateChanges:!1,scrollOnFocus:!0,_setIdAttr:"focusNode",_setDisabledAttr:function(a){this._set("disabled",
-a);i.set(this.focusNode,"disabled",a);this.valueNode&&i.set(this.valueNode,"disabled",a);this.focusNode.setAttribute("aria-disabled",a?"true":"false");a?(this._set("hovering",!1),this._set("active",!1),a="tabIndex"in this.attributeMap?this.attributeMap.tabIndex:"_setTabIndexAttr"in this?this._setTabIndexAttr:"focusNode",e.forEach(c.isArray(a)?a:[a],function(a){a=this[a];h("webkit")||f.hasDefaultTabStop(a)?a.setAttribute("tabIndex","-1"):a.removeAttribute("tabIndex")},this)):""!=this.tabIndex&&this.set("tabIndex",
-this.tabIndex)},_onFocus:function(a){if("mouse"==a&&this.isFocusable())var c=this.connect(this.focusNode,"onfocus",function(){this.disconnect(d);this.disconnect(c)}),d=this.connect(this.ownerDocumentBody,"onmouseup",function(){this.disconnect(d);this.disconnect(c);this.focused&&this.focus()});this.scrollOnFocus&&this.defer(function(){b.scrollIntoView(this.domNode)});this.inherited(arguments)},isFocusable:function(){return!this.disabled&&this.focusNode&&"none"!=l.get(this.domNode,"display")},focus:function(){if(!this.disabled&&
-this.focusNode.focus)try{this.focusNode.focus()}catch(a){}},compare:function(a,b){return"number"==typeof a&&"number"==typeof b?isNaN(a)&&isNaN(b)?0:a-b:a>b?1:a<b?-1:0},onChange:function(){},_onChangeActive:!1,_handleOnChange:function(a,b){if(void 0==this._lastValueReported&&(null===b||!this._onChangeActive))this._resetValue=this._lastValueReported=a;this._pendingOnChange=this._pendingOnChange||typeof a!=typeof this._lastValueReported||0!=this.compare(a,this._lastValueReported);if((this.intermediateChanges||
-b||void 0===b)&&this._pendingOnChange)if(this._lastValueReported=a,this._pendingOnChange=!1,this._onChangeActive)this._onChangeHandle&&this._onChangeHandle.remove(),this._onChangeHandle=this.defer(function(){this._onChangeHandle=null;this.onChange(a)})},create:function(){this.inherited(arguments);this._onChangeActive=!0},destroy:function(){this._onChangeHandle&&(this._onChangeHandle.remove(),this.onChange(this._lastValueReported));this.inherited(arguments)}})})},"dijit/form/_FormValueMixin":function(){define(["dojo/_base/declare",
-"dojo/dom-attr","dojo/keys","dojo/sniff","./_FormWidgetMixin"],function(e,j,i,l,c){return e("dijit.form._FormValueMixin",c,{readOnly:!1,_setReadOnlyAttr:function(c){j.set(this.focusNode,"readOnly",c);this.focusNode.setAttribute("aria-readonly",c);this._set("readOnly",c)},postCreate:function(){this.inherited(arguments);l("ie")&&this.connect(this.focusNode||this.domNode,"onkeydown",this._onKeyDown);if(void 0===this._resetValue)this._lastValueReported=this._resetValue=this.value},_setValueAttr:function(c,
-e){this._handleOnChange(c,e)},_handleOnChange:function(c,e){this._set("value",c);this.inherited(arguments)},undo:function(){this._setValueAttr(this._lastValueReported,!1)},reset:function(){this._hasBeenBlurred=!1;this._setValueAttr(this._resetValue,!0)},_onKeyDown:function(c){if(c.keyCode==i.ESCAPE&&!c.ctrlKey&&!c.altKey&&!c.metaKey&&(9>l("ie")||l("ie")&&l("quirks"))){c.preventDefault();var e=c.srcElement,b=e.ownerDocument.createEventObject();b.keyCode=i.ESCAPE;b.shiftKey=c.shiftKey;e.fireEvent("onkeypress",
-b)}}})})},"dijit/form/_TextBoxMixin":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom,dojo/_base/event,dojo/keys,dojo/_base/lang,dojo/on,../main".split(","),function(e,j,i,l,c,g,h,b){var f=j("dijit.form._TextBoxMixin",null,{trim:!1,uppercase:!1,lowercase:!1,propercase:!1,maxLength:"",selectOnClick:!1,placeHolder:"",_getValueAttr:function(){return this.parse(this.get("displayedValue"),this.constraints)},_setValueAttr:function(a,b,d){var c;void 0!==a&&(c=this.filter(a),"string"!=typeof d&&
-(d=null!==c&&("number"!=typeof c||!isNaN(c))?this.filter(this.format(c,this.constraints)):""));if(null!=d&&("number"!=typeof d||!isNaN(d))&&this.textbox.value!=d)this.textbox.value=d,this._set("displayedValue",this.get("displayedValue"));"auto"==this.textDir&&this.applyTextDir(this.focusNode,d);this.inherited(arguments,[c,b])},displayedValue:"",_getDisplayedValueAttr:function(){return this.filter(this.textbox.value)},_setDisplayedValueAttr:function(a){null==a?a="":"string"!=typeof a&&(a=""+a);this.textbox.value=
-a;this._setValueAttr(this.get("value"),void 0);this._set("displayedValue",this.get("displayedValue"));"auto"==this.textDir&&this.applyTextDir(this.focusNode,a)},format:function(a){return null==a?"":a.toString?a.toString():a},parse:function(a){return a},_refreshState:function(){},onInput:function(){},__skipInputEvent:!1,_onInput:function(a){"auto"==this.textDir&&this.applyTextDir(this.focusNode,this.focusNode.value);this._processInput(a)},_processInput:function(){this._refreshState();this._set("displayedValue",
-this.get("displayedValue"))},postCreate:function(){this.textbox.setAttribute("value",this.textbox.value);this.inherited(arguments);this.own(h(this.textbox,"keydown, keypress, paste, cut, input, compositionend",g.hitch(this,function(a){var b;if("keydown"==a.type){b=a.keyCode;switch(b){case c.SHIFT:case c.ALT:case c.CTRL:case c.META:case c.CAPS_LOCK:case c.NUM_LOCK:case c.SCROLL_LOCK:return}if(!a.ctrlKey&&!a.metaKey&&!a.altKey){switch(b){case c.NUMPAD_0:case c.NUMPAD_1:case c.NUMPAD_2:case c.NUMPAD_3:case c.NUMPAD_4:case c.NUMPAD_5:case c.NUMPAD_6:case c.NUMPAD_7:case c.NUMPAD_8:case c.NUMPAD_9:case c.NUMPAD_MULTIPLY:case c.NUMPAD_PLUS:case c.NUMPAD_ENTER:case c.NUMPAD_MINUS:case c.NUMPAD_PERIOD:case c.NUMPAD_DIVIDE:return}if(65<=
-b&&90>=b||48<=b&&57>=b||b==c.SPACE)return;b=!1;for(var d in c)if(c[d]===a.keyCode){b=!0;break}if(!b)return}}(b=32<=a.charCode?String.fromCharCode(a.charCode):a.charCode)||(b=65<=a.keyCode&&90>=a.keyCode||48<=a.keyCode&&57>=a.keyCode||a.keyCode==c.SPACE?String.fromCharCode(a.keyCode):a.keyCode);b||(b=229);if("keypress"==a.type){if("string"!=typeof b)return;if("a"<=b&&"z">=b||"A"<=b&&"Z">=b||"0"<=b&&"9">=b||" "===b)if(a.ctrlKey||a.metaKey||a.altKey)return}if("input"==a.type){if(this.__skipInputEvent){this.__skipInputEvent=
-!1;return}}else this.__skipInputEvent=!0;var f={faux:!0},e;for(e in a)"layerX"!=e&&"layerY"!=e&&(d=a[e],"function"!=typeof d&&"undefined"!=typeof d&&(f[e]=d));g.mixin(f,{charOrCode:b,_wasConsumed:!1,preventDefault:function(){f._wasConsumed=!0;a.preventDefault()},stopPropagation:function(){a.stopPropagation()}});!1===this.onInput(f)&&(f.preventDefault(),f.stopPropagation());f._wasConsumed||this.defer(function(){this._onInput(f)})})))},_blankValue:"",filter:function(a){if(null===a)return this._blankValue;
-if("string"!=typeof a)return a;this.trim&&(a=g.trim(a));this.uppercase&&(a=a.toUpperCase());this.lowercase&&(a=a.toLowerCase());this.propercase&&(a=a.replace(/[^\s]+/g,function(a){return a.substring(0,1).toUpperCase()+a.substring(1)}));return a},_setBlurValue:function(){this._setValueAttr(this.get("value"),!0)},_onBlur:function(a){this.disabled||(this._setBlurValue(),this.inherited(arguments))},_isTextSelected:function(){return this.textbox.selectionStart!=this.textbox.selectionEnd},_onFocus:function(a){if(!this.disabled&&
-!this.readOnly){if(this.selectOnClick&&"mouse"==a)this._selectOnClickHandle=this.connect(this.domNode,"onmouseup",function(){this.disconnect(this._selectOnClickHandle);this._selectOnClickHandle=null;this._isTextSelected()||f.selectInputText(this.textbox)}),this.defer(function(){if(this._selectOnClickHandle)this.disconnect(this._selectOnClickHandle),this._selectOnClickHandle=null},500);this.inherited(arguments);this._refreshState()}},reset:function(){this.textbox.value="";this.inherited(arguments)},
-_setTextDirAttr:function(a){if(!this._created||this.textDir!=a)this._set("textDir",a),this.applyTextDir(this.focusNode,this.focusNode.value)}});f._setSelectionRange=b._setSelectionRange=function(a,b,d){a.setSelectionRange&&a.setSelectionRange(b,d)};f.selectInputText=b.selectInputText=function(a,b,d){a=i.byId(a);isNaN(b)&&(b=0);isNaN(d)&&(d=a.value?a.value.length:0);try{a.focus(),f._setSelectionRange(a,b,d)}catch(c){}};return f})},"url:dijit/form/templates/TextBox.html":'<div class="dijit dijitReset dijitInline dijitLeft" id="widget_${id}" role="presentation"\n\t><div class="dijitReset dijitInputField dijitInputContainer"\n\t\t><input class="dijitReset dijitInputInner" data-dojo-attach-point=\'textbox,focusNode\' autocomplete="off"\n\t\t\t${!nameAttrSetting} type=\'${type}\'\n\t/></div\n></div>\n',
-"dijit/form/Button":function(){define("require,dojo/_base/declare,dojo/dom-class,dojo/has,dojo/_base/kernel,dojo/_base/lang,dojo/ready,./_FormWidget,./_ButtonMixin,dojo/text!./templates/Button.html".split(","),function(e,j,i,l,c,g,h,b,f,a){l("dijit-legacy-requires")&&h(0,function(){e(["dijit/form/DropDownButton","dijit/form/ComboButton","dijit/form/ToggleButton"])});return j("dijit.form.Button",[b,f],{showLabel:!0,iconClass:"dijitNoIcon",_setIconClassAttr:{node:"iconNode",type:"class"},baseClass:"dijitButton",
-templateString:a,_setValueAttr:"valueNode",_onClick:function(a){var b=this.inherited(arguments);b&&this.valueNode&&(this.valueNode.click(),a.preventDefault(),a.stopPropagation());return b},_fillContent:function(a){if(a&&(!this.params||!("label"in this.params)))if(a=g.trim(a.innerHTML))this.label=a},_setShowLabelAttr:function(a){this.containerNode&&i.toggle(this.containerNode,"dijitDisplayNone",!a);this._set("showLabel",a)},setLabel:function(a){c.deprecated("dijit.form.Button.setLabel() is deprecated. Use set('label', ...) instead.",
-"","2.0");this.set("label",a)},_setLabelAttr:function(a){this.inherited(arguments);if(!this.showLabel&&!("title"in this.params))this.titleNode.title=g.trim(this.containerNode.innerText||this.containerNode.textContent||"")}})})},"dijit/form/_ButtonMixin":function(){define(["dojo/_base/declare","dojo/dom","dojo/_base/event","../registry"],function(e,j,i,l){return e("dijit.form._ButtonMixin",null,{label:"",type:"button",_onClick:function(c){if(this.disabled)return i.stop(c),!1;var g=!1===this.onClick(c);
-if(!g&&"submit"==this.type&&!(this.valueNode||this.focusNode).form)for(var e=this.domNode;e.parentNode;e=e.parentNode){var b=l.byNode(e);if(b&&"function"==typeof b._onSubmit){b._onSubmit(c);g=!0;break}}g&&c.preventDefault();return!g},postCreate:function(){this.inherited(arguments);j.setSelectable(this.focusNode,!1)},onClick:function(){return!0},_setLabelAttr:function(c){this._set("label",c);(this.containerNode||this.focusNode).innerHTML=c}})})},"url:dijit/form/templates/Button.html":'<span class="dijit dijitReset dijitInline" role="presentation"\n\t><span class="dijitReset dijitInline dijitButtonNode"\n\t\tdata-dojo-attach-event="ondijitclick:_onClick" role="presentation"\n\t\t><span class="dijitReset dijitStretch dijitButtonContents"\n\t\t\tdata-dojo-attach-point="titleNode,focusNode"\n\t\t\trole="button" aria-labelledby="${id}_label"\n\t\t\t><span class="dijitReset dijitInline dijitIcon" data-dojo-attach-point="iconNode"></span\n\t\t\t><span class="dijitReset dijitToggleButtonIconChar">&#x25CF;</span\n\t\t\t><span class="dijitReset dijitInline dijitButtonText"\n\t\t\t\tid="${id}_label"\n\t\t\t\tdata-dojo-attach-point="containerNode"\n\t\t\t></span\n\t\t></span\n\t></span\n\t><input ${!nameAttrSetting} type="${type}" value="${value}" class="dijitOffScreen"\n\t\ttabIndex="-1" role="presentation" data-dojo-attach-point="valueNode"\n/></span>\n',
-"dijit/MenuBar":function(){define(["dojo/_base/declare","dojo/_base/event","dojo/keys","./_MenuBase","dojo/text!./templates/MenuBar.html"],function(e,j,i,l,c){return e("dijit.MenuBar",l,{templateString:c,baseClass:"dijitMenuBar",_isMenuBar:!0,postCreate:function(){this.inherited(arguments);var c=this.isLeftToRight();this.connectKeyNavHandlers(c?[i.LEFT_ARROW]:[i.RIGHT_ARROW],c?[i.RIGHT_ARROW]:[i.LEFT_ARROW]);this._orient=["below"]},_moveToPopup:function(c){if(this.focusedChild&&this.focusedChild.popup&&
-!this.focusedChild.disabled)this.onItemClick(this.focusedChild,c)},focusChild:function(c){var e=this.focusedChild,e=e&&e.popup&&e.popup.isShowingNow;this.inherited(arguments);e&&c.popup&&!c.disabled&&this._openPopup(!0)},_onKeyPress:function(c){if(!c.ctrlKey&&!c.altKey)switch(c.charOrCode){case i.DOWN_ARROW:this._moveToPopup(c),j.stop(c)}},onItemClick:function(c,e){if(c.popup&&c.popup.isShowingNow&&("keypress"!==e.type||e.keyCode!==i.DOWN_ARROW))c.popup.onCancel();else this.inherited(arguments)}})})},
-"dijit/_MenuBase":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-class,dojo/_base/lang,dojo/mouse,dojo/on,dojo/window,./a11yclick,./popup,./registry,./_Widget,./_KeyNavContainer,./_TemplatedMixin".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n){return j("dijit._MenuBase",[p,n,m],{parentMenu:null,popupDelay:500,autoFocus:!1,postCreate:function(){var f=this,g=function(a){return c.contains(a,"dijitMenuItem")};this.own(b(this.containerNode,b.selector(g,h.enter),
-function(){f.onItemHover(d.byNode(this))}),b(this.containerNode,b.selector(g,h.leave),function(){f.onItemUnhover(d.byNode(this))}),b(this.containerNode,b.selector(g,a),function(a){f.onItemClick(d.byNode(this),a);a.stopPropagation();a.preventDefault()}));this.inherited(arguments)},onExecute:function(){},onCancel:function(){},_moveToPopup:function(a){if(this.focusedChild&&this.focusedChild.popup&&!this.focusedChild.disabled)this.onItemClick(this.focusedChild,a);else(a=this._getTopMenu())&&a._isMenuBar&&
+refresh:function(){this.cancel();this.onLoadDeferred=new l(k.hitch(this,"cancel"));this.onLoadDeferred.then(k.hitch(this,"onLoad"));this._load();return this.onLoadDeferred},_load:function(){this._setContent(this.onDownloadStart(),!0);var a=this,b={preventCache:this.preventCache||this.refreshOnShow,url:this.href,handleAs:"text"};k.isObject(this.ioArgs)&&k.mixin(b,this.ioArgs);var d=this._xhrDfd=(this.ioMethod||m.get)(b),c;d.then(function(b){c=b;try{return a._isDownloaded=!0,a._setContent(b,!1)}catch(d){a._onError("Content",
+d)}},function(b){d.canceled||a._onError("Download",b);delete a._xhrDfd;return b}).then(function(){a.onDownloadEnd();delete a._xhrDfd;return c});delete this._hrefChanged},_onLoadHandler:function(a){this._set("isLoaded",!0);try{this.onLoadDeferred.resolve(a)}catch(b){}},_onUnloadHandler:function(){this._set("isLoaded",!1);try{this.onUnload()}catch(a){}},destroyDescendants:function(a){this.isLoaded&&this._onUnloadHandler();var b=this._contentSetter;g.forEach(this.getChildren(),function(b){b.destroyRecursive?
+b.destroyRecursive(a):b.destroy&&b.destroy(a);b._destroyed=!0});b&&(g.forEach(b.parseResults,function(b){if(!b._destroyed)b.destroyRecursive?b.destroyRecursive(a):b.destroy&&b.destroy(a),b._destroyed=!0}),delete b.parseResults);a||i._emptyNode(this.containerNode);delete this._singleChild},_setContent:function(a,b){this.destroyDescendants();var d=this._contentSetter;if(!(d&&d instanceof i._ContentSetter))d=this._contentSetter=new i._ContentSetter({node:this.containerNode,_onError:k.hitch(this,this._onError),
+onContentError:k.hitch(this,function(a){a=this.onContentError(a);try{this.containerNode.innerHTML=a}catch(b){}})});var c=k.mixin({cleanContent:this.cleanContent,extractContent:this.extractContent,parseContent:!a.domNode&&this.parseOnLoad,parserScope:this.parserScope,startup:!1,dir:this.dir,lang:this.lang,textDir:this.textDir},this._contentSetterParams||{}),c=d.set(k.isObject(a)&&a.domNode?a.domNode:a,c),g=this;return o(c&&c.then?c:d.parseDeferred,function(){delete g._contentSetterParams;b||(g._started&&
+(g._startChildren(),g._scheduleLayout()),g._onLoadHandler(a))})},_onError:function(a,b,d){this.onLoadDeferred.reject(b);a=this["on"+a+"Error"].call(this,b);d||a&&this._setContent(a,!0)},onLoad:function(){},onUnload:function(){},onDownloadStart:function(){return this.loadingMessage},onContentError:function(){},onDownloadError:function(){return this.errorMessage},onDownloadEnd:function(){}})})},"dijit/layout/_ContentPaneResizeMixin":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom-class,dojo/dom-geometry,dojo/dom-style,dojo/_base/lang,dojo/query,dojo/sniff,../registry,../Viewport,./utils".split(","),
+function(f,k,h,j,e,c,i,b,g,a,l){return k("dijit.layout._ContentPaneResizeMixin",null,{doLayout:!0,isLayoutContainer:!0,startup:function(){if(!this._started){var b=this.getParent();this._childOfLayoutWidget=b&&b.isLayoutContainer;this._needLayout=!this._childOfLayoutWidget;this.inherited(arguments);this._isShown()&&this._onShow();this._childOfLayoutWidget||this.own(a.on("resize",c.hitch(this,"resize")))}},_checkIfSingleChild:function(){var a=[],b=!1;i("> *",this.containerNode).some(function(c){var e=
+g.byNode(c);e&&e.resize?a.push(e):c.offsetHeight&&(b=!0)});this._singleChild=1==a.length&&!b?a[0]:null;h.toggle(this.containerNode,this.baseClass+"SingleChild",!!this._singleChild)},resize:function(a,b){this._resizeCalled=!0;this._scheduleLayout(a,b)},_scheduleLayout:function(a,b){this._isShown()?this._layout(a,b):(this._needLayout=!0,this._changeSize=a,this._resultSize=b)},_layout:function(a,b){delete this._needLayout;!this._wasShown&&!1!==this.open&&this._onShow();a&&j.setMarginBox(this.domNode,
+a);var g=this.containerNode;if(g===this.domNode){var e=b||{};c.mixin(e,a||{});if(!("h"in e)||!("w"in e))e=c.mixin(j.getMarginBox(g),e);this._contentBox=l.marginBox2contentBox(g,e)}else this._contentBox=j.getContentBox(g);this._layoutChildren()},_layoutChildren:function(){this.doLayout&&this._checkIfSingleChild();if(this._singleChild&&this._singleChild.resize){var a=this._contentBox||j.getContentBox(this.containerNode);this._singleChild.resize({w:a.w,h:a.h})}else f.forEach(this.getChildren(),function(a){a.resize&&
+a.resize()})},_isShown:function(){if(this._childOfLayoutWidget)return this._resizeCalled&&"open"in this?this.open:this._resizeCalled;if("open"in this)return this.open;var a=this.domNode,b=this.domNode.parentNode;return"none"!=a.style.display&&"hidden"!=a.style.visibility&&!h.contains(a,"dijitHidden")&&b&&b.style&&"none"!=b.style.display},_onShow:function(){this._wasShown=!0;this._needLayout&&this._layout(this._changeSize,this._resultSize);this.inherited(arguments)}})})},"dojo/html":function(){define("./_base/kernel,./_base/lang,./_base/array,./_base/declare,./dom,./dom-construct,./parser".split(","),
+function(f,k,h,j,e,c,i){var b={};k.setObject("dojo.html",b);var g=0;b._secureForInnerHtml=function(a){return a.replace(/(?:\s*<!DOCTYPE\s[^>]+>|<title[^>]*>[\s\S]*?<\/title>)/ig,"")};b._emptyNode=c.empty;b._setNodeContent=function(a,b){c.empty(a);if(b)if("string"==typeof b&&(b=c.toDom(b,a.ownerDocument)),!b.nodeType&&k.isArrayLike(b))for(var d=b.length,g=0;g<b.length;g=d==b.length?g+1:0)c.place(b[g],a,"last");else c.place(b,a,"last");return a};b._ContentSetter=j("dojo.html._ContentSetter",null,{node:"",
+content:"",id:"",cleanContent:!1,extractContent:!1,parseContent:!1,parserScope:f._scopeName,startup:!0,constructor:function(a,b){k.mixin(this,a||{});b=this.node=e.byId(this.node||b);if(!this.id)this.id=["Setter",b?b.id||b.tagName:"",g++].join("_")},set:function(a,b){if(void 0!==a)this.content=a;b&&this._mixin(b);this.onBegin();this.setContent();var c=this.onEnd();return c&&c.then?c:this.node},setContent:function(){var a=this.node;if(!a)throw Error(this.declaredClass+": setContent given no node");
+try{a=b._setNodeContent(a,this.content)}catch(c){var d=this.onContentError(c);try{a.innerHTML=d}catch(g){}}this.node=a},empty:function(){this.parseDeferred&&(this.parseDeferred.isResolved()||this.parseDeferred.cancel(),delete this.parseDeferred);this.parseResults&&this.parseResults.length&&(h.forEach(this.parseResults,function(a){a.destroy&&a.destroy()}),delete this.parseResults);b._emptyNode(this.node)},onBegin:function(){var a=this.content;if(k.isString(a)&&(this.cleanContent&&(a=b._secureForInnerHtml(a)),
+this.extractContent)){var c=a.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);c&&(a=c[1])}this.empty();this.content=a;return this.node},onEnd:function(){this.parseContent&&this._parse();return this.node},tearDown:function(){delete this.parseResults;delete this.parseDeferred;delete this.node;delete this.content},onContentError:function(a){return"Error occurred setting content: "+a},onExecError:function(a){return"Error occurred executing scripts: "+a},_mixin:function(a){var b={},c;for(c in a)c in b||
+(this[c]=a[c])},_parse:function(){var a=this.node;try{var b={};h.forEach(["dir","lang","textDir"],function(a){this[a]&&(b[a]=this[a])},this);var c=this;this.parseDeferred=i.parse({rootNode:a,noStart:!this.startup,inherited:b,scope:this.parserScope}).then(function(a){return c.parseResults=a})}catch(g){this._onError("Content",g,"Error parsing in _ContentSetter#"+this.id)}},_onError:function(a,c,d){a=this["on"+a+"Error"].call(this,c);d||a&&b._setNodeContent(this.node,a,!0)}});b.set=function(a,c,d){void 0==
+c&&(c="");return d?(new b._ContentSetter(k.mixin(d,{content:c,node:a}))).set():b._setNodeContent(a,c,!0)};return b})},"dojo/parser":function(){define("require,./_base/kernel,./_base/lang,./_base/array,./_base/config,./_base/html,./_base/window,./_base/url,./_base/json,./aspect,./date/stamp,./Deferred,./has,./query,./on,./ready".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o){function r(a){var b=a._nameCaseMap,c=a.prototype;if(!b||b._extendCnt<v){var b=a._nameCaseMap={},d;for(d in c)"_"!==d.charAt(0)&&
+(b[d.toLowerCase()]=d);b._extendCnt=v}return b}function q(a){var b=a.join();if(!s[b]){for(var c=[],d=0,g=a.length;d<g;d++){var e=a[d];c[c.length]=s[e]=s[e]||h.getObject(e)||~e.indexOf("/")&&f(e)}a=c.shift();s[b]=c.length?a.createSubclass?a.createSubclass(c):a.extend.apply(a,c):a}return s[b]}var v=0;a.after(h,"extend",function(){v++},!0);var s={},t={_clearCache:function(){v++;s={}},_functionFromScript:function(a,b){var c="",d="",g=a.getAttribute(b+"args")||a.getAttribute("args"),e=a.getAttribute("with"),
+g=(g||"").split(/\s*,\s*/);e&&e.length&&j.forEach(e.split(/\s*,\s*/),function(a){c+="with("+a+"){";d+="}"});return new Function(g,c+a.innerHTML+d)},instantiate:function(a,b,c){var b=b||{},c=c||{},d=(c.scope||k._scopeName)+"Type",g="data-"+(c.scope||k._scopeName)+"-",e=g+"type",f=g+"mixins",l=[];j.forEach(a,function(a){var c=d in b?b[d]:a.getAttribute(e)||a.getAttribute(d);if(c){var g=a.getAttribute(f),c=g?[c].concat(g.split(/\s*,\s*/)):[c];l.push({node:a,types:c})}});return this._instantiate(l,b,
+c)},_instantiate:function(a,b,c){a=j.map(a,function(a){var d=a.ctor||q(a.types);if(!d)throw Error("Unable to resolve constructor for: '"+a.types.join()+"'");return this.construct(d,a.node,b,c,a.scripts,a.inherited)},this);!b._started&&!c.noStart&&j.forEach(a,function(a){"function"===typeof a.startup&&!a._started&&a.startup()});return a},construct:function(c,d,e,f,i,o){var u;var q=c&&c.prototype,f=f||{},t={};f.defaults&&h.mixin(t,f.defaults);o&&h.mixin(t,o);var v;p("dom-attributes-explicit")?v=d.attributes:
+p("dom-attributes-specified-flag")?v=j.filter(d.attributes,function(a){return a.specified}):(o=(/^input$|^img$/i.test(d.nodeName)?d:d.cloneNode(!1)).outerHTML.replace(/=[^\s"']+|="[^"]*"|='[^']*'/g,"").replace(/^\s*<[a-zA-Z0-9]*\s*/,"").replace(/\s*>.*$/,""),v=j.map(o.split(/\s+/),function(a){var b=a.toLowerCase();return{name:a,value:"LI"==d.nodeName&&"value"==a||"enctype"==b?d.getAttribute(b):d.getAttributeNode(b).value}}));var s=f.scope||k._scopeName,o="data-"+s+"-",A={};"dojo"!==s&&(A[o+"props"]=
+"data-dojo-props",A[o+"type"]="data-dojo-type",A[o+"mixins"]="data-dojo-mixins",A[s+"type"]="dojoType",A[o+"id"]="data-dojo-id");for(var s=0,w,x=[],K,H;w=v[s++];){var C=w.name,F=C.toLowerCase();w=w.value;switch(A[F]||F){case "data-dojo-type":case "dojotype":case "data-dojo-mixins":break;case "data-dojo-props":H=w;break;case "data-dojo-id":case "jsid":K=w;break;case "data-dojo-attach-point":case "dojoattachpoint":t.dojoAttachPoint=w;break;case "data-dojo-attach-event":case "dojoattachevent":t.dojoAttachEvent=
+w;break;case "class":t["class"]=d.className;break;case "style":t.style=d.style&&d.style.cssText;break;default:if(C in q||(C=r(c)[F]||C),C in q)switch(typeof q[C]){case "string":t[C]=w;break;case "number":t[C]=w.length?Number(w):NaN;break;case "boolean":t[C]="false"!=w.toLowerCase();break;case "function":t[C]=""===w||-1!=w.search(/[^\w\.]+/i)?new Function(w):h.getObject(w,!1)||new Function(w);x.push(C);break;default:F=q[C],t[C]=F&&"length"in F?w?w.split(/\s*,\s*/):[]:F instanceof Date?""==w?new Date(""):
+"now"==w?new Date:l.fromISOString(w):F instanceof b?k.baseUrl+w:g.fromJson(w)}else t[C]=w}}for(s=0;s<x.length;s++)v=x[s].toLowerCase(),d.removeAttribute(v),d[v]=null;if(H)try{H=g.fromJson.call(f.propsThis,"{"+H+"}"),h.mixin(t,H)}catch(O){throw Error(O.toString()+" in data-dojo-props='"+H+"'");}h.mixin(t,e);i||(i=c&&(c._noScript||q._noScript)?[]:m("> script[type^='dojo/']",d));e=[];f=[];H=[];x=[];if(i)for(s=0;s<i.length;s++){var D=i[s];d.removeChild(D);v=D.getAttribute(o+"event")||D.getAttribute("event");
+A=D.getAttribute(o+"prop");C=D.getAttribute(o+"method");F=D.getAttribute(o+"advice");w=D.getAttribute("type");D=this._functionFromScript(D,o);v?"dojo/connect"==w?e.push({method:v,func:D}):"dojo/on"==w?x.push({event:v,func:D}):t[v]=D:"dojo/aspect"==w?e.push({method:C,advice:F,func:D}):"dojo/watch"==w?H.push({prop:A,func:D}):f.push(D)}u=(i=c.markupFactory||q.markupFactory)?i(t,d,c):new c(t,d),c=u;K&&h.setObject(K,c);for(s=0;s<e.length;s++)a[e[s].advice||"after"](c,e[s].method,h.hitch(c,e[s].func),!0);
+for(s=0;s<f.length;s++)f[s].call(c);for(s=0;s<H.length;s++)c.watch(H[s].prop,H[s].func);for(s=0;s<x.length;s++)n(c,x[s].event,x[s].func);return c},scan:function(a,b){function c(a){if(!a.inherited){a.inherited={};var b=a.node,d=c(a.parent),b={dir:b.getAttribute("dir")||d.dir,lang:b.getAttribute("lang")||d.lang,textDir:b.getAttribute(o)||d.textDir},g;for(g in b)b[g]&&(a.inherited[g]=b[g])}return a.inherited}var g=[],e=[],l={},i=(b.scope||k._scopeName)+"Type",h="data-"+(b.scope||k._scopeName)+"-",m=
+h+"type",o=h+"textdir",h=h+"mixins",n=a.firstChild,t=b.inherited;if(!t){var r=function(a,b){return a.getAttribute&&a.getAttribute(b)||a.parentNode&&r(a.parentNode,b)},t={dir:r(a,"dir"),lang:r(a,"lang"),textDir:r(a,o)},v;for(v in t)t[v]||delete t[v]}for(var t={inherited:t},s,C;;)if(n)if(1!=n.nodeType)n=n.nextSibling;else if(s&&"script"==n.nodeName.toLowerCase())(F=n.getAttribute("type"))&&/^dojo\/\w/i.test(F)&&s.push(n),n=n.nextSibling;else if(C)n=n.nextSibling;else{var F=n.getAttribute(m)||n.getAttribute(i);
+v=n.firstChild;if(!F&&(!v||3==v.nodeType&&!v.nextSibling))n=n.nextSibling;else{C=null;if(F){var O=n.getAttribute(h);s=O?[F].concat(O.split(/\s*,\s*/)):[F];try{C=q(s)}catch(D){}C||j.forEach(s,function(a){~a.indexOf("/")&&!l[a]&&(l[a]=!0,e[e.length]=a)});O=C&&!C.prototype._noScript?[]:null;t={types:s,ctor:C,parent:t,node:n,scripts:O};t.inherited=c(t);g.push(t)}else t={node:n,scripts:s,parent:t};n=v;s=O;C=C&&C.prototype.stopParser&&!b.template}}else{if(!t||!t.node)break;n=t.node.nextSibling;C=!1;t=t.parent;
+s=t.scripts}var L=new d;e.length?(p("dojo-debug-messages"),f(e,function(){L.resolve(j.filter(g,function(a){if(!a.ctor)try{a.ctor=q(a.types)}catch(c){}for(var d=a.parent;d&&!d.types;)d=d.parent;var g=a.ctor&&a.ctor.prototype;a.instantiateChildren=!(g&&g.stopParser&&!b.template);a.instantiate=!d||d.instantiate&&d.instantiateChildren;return a.instantiate}))})):L.resolve(g);return L.promise},_require:function(a){var a=g.fromJson("{"+a.innerHTML+"}"),b=[],c=[],e=new d,l;for(l in a)b.push(l),c.push(a[l]);
+f(c,function(){for(var a=0;a<b.length;a++)h.setObject(b[a],arguments[a]);e.resolve(arguments)});return e.promise},_scanAmd:function(a){var b=new d,c=b.promise;b.resolve(!0);var g=this;m("script[type='dojo/require']",a).forEach(function(a){c=c.then(function(){return g._require(a)});a.parentNode.removeChild(a)});return c},parse:function(a,b){var d;!b&&a&&a.rootNode?(b=a,d=b.rootNode):a&&h.isObject(a)&&!("nodeType"in a)?b=a:d=a;d=d?c.byId(d):i.body();var b=b||{},g=b.template?{template:!0}:{},e=[],f=
+this,l=this._scanAmd(d,b).then(function(){return f.scan(d,b)}).then(function(a){return e=e.concat(f._instantiate(a,g,b))}).otherwise(function(a){throw a;});h.mixin(e,l);return e}};k.parser=t;e.parseOnLoad&&o(100,t,"parse");return t})},"dojo/_base/url":function(){define(["./kernel"],function(f){var k=/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/,h=/^((([^\[:]+):)?([^@]+)@)?(\[([^\]]+)\]|([^\[:]*))(:([0-9]+))?$/,j=function(){for(var e=arguments,c=[e[0]],f=1;f<e.length;f++)if(e[f]){var b=
+new j(e[f]+""),c=new j(c[0]+"");if(""==b.path&&!b.scheme&&!b.authority&&!b.query){if(null!=b.fragment)c.fragment=b.fragment;b=c}else if(!b.scheme&&(b.scheme=c.scheme,!b.authority&&(b.authority=c.authority,"/"!=b.path.charAt(0)))){for(var c=(c.path.substring(0,c.path.lastIndexOf("/")+1)+b.path).split("/"),g=0;g<c.length;g++)"."==c[g]?g==c.length-1?c[g]="":(c.splice(g,1),g--):0<g&&!(1==g&&""==c[0])&&".."==c[g]&&".."!=c[g-1]&&(g==c.length-1?(c.splice(g,1),c[g-1]=""):(c.splice(g-1,2),g-=2));b.path=c.join("/")}c=
+[];b.scheme&&c.push(b.scheme,":");b.authority&&c.push("//",b.authority);c.push(b.path);b.query&&c.push("?",b.query);b.fragment&&c.push("#",b.fragment)}this.uri=c.join("");e=this.uri.match(k);this.scheme=e[2]||(e[1]?"":null);this.authority=e[4]||(e[3]?"":null);this.path=e[5];this.query=e[7]||(e[6]?"":null);this.fragment=e[9]||(e[8]?"":null);if(null!=this.authority)e=this.authority.match(h),this.user=e[3]||null,this.password=e[4]||null,this.host=e[6]||e[7],this.port=e[9]||null};j.prototype.toString=
+function(){return this.uri};return f._Url=j})},"dojo/date/stamp":function(){define(["../_base/lang","../_base/array"],function(f,k){var h={};f.setObject("dojo.date.stamp",h);h.fromISOString=function(f,e){if(!h._isoRegExp)h._isoRegExp=/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(.\d+)?)?((?:[+-](\d{2}):(\d{2}))|Z)?)?$/;var c=h._isoRegExp.exec(f),i=null;if(c){c.shift();c[1]&&c[1]--;c[6]&&(c[6]*=1E3);e&&(e=new Date(e),k.forEach(k.map("FullYear,Month,Date,Hours,Minutes,Seconds,Milliseconds".split(","),
+function(a){return e["get"+a]()}),function(a,b){c[b]=c[b]||a}));i=new Date(c[0]||1970,c[1]||0,c[2]||1,c[3]||0,c[4]||0,c[5]||0,c[6]||0);100>c[0]&&i.setFullYear(c[0]||1970);var b=0,g=c[7]&&c[7].charAt(0);"Z"!=g&&(b=60*(c[8]||0)+(Number(c[9])||0),"-"!=g&&(b*=-1));g&&(b-=i.getTimezoneOffset());b&&i.setTime(i.getTime()+6E4*b)}return i};h.toISOString=function(f,e){var c=function(a){return 10>a?"0"+a:a},e=e||{},i=[],b=e.zulu?"getUTC":"get",g="";"time"!=e.selector&&(g=f[b+"FullYear"](),g=["0000".substr((g+
+"").length)+g,c(f[b+"Month"]()+1),c(f[b+"Date"]())].join("-"));i.push(g);if("date"!=e.selector){g=[c(f[b+"Hours"]()),c(f[b+"Minutes"]()),c(f[b+"Seconds"]())].join(":");b=f[b+"Milliseconds"]();e.milliseconds&&(g+="."+(100>b?"0":"")+c(b));if(e.zulu)g+="Z";else if("time"!=e.selector)var b=f.getTimezoneOffset(),a=Math.abs(b),g=g+((0<b?"-":"+")+c(Math.floor(a/60))+":"+c(a%60));i.push(g)}return i.join("T")};return h})},"dojox/layout/ExpandoPane":function(){define("dojo/_base/kernel,dojo/_base/lang,dojo/_base/declare,dojo/_base/array,dojo/_base/connect,dojo/_base/event,dojo/_base/fx,dojo/dom-style,dojo/dom-class,dojo/dom-geometry,dojo/text!./resources/ExpandoPane.html,dijit/layout/ContentPane,dijit/_TemplatedMixin,dijit/_Contained,dijit/_Container".split(","),
+function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n){f.experimental("dojox.layout.ExpandoPane");return h("dojox.layout.ExpandoPane",[d,p,m,n],{attributeMap:k.delegate(d.prototype.attributeMap,{title:{node:"titleNode",type:"innerHTML"}}),templateString:l,easeOut:"dojo._DefaultEasing",easeIn:"dojo._DefaultEasing",duration:420,startExpanded:!0,previewOpacity:0.75,previewOnDblClick:!1,tabIndex:"0",_setTabIndexAttr:"iconNode",baseClass:"dijitExpandoPane",postCreate:function(){this.inherited(arguments);this._animConnects=
+[];this._isHorizontal=!0;if(k.isString(this.easeOut))this.easeOut=k.getObject(this.easeOut);if(k.isString(this.easeIn))this.easeIn=k.getObject(this.easeIn);var a="",c=!this.isLeftToRight();if(this.region){switch(this.region){case "trailing":case "right":a=c?"Left":"Right";this._needsPosition="left";break;case "leading":case "left":a=c?"Right":"Left";break;case "top":a="Top";break;case "bottom":this._needsPosition="top",a="Bottom"}g.add(this.domNode,"dojoxExpando"+a);g.add(this.iconNode,"dojoxExpandoIcon"+
+a);this._isHorizontal=/top|bottom/.test(this.region)}b.set(this.domNode,{overflow:"hidden",padding:0});this.connect(this.domNode,"ondblclick",this.previewOnDblClick?"preview":"toggle");this.iconNode.setAttribute("aria-controls",this.id);this.previewOnDblClick&&this.connect(this.getParent(),"_layoutChildren",k.hitch(this,function(){this._isonlypreview=!1}))},_startupSizes:function(){this._container=this.getParent();this._closedSize=this._titleHeight=a.getMarginBox(this.titleWrapper).h;if(this.splitter){var b=
+this.id;j.forEach(dijit.registry.toArray(),function(a){a&&a.child&&a.child.id==b&&this.connect(a,"_stopDrag","_afterResize")},this)}this._currentSize=a.getContentBox(this.domNode);this._showSize=this._currentSize[this._isHorizontal?"h":"w"];this._setupAnims();this.startExpanded?this._showing=!0:(this._showing=!1,this._hideWrapper(),this._hideAnim.gotoPercent(99,!0));this.domNode.setAttribute("aria-expanded",this._showing);this._hasSizes=!0},_afterResize:function(){var b=this._currentSize;this._currentSize=
+a.getMarginBox(this.domNode);var c=this._currentSize[this._isHorizontal?"h":"w"];if(c>this._titleHeight){if(!this._showing)this._showing=!this._showing,this._showEnd();this._showSize=c;this._setupAnims()}else this._showSize=b[this._isHorizontal?"h":"w"],this._showing=!1,this._hideWrapper(),this._hideAnim.gotoPercent(89,!0)},_setupAnims:function(){j.forEach(this._animConnects,e.disconnect);var a={node:this.domNode,duration:this.duration},b={},c=this._showSize,d=this._closedSize,g={},f=this._isHorizontal?
+"height":"width",l=this._needsPosition;b[f]={end:c};g[f]={end:d};l&&(b[l]={end:function(a){return parseInt(a.style[l],10)-c+d}},g[l]={end:function(a){return parseInt(a.style[l],10)+c-d}});this._showAnim=i.animateProperty(k.mixin(a,{easing:this.easeIn,properties:b}));this._hideAnim=i.animateProperty(k.mixin(a,{easing:this.easeOut,properties:g}));this._animConnects=[e.connect(this._showAnim,"onEnd",this,"_showEnd"),e.connect(this._hideAnim,"onEnd",this,"_hideEnd")]},preview:function(){if(!this._showing)this._isonlypreview=
+!this._isonlypreview;this.toggle()},toggle:function(){this._showing?(this._hideWrapper(),this._showAnim&&this._showAnim.stop(),this._hideAnim.play()):(this._hideAnim&&this._hideAnim.stop(),this._showAnim.play());this._showing=!this._showing;this.domNode.setAttribute("aria-expanded",this._showing)},_hideWrapper:function(){g.add(this.domNode,"dojoxExpandoClosed");b.set(this.cwrapper,{visibility:"hidden",opacity:"0",overflow:"hidden"})},_showEnd:function(){b.set(this.cwrapper,{opacity:0,visibility:"visible"});
+i.anim(this.cwrapper,{opacity:this._isonlypreview?this.previewOpacity:1},227);g.remove(this.domNode,"dojoxExpandoClosed");this._isonlypreview?(this._previewShowing=!0,this.resize()):setTimeout(k.hitch(this._container,"layout"),15)},_hideEnd:function(){this._isonlypreview?this._previewShowing=!1:setTimeout(k.hitch(this._container,"layout"),25);this._isonlypreview=!1},resize:function(c){this._hasSizes||this._startupSizes(c);var d=a.getMarginBox(this.domNode);this._contentBox={w:c&&"w"in c?c.w:d.w,h:(c&&
+"h"in c?c.h:d.h)-this._titleHeight};b.set(this.containerNode,"height",this._contentBox.h+"px");c&&a.setMarginBox(this.domNode,c);this._layoutChildren();this._setupAnims()},_trap:function(a){c.stop(a)}})})},"url:dojox/layout/resources/ExpandoPane.html":'<div class="dojoxExpandoPane">\n\t<div dojoAttachPoint="titleWrapper" class="dojoxExpandoTitle">\n\t\t<div class="dojoxExpandoIcon" dojoAttachPoint="iconNode" dojoAttachEvent="ondijitclick:toggle"><span class="a11yNode">X</span></div>\n\t\t<span class="dojoxExpandoTitleNode" dojoAttachPoint="titleNode">${title}</span>\n\t</div>\n\t<div class="dojoxExpandoWrapper" dojoAttachPoint="cwrapper" dojoAttachEvent="ondblclick:_trap">\n\t\t<div class="dojoxExpandoContent" dojoAttachPoint="containerNode"></div>\n\t</div>\n</div>\n',
+"dijit/layout/LayoutContainer":function(){define("dojo/_base/kernel,dojo/_base/lang,dojo/_base/declare,../_WidgetBase,./_LayoutWidget,./utils".split(","),function(f,k,h,j,e,c){h=h("dijit.layout.LayoutContainer",e,{baseClass:"dijitLayoutContainer",constructor:function(){f.deprecated("dijit.layout.LayoutContainer is deprecated","use BorderContainer instead",2)},layout:function(){c.layoutChildren(this.domNode,this._contentBox,this.getChildren())},addChild:function(e,b){this.inherited(arguments);this._started&&
+c.layoutChildren(this.domNode,this._contentBox,this.getChildren())},removeChild:function(e){this.inherited(arguments);this._started&&c.layoutChildren(this.domNode,this._contentBox,this.getChildren())}});h.ChildWidgetProperties={layoutAlign:"none"};k.extend(j,h.ChildWidgetProperties);return h})},"dijit/form/Form":function(){define("dojo/_base/declare,dojo/dom-attr,dojo/_base/event,dojo/_base/kernel,dojo/sniff,../_Widget,../_TemplatedMixin,./_FormMixin,../layout/_ContentPaneResizeMixin".split(","),
+function(f,k,h,j,e,c,i,b,g){return f("dijit.form.Form",[c,i,b,g],{name:"",action:"",method:"",encType:"","accept-charset":"",accept:"",target:"",templateString:"<form data-dojo-attach-point='containerNode' data-dojo-attach-event='onreset:_onReset,onsubmit:_onSubmit' ${!nameAttrSetting}></form>",postMixInProperties:function(){this.nameAttrSetting=this.name?"name='"+this.name+"'":"";this.inherited(arguments)},execute:function(){},onExecute:function(){},_setEncTypeAttr:function(a){this.encType=a;k.set(this.domNode,
+"encType",a);if(e("ie"))this.domNode.encoding=a},reset:function(a){var b={returnValue:!0,preventDefault:function(){this.returnValue=!1},stopPropagation:function(){},currentTarget:a?a.target:this.domNode,target:a?a.target:this.domNode};!1!==this.onReset(b)&&b.returnValue&&this.inherited(arguments,[])},onReset:function(){return!0},_onReset:function(a){this.reset(a);h.stop(a);return!1},_onSubmit:function(a){var b=this.constructor.prototype;if(this.execute!=b.execute||this.onExecute!=b.onExecute)j.deprecated("dijit.form.Form:execute()/onExecute() are deprecated. Use onSubmit() instead.",
+"","2.0"),this.onExecute(),this.execute(this.getValues());!1===this.onSubmit(a)&&h.stop(a)},onSubmit:function(){return this.isValid()},submit:function(){!1!==this.onSubmit()&&this.containerNode.submit()}})})},"dijit/form/_FormMixin":function(){define("dojo/_base/array,dojo/_base/declare,dojo/_base/kernel,dojo/_base/lang,dojo/on,dojo/window".split(","),function(f,k,h,j,e,c){return k("dijit.form._FormMixin",null,{state:"",_getDescendantFormWidgets:function(c){var b=[];f.forEach(c||this.getChildren(),
+function(c){"value"in c?b.push(c):b=b.concat(this._getDescendantFormWidgets(c.getChildren()))},this);return b},reset:function(){f.forEach(this._getDescendantFormWidgets(),function(c){c.reset&&c.reset()})},validate:function(){var e=!1;return f.every(f.map(this._getDescendantFormWidgets(),function(b){b._hasBeenBlurred=!0;var g=b.disabled||!b.validate||b.validate();!g&&!e&&(c.scrollIntoView(b.containerNode||b.domNode),b.focus(),e=!0);return g}),function(b){return b})},setValues:function(c){h.deprecated(this.declaredClass+
+"::setValues() is deprecated. Use set('value', val) instead.","","2.0");return this.set("value",c)},_setValueAttr:function(c){var b={};f.forEach(this._getDescendantFormWidgets(),function(a){a.name&&(b[a.name]||(b[a.name]=[])).push(a)});for(var g in b)if(b.hasOwnProperty(g)){var a=b[g],e=j.getObject(g,!1,c);void 0!==e&&(j.isArray(e)||(e=[e]),"boolean"==typeof a[0].checked?f.forEach(a,function(a){a.set("value",-1!=f.indexOf(e,a.value))}):a[0].multiple?a[0].set("value",e):f.forEach(a,function(a,b){a.set("value",
+e[b])}))}},getValues:function(){h.deprecated(this.declaredClass+"::getValues() is deprecated. Use get('value') instead.","","2.0");return this.get("value")},_getValueAttr:function(){var c={};f.forEach(this._getDescendantFormWidgets(),function(b){var g=b.name;if(g&&!b.disabled){var a=b.get("value");"boolean"==typeof b.checked?/Radio/.test(b.declaredClass)?!1!==a?j.setObject(g,a,c):(a=j.getObject(g,!1,c),void 0===a&&j.setObject(g,null,c)):(b=j.getObject(g,!1,c),b||(b=[],j.setObject(g,b,c)),!1!==a&&
+b.push(a)):(b=j.getObject(g,!1,c),"undefined"!=typeof b?j.isArray(b)?b.push(a):j.setObject(g,[b,a],c):j.setObject(g,a,c))}});return c},isValid:function(){return""==this.state},onValidStateChange:function(){},_getState:function(){var c=f.map(this._descendants,function(b){return b.get("state")||""});return 0<=f.indexOf(c,"Error")?"Error":0<=f.indexOf(c,"Incomplete")?"Incomplete":""},disconnectChildren:function(){},connectChildren:function(c){this._descendants=this._getDescendantFormWidgets();f.forEach(this._descendants,
+function(b){b._started||b.startup()});c||this._onChildChange()},_onChildChange:function(c){(!c||"state"==c||"disabled"==c)&&this._set("state",this._getState());if(!c||"value"==c||"disabled"==c||"checked"==c)this._onChangeDelayTimer&&this._onChangeDelayTimer.remove(),this._onChangeDelayTimer=this.defer(function(){delete this._onChangeDelayTimer;this._set("value",this.get("value"))},10)},startup:function(){this.inherited(arguments);this._descendants=this._getDescendantFormWidgets();this.value=this.get("value");
+this.state=this._getState();var c=this;this.own(e(this.containerNode,"attrmodified-state, attrmodified-disabled, attrmodified-value, attrmodified-checked",function(b){b.target!=c.domNode&&c._onChildChange(b.type.replace("attrmodified-",""))}));this.watch("state",function(b,c,a){this.onValidStateChange(""==a)})},destroy:function(){this.inherited(arguments)}})})},"dijit/form/TextBox":function(){define("dojo/_base/declare,dojo/dom-construct,dojo/dom-style,dojo/_base/kernel,dojo/_base/lang,dojo/sniff,./_FormValueWidget,./_TextBoxMixin,dojo/text!./templates/TextBox.html,../main".split(","),
+function(f,k,h,j,e,c,i,b,g,a){f=f("dijit.form.TextBox",[i,b],{templateString:g,_singleNodeTemplate:'<input class="dijit dijitReset dijitLeft dijitInputField" data-dojo-attach-point="textbox,focusNode" autocomplete="off" type="${type}" ${!nameAttrSetting} />',_buttonInputDisabled:c("ie")?"disabled":"",baseClass:"dijitTextBox",postMixInProperties:function(){var a=this.type.toLowerCase();if(this.templateString&&"input"==this.templateString.toLowerCase()||("hidden"==a||"file"==a)&&this.templateString==
+this.constructor.prototype.templateString)this.templateString=this._singleNodeTemplate;this.inherited(arguments)},postCreate:function(){this.inherited(arguments);9>c("ie")&&this.defer(function(){try{var a=h.getComputedStyle(this.domNode);if(a){var b=a.fontFamily;if(b){var c=this.domNode.getElementsByTagName("INPUT");if(c)for(a=0;a<c.length;a++)c[a].style.fontFamily=b}}}catch(g){}})},_onInput:function(a){this.inherited(arguments);this.intermediateChanges&&this.defer(function(){this._handleOnChange(this.get("value"),
+!1)})},_setPlaceHolderAttr:function(a){this._set("placeHolder",a);if(!this._phspan)this._attachPoints.push("_phspan"),this._phspan=k.create("span",{onmousedown:function(a){a.preventDefault()},className:"dijitPlaceHolder dijitInputField"},this.textbox,"after");this._phspan.innerHTML="";this._phspan.appendChild(this._phspan.ownerDocument.createTextNode(a));this._updatePlaceHolder()},_updatePlaceHolder:function(){if(this._phspan)this._phspan.style.display=this.placeHolder&&!this.focused&&!this.textbox.value?
+"":"none"},_setValueAttr:function(a,b,c){this.inherited(arguments);this._updatePlaceHolder()},getDisplayedValue:function(){j.deprecated(this.declaredClass+"::getDisplayedValue() is deprecated. Use get('displayedValue') instead.","","2.0");return this.get("displayedValue")},setDisplayedValue:function(a){j.deprecated(this.declaredClass+"::setDisplayedValue() is deprecated. Use set('displayedValue', ...) instead.","","2.0");this.set("displayedValue",a)},_onBlur:function(a){if(!this.disabled&&(this.inherited(arguments),
+this._updatePlaceHolder(),c("mozilla")&&this.selectOnClick))this.textbox.selectionStart=this.textbox.selectionEnd=void 0},_onFocus:function(a){!this.disabled&&!this.readOnly&&(this.inherited(arguments),this._updatePlaceHolder())}});if(c("ie"))f.prototype._isTextSelected=function(){var a=this.ownerDocument.selection.createRange();return a.parentElement()==this.textbox&&0<a.text.length},a._setSelectionRange=b._setSelectionRange=function(a,b,c){a.createTextRange&&(a=a.createTextRange(),a.collapse(!0),
+a.moveStart("character",-99999),a.moveStart("character",b),a.moveEnd("character",c-b),a.select())};return f})},"dijit/form/_FormValueWidget":function(){define(["dojo/_base/declare","dojo/sniff","./_FormWidget","./_FormValueMixin"],function(f,k,h,j){return f("dijit.form._FormValueWidget",[h,j],{_layoutHackIE7:function(){if(7==k("ie"))for(var e=this.domNode,c=e.parentNode,f=e.firstChild||e,b=f.style.filter,g=this;c&&0==c.clientHeight;)(function(){var a=g.connect(c,"onscroll",function(){g.disconnect(a);
+f.style.filter=(new Date).getMilliseconds();g.defer(function(){f.style.filter=b})})})(),c=c.parentNode}})})},"dijit/form/_FormWidget":function(){define("dojo/_base/declare,dojo/has,dojo/_base/kernel,dojo/ready,../_Widget,../_CssStateMixin,../_TemplatedMixin,./_FormWidgetMixin".split(","),function(f,k,h,j,e,c,i,b){k("dijit-legacy-requires")&&j(0,function(){require(["dijit/form/_FormValueWidget"])});return f("dijit.form._FormWidget",[e,i,c,b],{setDisabled:function(b){h.deprecated("setDisabled("+b+") is deprecated. Use set('disabled',"+
+b+") instead.","","2.0");this.set("disabled",b)},setValue:function(b){h.deprecated("dijit.form._FormWidget:setValue("+b+") is deprecated. Use set('value',"+b+") instead.","","2.0");this.set("value",b)},getValue:function(){h.deprecated(this.declaredClass+"::getValue() is deprecated. Use get('value') instead.","","2.0");return this.get("value")},postMixInProperties:function(){this.nameAttrSetting=this.name?'name="'+this.name.replace(/"/g,"&quot;")+'"':"";this.inherited(arguments)},_setTypeAttr:null})})},
+"dijit/_CssStateMixin":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom,dojo/dom-class,dojo/has,dojo/_base/lang,dojo/on,dojo/ready,dojo/_base/window,./registry".split(","),function(f,k,h,j,e,c,i,b,g,a){k=k("dijit._CssStateMixin",[],{cssStateNodes:{},hovering:!1,active:!1,_applyAttributes:function(){this.inherited(arguments);f.forEach("disabled,readOnly,checked,selected,focused,state,hovering,active,_opened".split(","),function(a){this.watch(a,c.hitch(this,"_setStateClass"))},this);
+for(var a in this.cssStateNodes)this._trackMouseState(this[a],this.cssStateNodes[a]);this._trackMouseState(this.domNode,this.baseClass);this._setStateClass()},_cssMouseEvent:function(a){if(!this.disabled)switch(a.type){case "mouseover":this._set("hovering",!0);this._set("active",this._mouseDown);break;case "mouseout":this._set("hovering",!1);this._set("active",!1);break;case "mousedown":case "touchstart":this._set("active",!0);break;case "mouseup":case "touchend":this._set("active",!1)}},_setStateClass:function(){function a(c){b=
+b.concat(f.map(b,function(a){return a+c}),"dijit"+c)}var b=this.baseClass.split(" ");this.isLeftToRight()||a("Rtl");var c="mixed"==this.checked?"Mixed":this.checked?"Checked":"";this.checked&&a(c);this.state&&a(this.state);this.selected&&a("Selected");this._opened&&a("Opened");this.disabled?a("Disabled"):this.readOnly?a("ReadOnly"):this.active?a("Active"):this.hovering&&a("Hover");this.focused&&a("Focused");var c=this.stateNode||this.domNode,g={};f.forEach(c.className.split(" "),function(a){g[a]=
+!0});"_stateClasses"in this&&f.forEach(this._stateClasses,function(a){delete g[a]});f.forEach(b,function(a){g[a]=!0});var e=[],i;for(i in g)e.push(i);c.className=e.join(" ");this._stateClasses=b},_subnodeCssMouseEvent:function(a,b,c){function g(c){j.toggle(a,b+"Active",c)}if(!this.disabled&&!this.readOnly)switch(c.type){case "mouseover":j.toggle(a,b+"Hover",!0);break;case "mouseout":j.toggle(a,b+"Hover",!1);g(!1);break;case "mousedown":case "touchstart":g(!0);break;case "mouseup":case "touchend":g(!1);
+break;case "focus":case "focusin":j.toggle(a,b+"Focused",!0);break;case "blur":case "focusout":j.toggle(a,b+"Focused",!1)}},_trackMouseState:function(a,b){a._cssState=b}});b(function(){function b(c){if(!h.isDescendant(c.relatedTarget,c.target))for(var d=c.target;d&&d!=c.relatedTarget;d=d.parentNode)if(d._cssState){var g=a.getEnclosingWidget(d);g&&(d==g.domNode?g._cssMouseEvent(c):g._subnodeCssMouseEvent(d,d._cssState,c))}}function c(a){a.target=a.srcElement;b(a)}var j=g.body(),m=(e("touch")?[]:["mouseover",
+"mouseout"]).concat(["mousedown","touchstart","mouseup","touchend"]);f.forEach(m,function(a){j.addEventListener?j.addEventListener(a,b,!0):j.attachEvent("on"+a,c)});i(j,"focusin, focusout",function(b){var c=b.target;c._cssState&&!c.getAttribute("widgetId")&&a.getEnclosingWidget(c)._subnodeCssMouseEvent(c,c._cssState,b)})});return k})},"dijit/form/_FormWidgetMixin":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom-attr,dojo/dom-style,dojo/_base/lang,dojo/mouse,dojo/sniff,dojo/window,../a11y".split(","),
+function(f,k,h,j,e,c,i,b,g){return k("dijit.form._FormWidgetMixin",null,{name:"",alt:"",value:"",type:"text",tabIndex:"0",_setTabIndexAttr:"focusNode",disabled:!1,intermediateChanges:!1,scrollOnFocus:!0,_setIdAttr:"focusNode",_setDisabledAttr:function(a){this._set("disabled",a);h.set(this.focusNode,"disabled",a);this.valueNode&&h.set(this.valueNode,"disabled",a);this.focusNode.setAttribute("aria-disabled",a?"true":"false");a?(this._set("hovering",!1),this._set("active",!1),a="tabIndex"in this.attributeMap?
+this.attributeMap.tabIndex:"_setTabIndexAttr"in this?this._setTabIndexAttr:"focusNode",f.forEach(e.isArray(a)?a:[a],function(a){a=this[a];i("webkit")||g.hasDefaultTabStop(a)?a.setAttribute("tabIndex","-1"):a.removeAttribute("tabIndex")},this)):""!=this.tabIndex&&this.set("tabIndex",this.tabIndex)},_onFocus:function(a){if("mouse"==a&&this.isFocusable())var c=this.connect(this.focusNode,"onfocus",function(){this.disconnect(d);this.disconnect(c)}),d=this.connect(this.ownerDocumentBody,"onmouseup",function(){this.disconnect(d);
+this.disconnect(c);this.focused&&this.focus()});this.scrollOnFocus&&this.defer(function(){b.scrollIntoView(this.domNode)});this.inherited(arguments)},isFocusable:function(){return!this.disabled&&this.focusNode&&"none"!=j.get(this.domNode,"display")},focus:function(){if(!this.disabled&&this.focusNode.focus)try{this.focusNode.focus()}catch(a){}},compare:function(a,b){return"number"==typeof a&&"number"==typeof b?isNaN(a)&&isNaN(b)?0:a-b:a>b?1:a<b?-1:0},onChange:function(){},_onChangeActive:!1,_handleOnChange:function(a,
+b){if(void 0==this._lastValueReported&&(null===b||!this._onChangeActive))this._resetValue=this._lastValueReported=a;this._pendingOnChange=this._pendingOnChange||typeof a!=typeof this._lastValueReported||0!=this.compare(a,this._lastValueReported);if((this.intermediateChanges||b||void 0===b)&&this._pendingOnChange)if(this._lastValueReported=a,this._pendingOnChange=!1,this._onChangeActive)this._onChangeHandle&&this._onChangeHandle.remove(),this._onChangeHandle=this.defer(function(){this._onChangeHandle=
+null;this.onChange(a)})},create:function(){this.inherited(arguments);this._onChangeActive=!0},destroy:function(){this._onChangeHandle&&(this._onChangeHandle.remove(),this.onChange(this._lastValueReported));this.inherited(arguments)}})})},"dijit/form/_FormValueMixin":function(){define(["dojo/_base/declare","dojo/dom-attr","dojo/keys","dojo/sniff","./_FormWidgetMixin"],function(f,k,h,j,e){return f("dijit.form._FormValueMixin",e,{readOnly:!1,_setReadOnlyAttr:function(c){k.set(this.focusNode,"readOnly",
+c);this.focusNode.setAttribute("aria-readonly",c);this._set("readOnly",c)},postCreate:function(){this.inherited(arguments);j("ie")&&this.connect(this.focusNode||this.domNode,"onkeydown",this._onKeyDown);if(void 0===this._resetValue)this._lastValueReported=this._resetValue=this.value},_setValueAttr:function(c,e){this._handleOnChange(c,e)},_handleOnChange:function(c,e){this._set("value",c);this.inherited(arguments)},undo:function(){this._setValueAttr(this._lastValueReported,!1)},reset:function(){this._hasBeenBlurred=
+!1;this._setValueAttr(this._resetValue,!0)},_onKeyDown:function(c){if(c.keyCode==h.ESCAPE&&!c.ctrlKey&&!c.altKey&&!c.metaKey&&(9>j("ie")||j("ie")&&j("quirks"))){c.preventDefault();var e=c.srcElement,b=e.ownerDocument.createEventObject();b.keyCode=h.ESCAPE;b.shiftKey=c.shiftKey;e.fireEvent("onkeypress",b)}}})})},"dijit/form/_TextBoxMixin":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom,dojo/_base/event,dojo/keys,dojo/_base/lang,dojo/on,../main".split(","),function(f,k,h,j,e,c,i,b){var g=
+k("dijit.form._TextBoxMixin",null,{trim:!1,uppercase:!1,lowercase:!1,propercase:!1,maxLength:"",selectOnClick:!1,placeHolder:"",_getValueAttr:function(){return this.parse(this.get("displayedValue"),this.constraints)},_setValueAttr:function(a,b,c){var g;void 0!==a&&(g=this.filter(a),"string"!=typeof c&&(c=null!==g&&("number"!=typeof g||!isNaN(g))?this.filter(this.format(g,this.constraints)):""));if(null!=c&&("number"!=typeof c||!isNaN(c))&&this.textbox.value!=c)this.textbox.value=c,this._set("displayedValue",
+this.get("displayedValue"));"auto"==this.textDir&&this.applyTextDir(this.focusNode,c);this.inherited(arguments,[g,b])},displayedValue:"",_getDisplayedValueAttr:function(){return this.filter(this.textbox.value)},_setDisplayedValueAttr:function(a){null==a?a="":"string"!=typeof a&&(a=""+a);this.textbox.value=a;this._setValueAttr(this.get("value"),void 0);this._set("displayedValue",this.get("displayedValue"));"auto"==this.textDir&&this.applyTextDir(this.focusNode,a)},format:function(a){return null==a?
+"":a.toString?a.toString():a},parse:function(a){return a},_refreshState:function(){},onInput:function(){},__skipInputEvent:!1,_onInput:function(a){"auto"==this.textDir&&this.applyTextDir(this.focusNode,this.focusNode.value);this._processInput(a)},_processInput:function(){this._refreshState();this._set("displayedValue",this.get("displayedValue"))},postCreate:function(){this.textbox.setAttribute("value",this.textbox.value);this.inherited(arguments);this.own(i(this.textbox,"keydown, keypress, paste, cut, input, compositionend",
+c.hitch(this,function(a){var b;if("keydown"==a.type){b=a.keyCode;switch(b){case e.SHIFT:case e.ALT:case e.CTRL:case e.META:case e.CAPS_LOCK:case e.NUM_LOCK:case e.SCROLL_LOCK:return}if(!a.ctrlKey&&!a.metaKey&&!a.altKey){switch(b){case e.NUMPAD_0:case e.NUMPAD_1:case e.NUMPAD_2:case e.NUMPAD_3:case e.NUMPAD_4:case e.NUMPAD_5:case e.NUMPAD_6:case e.NUMPAD_7:case e.NUMPAD_8:case e.NUMPAD_9:case e.NUMPAD_MULTIPLY:case e.NUMPAD_PLUS:case e.NUMPAD_ENTER:case e.NUMPAD_MINUS:case e.NUMPAD_PERIOD:case e.NUMPAD_DIVIDE:return}if(65<=
+b&&90>=b||48<=b&&57>=b||b==e.SPACE)return;b=!1;for(var d in e)if(e[d]===a.keyCode){b=!0;break}if(!b)return}}(b=32<=a.charCode?String.fromCharCode(a.charCode):a.charCode)||(b=65<=a.keyCode&&90>=a.keyCode||48<=a.keyCode&&57>=a.keyCode||a.keyCode==e.SPACE?String.fromCharCode(a.keyCode):a.keyCode);b||(b=229);if("keypress"==a.type){if("string"!=typeof b)return;if("a"<=b&&"z">=b||"A"<=b&&"Z">=b||"0"<=b&&"9">=b||" "===b)if(a.ctrlKey||a.metaKey||a.altKey)return}if("input"==a.type){if(this.__skipInputEvent){this.__skipInputEvent=
+!1;return}}else this.__skipInputEvent=!0;var g={faux:!0},f;for(f in a)"layerX"!=f&&"layerY"!=f&&(d=a[f],"function"!=typeof d&&"undefined"!=typeof d&&(g[f]=d));c.mixin(g,{charOrCode:b,_wasConsumed:!1,preventDefault:function(){g._wasConsumed=!0;a.preventDefault()},stopPropagation:function(){a.stopPropagation()}});!1===this.onInput(g)&&(g.preventDefault(),g.stopPropagation());g._wasConsumed||this.defer(function(){this._onInput(g)})})))},_blankValue:"",filter:function(a){if(null===a)return this._blankValue;
+if("string"!=typeof a)return a;this.trim&&(a=c.trim(a));this.uppercase&&(a=a.toUpperCase());this.lowercase&&(a=a.toLowerCase());this.propercase&&(a=a.replace(/[^\s]+/g,function(a){return a.substring(0,1).toUpperCase()+a.substring(1)}));return a},_setBlurValue:function(){this._setValueAttr(this.get("value"),!0)},_onBlur:function(a){this.disabled||(this._setBlurValue(),this.inherited(arguments))},_isTextSelected:function(){return this.textbox.selectionStart!=this.textbox.selectionEnd},_onFocus:function(a){if(!this.disabled&&
+!this.readOnly){if(this.selectOnClick&&"mouse"==a)this._selectOnClickHandle=this.connect(this.domNode,"onmouseup",function(){this.disconnect(this._selectOnClickHandle);this._selectOnClickHandle=null;this._isTextSelected()||g.selectInputText(this.textbox)}),this.defer(function(){if(this._selectOnClickHandle)this.disconnect(this._selectOnClickHandle),this._selectOnClickHandle=null},500);this.inherited(arguments);this._refreshState()}},reset:function(){this.textbox.value="";this.inherited(arguments)},
+_setTextDirAttr:function(a){if(!this._created||this.textDir!=a)this._set("textDir",a),this.applyTextDir(this.focusNode,this.focusNode.value)}});g._setSelectionRange=b._setSelectionRange=function(a,b,c){a.setSelectionRange&&a.setSelectionRange(b,c)};g.selectInputText=b.selectInputText=function(a,b,c){a=h.byId(a);isNaN(b)&&(b=0);isNaN(c)&&(c=a.value?a.value.length:0);try{a.focus(),g._setSelectionRange(a,b,c)}catch(e){}};return g})},"url:dijit/form/templates/TextBox.html":'<div class="dijit dijitReset dijitInline dijitLeft" id="widget_${id}" role="presentation"\n\t><div class="dijitReset dijitInputField dijitInputContainer"\n\t\t><input class="dijitReset dijitInputInner" data-dojo-attach-point=\'textbox,focusNode\' autocomplete="off"\n\t\t\t${!nameAttrSetting} type=\'${type}\'\n\t/></div\n></div>\n',
+"dijit/form/Button":function(){define("require,dojo/_base/declare,dojo/dom-class,dojo/has,dojo/_base/kernel,dojo/_base/lang,dojo/ready,./_FormWidget,./_ButtonMixin,dojo/text!./templates/Button.html".split(","),function(f,k,h,j,e,c,i,b,g,a){j("dijit-legacy-requires")&&i(0,function(){f(["dijit/form/DropDownButton","dijit/form/ComboButton","dijit/form/ToggleButton"])});return k("dijit.form.Button",[b,g],{showLabel:!0,iconClass:"dijitNoIcon",_setIconClassAttr:{node:"iconNode",type:"class"},baseClass:"dijitButton",
+templateString:a,_setValueAttr:"valueNode",_onClick:function(a){var b=this.inherited(arguments);b&&this.valueNode&&(this.valueNode.click(),a.preventDefault(),a.stopPropagation());return b},_fillContent:function(a){if(a&&(!this.params||!("label"in this.params)))if(a=c.trim(a.innerHTML))this.label=a},_setShowLabelAttr:function(a){this.containerNode&&h.toggle(this.containerNode,"dijitDisplayNone",!a);this._set("showLabel",a)},setLabel:function(a){e.deprecated("dijit.form.Button.setLabel() is deprecated. Use set('label', ...) instead.",
+"","2.0");this.set("label",a)},_setLabelAttr:function(a){this.inherited(arguments);if(!this.showLabel&&!("title"in this.params))this.titleNode.title=c.trim(this.containerNode.innerText||this.containerNode.textContent||"")}})})},"dijit/form/_ButtonMixin":function(){define(["dojo/_base/declare","dojo/dom","dojo/_base/event","../registry"],function(f,k,h,j){return f("dijit.form._ButtonMixin",null,{label:"",type:"button",_onClick:function(e){if(this.disabled)return h.stop(e),!1;var c=!1===this.onClick(e);
+if(!c&&"submit"==this.type&&!(this.valueNode||this.focusNode).form)for(var f=this.domNode;f.parentNode;f=f.parentNode){var b=j.byNode(f);if(b&&"function"==typeof b._onSubmit){b._onSubmit(e);c=!0;break}}c&&e.preventDefault();return!c},postCreate:function(){this.inherited(arguments);k.setSelectable(this.focusNode,!1)},onClick:function(){return!0},_setLabelAttr:function(e){this._set("label",e);(this.containerNode||this.focusNode).innerHTML=e}})})},"url:dijit/form/templates/Button.html":'<span class="dijit dijitReset dijitInline" role="presentation"\n\t><span class="dijitReset dijitInline dijitButtonNode"\n\t\tdata-dojo-attach-event="ondijitclick:_onClick" role="presentation"\n\t\t><span class="dijitReset dijitStretch dijitButtonContents"\n\t\t\tdata-dojo-attach-point="titleNode,focusNode"\n\t\t\trole="button" aria-labelledby="${id}_label"\n\t\t\t><span class="dijitReset dijitInline dijitIcon" data-dojo-attach-point="iconNode"></span\n\t\t\t><span class="dijitReset dijitToggleButtonIconChar">&#x25CF;</span\n\t\t\t><span class="dijitReset dijitInline dijitButtonText"\n\t\t\t\tid="${id}_label"\n\t\t\t\tdata-dojo-attach-point="containerNode"\n\t\t\t></span\n\t\t></span\n\t></span\n\t><input ${!nameAttrSetting} type="${type}" value="${value}" class="dijitOffScreen"\n\t\ttabIndex="-1" role="presentation" data-dojo-attach-point="valueNode"\n/></span>\n',
+"dijit/MenuBar":function(){define(["dojo/_base/declare","dojo/_base/event","dojo/keys","./_MenuBase","dojo/text!./templates/MenuBar.html"],function(f,k,h,j,e){return f("dijit.MenuBar",j,{templateString:e,baseClass:"dijitMenuBar",_isMenuBar:!0,postCreate:function(){this.inherited(arguments);var c=this.isLeftToRight();this.connectKeyNavHandlers(c?[h.LEFT_ARROW]:[h.RIGHT_ARROW],c?[h.RIGHT_ARROW]:[h.LEFT_ARROW]);this._orient=["below"]},_moveToPopup:function(c){if(this.focusedChild&&this.focusedChild.popup&&
+!this.focusedChild.disabled)this.onItemClick(this.focusedChild,c)},focusChild:function(c){var e=this.focusedChild,e=e&&e.popup&&e.popup.isShowingNow;this.inherited(arguments);e&&c.popup&&!c.disabled&&this._openPopup(!0)},_onKeyPress:function(c){if(!c.ctrlKey&&!c.altKey)switch(c.charOrCode){case h.DOWN_ARROW:this._moveToPopup(c),k.stop(c)}},onItemClick:function(c,e){if(c.popup&&c.popup.isShowingNow&&("keypress"!==e.type||e.keyCode!==h.DOWN_ARROW))c.popup.onCancel();else this.inherited(arguments)}})})},
+"dijit/_MenuBase":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-class,dojo/_base/lang,dojo/mouse,dojo/on,dojo/window,./a11yclick,./popup,./registry,./_Widget,./_KeyNavContainer,./_TemplatedMixin".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n){return k("dijit._MenuBase",[p,n,m],{parentMenu:null,popupDelay:500,autoFocus:!1,postCreate:function(){var c=this,g=function(a){return e.contains(a,"dijitMenuItem")};this.own(b(this.containerNode,b.selector(g,i.enter),
+function(){c.onItemHover(d.byNode(this))}),b(this.containerNode,b.selector(g,i.leave),function(){c.onItemUnhover(d.byNode(this))}),b(this.containerNode,b.selector(g,a),function(a){c.onItemClick(d.byNode(this),a);a.stopPropagation();a.preventDefault()}));this.inherited(arguments)},onExecute:function(){},onCancel:function(){},_moveToPopup:function(a){if(this.focusedChild&&this.focusedChild.popup&&!this.focusedChild.disabled)this.onItemClick(this.focusedChild,a);else(a=this._getTopMenu())&&a._isMenuBar&&
a.focusNext()},_onPopupHover:function(){if(this.currentPopup&&this.currentPopup._pendingClose_timer){var a=this.currentPopup.parentMenu;a.focusedChild&&a.focusedChild._setSelected(!1);a.focusedChild=this.currentPopup.from_item;a.focusedChild._setSelected(!0);this._stopPendingCloseTimer(this.currentPopup)}},onItemHover:function(a){if(this.isActive&&(this.focusChild(a),this.focusedChild.popup&&!this.focusedChild.disabled&&!this.hover_timer))this.hover_timer=this.defer("_openPopup",this.popupDelay);
-this.focusedChild&&this.focusChild(a);this._hoveredChild=a;a._set("hovering",!0)},_onChildBlur:function(a){this._stopPopupTimer();a._setSelected(!1);var b=a.popup;if(b)this._stopPendingCloseTimer(b),b._pendingClose_timer=this.defer(function(){b._pendingClose_timer=null;if(b.parentMenu)b.parentMenu.currentPopup=null;k.close(b)},this.popupDelay)},onItemUnhover:function(a){this.isActive&&this._stopPopupTimer();if(this._hoveredChild==a)this._hoveredChild=null;a._set("hovering",!1)},_stopPopupTimer:function(){if(this.hover_timer)this.hover_timer=
+this.focusedChild&&this.focusChild(a);this._hoveredChild=a;a._set("hovering",!0)},_onChildBlur:function(a){this._stopPopupTimer();a._setSelected(!1);var b=a.popup;if(b)this._stopPendingCloseTimer(b),b._pendingClose_timer=this.defer(function(){b._pendingClose_timer=null;if(b.parentMenu)b.parentMenu.currentPopup=null;l.close(b)},this.popupDelay)},onItemUnhover:function(a){this.isActive&&this._stopPopupTimer();if(this._hoveredChild==a)this._hoveredChild=null;a._set("hovering",!1)},_stopPopupTimer:function(){if(this.hover_timer)this.hover_timer=
this.hover_timer.remove()},_stopPendingCloseTimer:function(a){if(a._pendingClose_timer)a._pendingClose_timer=a._pendingClose_timer.remove()},_stopFocusTimer:function(){if(this._focus_timer)this._focus_timer=this._focus_timer.remove()},_getTopMenu:function(){for(var a=this;a.parentMenu;a=a.parentMenu);return a},onItemClick:function(a,b){"undefined"==typeof this.isShowingNow&&this._markActive();this.focusChild(a);if(a.disabled)return!1;a.popup?this._openPopup("keypress"==b.type):(this.onExecute(),a._onClick?
-a._onClick(b):a.onClick(b))},_openPopup:function(a){this._stopPopupTimer();var b=this.focusedChild;if(b){var d=b.popup;if(!d.isShowingNow){this.currentPopup&&(this._stopPendingCloseTimer(this.currentPopup),k.close(this.currentPopup));d.parentMenu=this;d.from_item=b;var c=this;k.open({parent:this,popup:d,around:b.domNode,orient:this._orient||["after","before"],onCancel:function(){c.focusChild(b);c._cleanUp();b._setSelected(!0);c.focusedChild=b},onExecute:g.hitch(this,"_cleanUp")});this.currentPopup=
-d;d.connect(d.domNode,"onmouseenter",g.hitch(c,"_onPopupHover"))}if(a&&d.focus)d._focus_timer=this.defer(g.hitch(d,function(){this._focus_timer=null;this.focus()}))}},_markActive:function(){this.isActive=!0;c.replace(this.domNode,"dijitMenuActive","dijitMenuPassive")},onOpen:function(){this.isShowingNow=!0;this._markActive()},_markInactive:function(){this.isActive=!1;c.replace(this.domNode,"dijitMenuPassive","dijitMenuActive")},onClose:function(){this._stopFocusTimer();this._markInactive();this.isShowingNow=
-!1;this.parentMenu=null},_closeChild:function(){this._stopPopupTimer();if(this.currentPopup)0<=e.indexOf(this._focusManager.activeStack,this.id)&&(l.set(this.focusedChild.focusNode,"tabIndex",this.tabIndex),this.focusedChild.focusNode.focus()),k.close(this.currentPopup),this.currentPopup=null;if(this.focusedChild)this.focusedChild._setSelected(!1),this.onItemUnhover(this.focusedChild),this.focusedChild=null},_onItemFocus:function(a){if(this._hoveredChild&&this._hoveredChild!=a)this.onItemUnhover(this._hoveredChild)},
-_onBlur:function(){this._cleanUp();this.inherited(arguments)},_cleanUp:function(){this._closeChild();"undefined"==typeof this.isShowingNow&&this._markInactive()}})})},"dijit/popup":function(){define("dojo/_base/array,dojo/aspect,dojo/_base/connect,dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-construct,dojo/dom-geometry,dojo/dom-style,dojo/_base/event,dojo/keys,dojo/_base/lang,dojo/on,dojo/sniff,./place,./BackgroundIframe,./main".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o,r){function q(){this._popupWrapper&&
-(h.destroy(this._popupWrapper),delete this._popupWrapper)}l=l(null,{_stack:[],_beginZIndex:1E3,_idGen:1,_createWrapper:function(a){var b=a._popupWrapper,d=a.domNode;if(!b)b=h.create("div",{"class":"dijitPopup",style:{display:"none"},role:"presentation"},a.ownerDocumentBody),b.appendChild(d),d=d.style,d.display="",d.visibility="",d.position="",d.top="0px",a._popupWrapper=b,j.after(a,"destroy",q,!0);return b},moveOffScreen:function(a){a=this._createWrapper(a);f.set(a,{visibility:"hidden",top:"-9999px",
-display:""})},hide:function(a){a=this._createWrapper(a);f.set(a,"display","none")},getTopPopup:function(){for(var a=this._stack,b=a.length-1;0<b&&a[b].parent===a[b-1].widget;b--);return a[b]},open:function(f){for(var e=this._stack,h=f.popup,l=f.orient||["below","below-alt","above","above-alt"],j=f.parent?f.parent.isLeftToRight():b.isBodyLtr(h.ownerDocument),q=f.around,r=f.around&&f.around.id?f.around.id+"_dropdown":"popup_"+this._idGen++;e.length&&(!f.parent||!c.isDescendant(f.parent.domNode,e[e.length-
-1].widget.domNode));)this.close(e[e.length-1].widget);var J=this._createWrapper(h);g.set(J,{id:r,style:{zIndex:this._beginZIndex+e.length},"class":"dijitPopup "+(h.baseClass||h["class"]||"").split(" ")[0]+"Popup",dijitPopupParent:f.parent?f.parent.id:""});if((m("ie")||m("mozilla"))&&!h.bgIframe)h.bgIframe=new o(J);l=q?n.around(J,q,l,j,h.orient?d.hitch(h,"orient"):null):n.at(J,f,"R"==l?["TR","BR","TL","BL"]:["TL","BL","TR","BR"],f.padding);J.style.display="";J.style.visibility="visible";h.domNode.style.visibility=
-"visible";j=[];j.push(p(J,i._keypress,d.hitch(this,function(b){if(b.charOrCode==k.ESCAPE&&f.onCancel)a.stop(b),f.onCancel();else if(b.charOrCode===k.TAB&&(a.stop(b),(b=this.getTopPopup())&&b.onCancel))b.onCancel()})));h.onCancel&&f.onCancel&&j.push(h.on("cancel",f.onCancel));j.push(h.on(h.onExecute?"execute":"change",d.hitch(this,function(){var a=this.getTopPopup();if(a&&a.onExecute)a.onExecute()})));e.push({widget:h,parent:f.parent,onExecute:f.onExecute,onCancel:f.onCancel,onClose:f.onClose,handlers:j});
-if(h.onOpen)h.onOpen(l);return l},close:function(a){for(var b=this._stack;a&&e.some(b,function(b){return b.widget==a})||!a&&b.length;){var d=b.pop(),c=d.widget,f=d.onClose;if(c.onClose)c.onClose();for(var g;g=d.handlers.pop();)g.remove();c&&c.domNode&&this.hide(c);f&&f()}}});return r.popup=new l})},"dijit/place":function(){define("dojo/_base/array,dojo/dom-geometry,dojo/dom-style,dojo/_base/kernel,dojo/_base/window,dojo/window,./main".split(","),function(e,j,i,l,c,g,h){function b(b,a,h,d){var i=g.getBox(b.ownerDocument);
-(!b.parentNode||"body"!=(""+b.parentNode.tagName).toLowerCase())&&c.body(b.ownerDocument).appendChild(b);var m=null;e.some(a,function(a){var c=a.corner,g=a.pos,e=0,l={w:{L:i.l+i.w-g.x,R:g.x-i.l,M:i.w}[c.charAt(1)],h:{T:i.t+i.h-g.y,B:g.y-i.t,M:i.h}[c.charAt(0)]},n=b.style;n.left=n.right="auto";h&&(e=h(b,a.aroundCorner,c,l,d),e="undefined"==typeof e?0:e);var t=b.style,y=t.display,z=t.visibility;if("none"==t.display)t.visibility="hidden",t.display="";n=j.position(b);t.display=y;t.visibility=z;y={L:g.x,
-R:g.x-n.w,M:Math.max(i.l,Math.min(i.l+i.w,g.x+(n.w>>1))-n.w)}[c.charAt(1)];z={T:g.y,B:g.y-n.h,M:Math.max(i.t,Math.min(i.t+i.h,g.y+(n.h>>1))-n.h)}[c.charAt(0)];g=Math.max(i.l,y);t=Math.max(i.t,z);y=Math.min(i.l+i.w,y+n.w);z=Math.min(i.t+i.h,z+n.h);y-=g;z-=t;e+=n.w-y+(n.h-z);if(null==m||e<m.overflow)m={corner:c,aroundCorner:a.aroundCorner,x:g,y:t,w:y,h:z,overflow:e,spaceAvailable:l};return!e});m.overflow&&h&&h(b,m.aroundCorner,m.corner,m.spaceAvailable,d);var a=j.isBodyLtr(b.ownerDocument),l=b.style;
-l.top=m.y+"px";l[a?"left":"right"]=(a?m.x:i.w-m.x-m.w)+"px";l[a?"right":"left"]="auto";return m}return h.place={at:function(c,a,g,d){g=e.map(g,function(b){var c={corner:b,pos:{x:a.x,y:a.y}};d&&(c.pos.x+="L"==b.charAt(1)?d.x:-d.x,c.pos.y+="T"==b.charAt(0)?d.y:-d.y);return c});return b(c,g)},around:function(c,a,g,d,h){function m(a,b){I.push({aroundCorner:a,corner:b,pos:{x:{L:u,R:u+y,M:u+(y>>1)}[a.charAt(1)],y:{T:t,B:t+z,M:t+(z>>1)}[a.charAt(0)]}})}var n="string"==typeof a||"offsetWidth"in a?j.position(a,
-!0):a;if(a.parentNode)for(var o="absolute"==i.getComputedStyle(a).position,a=a.parentNode;a&&1==a.nodeType&&"BODY"!=a.nodeName;){var r=j.position(a,!0),q=i.getComputedStyle(a);/relative|absolute/.test(q.position)&&(o=!1);if(!o&&/hidden|auto|scroll/.test(q.overflow)){var v=Math.min(n.y+n.h,r.y+r.h),s=Math.min(n.x+n.w,r.x+r.w);n.x=Math.max(n.x,r.x);n.y=Math.max(n.y,r.y);n.h=v-n.y;n.w=s-n.x}"absolute"==q.position&&(o=!0);a=a.parentNode}var u=n.x,t=n.y,y="w"in n?n.w:n.w=n.width,z="h"in n?n.h:(l.deprecated("place.around: dijit/place.__Rectangle: { x:"+
-u+", y:"+t+", height:"+n.height+", width:"+y+" } has been deprecated. Please use { x:"+u+", y:"+t+", h:"+n.height+", w:"+y+" }","","2.0"),n.h=n.height),I=[];e.forEach(g,function(a){var b=d;switch(a){case "above-centered":m("TM","BM");break;case "below-centered":m("BM","TM");break;case "after-centered":b=!b;case "before-centered":m(b?"ML":"MR",b?"MR":"ML");break;case "after":b=!b;case "before":m(b?"TL":"TR",b?"TR":"TL");m(b?"BL":"BR",b?"BR":"BL");break;case "below-alt":b=!b;case "below":m(b?"BL":
-"BR",b?"TL":"TR");m(b?"BR":"BL",b?"TR":"TL");break;case "above-alt":b=!b;case "above":m(b?"TL":"TR",b?"BL":"BR");m(b?"TR":"TL",b?"BR":"BL");break;default:m(a.aroundCorner,a.corner)}});c=b(c,I,h,{w:y,h:z});c.aroundNodePos=n;return c}}})},"dijit/BackgroundIframe":function(){define("require,./main,dojo/_base/config,dojo/dom-construct,dojo/dom-style,dojo/_base/lang,dojo/on,dojo/sniff,dojo/_base/window".split(","),function(e,j,i,l,c,g,h,b,f){var a=new function(){var a=[];this.pop=function(){var d;a.length?
-(d=a.pop(),d.style.display=""):(9>b("ie")?(d="<iframe src='"+(i.dojoBlankHtmlUrl||e.toUrl("dojo/resources/blank.html")||'javascript:""')+"' role='presentation' style='position: absolute; left: 0px; top: 0px;z-index: -1; filter:Alpha(Opacity=\"0\");'>",d=f.doc.createElement(d)):(d=l.create("iframe"),d.src='javascript:""',d.className="dijitBackgroundIframe",d.setAttribute("role","presentation"),c.set(d,"opacity",0.1)),d.tabIndex=-1);return d};this.push=function(b){b.style.display="none";a.push(b)}};
-j.BackgroundIframe=function(f){if(!f.id)throw Error("no id");if(b("ie")||b("mozilla")){var d=this.iframe=a.pop();f.appendChild(d);7>b("ie")||b("quirks")?(this.resize(f),this._conn=h(f,"resize",g.hitch(this,function(){this.resize(f)}))):c.set(d,{width:"100%",height:"100%"})}};g.extend(j.BackgroundIframe,{resize:function(a){this.iframe&&c.set(this.iframe,{width:a.offsetWidth+"px",height:a.offsetHeight+"px"})},destroy:function(){if(this._conn)this._conn.remove(),this._conn=null;this.iframe&&(a.push(this.iframe),
-delete this.iframe)}});return j.BackgroundIframe})},"dijit/_KeyNavContainer":function(){define("dojo/_base/kernel,./_Container,./_FocusMixin,dojo/_base/array,dojo/keys,dojo/_base/declare,dojo/_base/event,dojo/dom-attr,dojo/_base/lang".split(","),function(e,j,i,l,c,g,h,b,f){return g("dijit._KeyNavContainer",[i,j],{tabIndex:"0",connectKeyNavHandlers:function(a,b){var d=this._keyNavCodes={},g=f.hitch(this,"focusPrev"),e=f.hitch(this,"focusNext");l.forEach(a,function(a){d[a]=g});l.forEach(b,function(a){d[a]=
-e});d[c.HOME]=f.hitch(this,"focusFirstChild");d[c.END]=f.hitch(this,"focusLastChild");this.connect(this.domNode,"onkeypress","_onContainerKeypress");this.connect(this.domNode,"onfocus","_onContainerFocus")},startupKeyNavChildren:function(){e.deprecated("startupKeyNavChildren() call no longer needed","","2.0")},startup:function(){this.inherited(arguments);l.forEach(this.getChildren(),f.hitch(this,"_startupChild"))},addChild:function(a,b){this.inherited(arguments);this._startupChild(a)},focus:function(){this.focusFirstChild()},
+a._onClick(b):a.onClick(b))},_openPopup:function(a){this._stopPopupTimer();var b=this.focusedChild;if(b){var d=b.popup;if(!d.isShowingNow){this.currentPopup&&(this._stopPendingCloseTimer(this.currentPopup),l.close(this.currentPopup));d.parentMenu=this;d.from_item=b;var g=this;l.open({parent:this,popup:d,around:b.domNode,orient:this._orient||["after","before"],onCancel:function(){g.focusChild(b);g._cleanUp();b._setSelected(!0);g.focusedChild=b},onExecute:c.hitch(this,"_cleanUp")});this.currentPopup=
+d;d.connect(d.domNode,"onmouseenter",c.hitch(g,"_onPopupHover"))}if(a&&d.focus)d._focus_timer=this.defer(c.hitch(d,function(){this._focus_timer=null;this.focus()}))}},_markActive:function(){this.isActive=!0;e.replace(this.domNode,"dijitMenuActive","dijitMenuPassive")},onOpen:function(){this.isShowingNow=!0;this._markActive()},_markInactive:function(){this.isActive=!1;e.replace(this.domNode,"dijitMenuPassive","dijitMenuActive")},onClose:function(){this._stopFocusTimer();this._markInactive();this.isShowingNow=
+!1;this.parentMenu=null},_closeChild:function(){this._stopPopupTimer();if(this.currentPopup)0<=f.indexOf(this._focusManager.activeStack,this.id)&&(j.set(this.focusedChild.focusNode,"tabIndex",this.tabIndex),this.focusedChild.focusNode.focus()),l.close(this.currentPopup),this.currentPopup=null;if(this.focusedChild)this.focusedChild._setSelected(!1),this.onItemUnhover(this.focusedChild),this.focusedChild=null},_onItemFocus:function(a){if(this._hoveredChild&&this._hoveredChild!=a)this.onItemUnhover(this._hoveredChild)},
+_onBlur:function(){this._cleanUp();this.inherited(arguments)},_cleanUp:function(){this._closeChild();"undefined"==typeof this.isShowingNow&&this._markInactive()}})})},"dijit/popup":function(){define("dojo/_base/array,dojo/aspect,dojo/_base/connect,dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-construct,dojo/dom-geometry,dojo/dom-style,dojo/_base/event,dojo/keys,dojo/_base/lang,dojo/on,dojo/sniff,./place,./BackgroundIframe,./main".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o,r){function q(){this._popupWrapper&&
+(i.destroy(this._popupWrapper),delete this._popupWrapper)}j=j(null,{_stack:[],_beginZIndex:1E3,_idGen:1,_createWrapper:function(a){var b=a._popupWrapper,c=a.domNode;if(!b)b=i.create("div",{"class":"dijitPopup",style:{display:"none"},role:"presentation"},a.ownerDocumentBody),b.appendChild(c),c=c.style,c.display="",c.visibility="",c.position="",c.top="0px",a._popupWrapper=b,k.after(a,"destroy",q,!0);return b},moveOffScreen:function(a){a=this._createWrapper(a);g.set(a,{visibility:"hidden",top:"-9999px",
+display:""})},hide:function(a){a=this._createWrapper(a);g.set(a,"display","none")},getTopPopup:function(){for(var a=this._stack,b=a.length-1;0<b&&a[b].parent===a[b-1].widget;b--);return a[b]},open:function(g){for(var f=this._stack,i=g.popup,j=g.orient||["below","below-alt","above","above-alt"],k=g.parent?g.parent.isLeftToRight():b.isBodyLtr(i.ownerDocument),q=g.around,r=g.around&&g.around.id?g.around.id+"_dropdown":"popup_"+this._idGen++;f.length&&(!g.parent||!e.isDescendant(g.parent.domNode,f[f.length-
+1].widget.domNode));)this.close(f[f.length-1].widget);var J=this._createWrapper(i);c.set(J,{id:r,style:{zIndex:this._beginZIndex+f.length},"class":"dijitPopup "+(i.baseClass||i["class"]||"").split(" ")[0]+"Popup",dijitPopupParent:g.parent?g.parent.id:""});if((m("ie")||m("mozilla"))&&!i.bgIframe)i.bgIframe=new o(J);j=q?n.around(J,q,j,k,i.orient?d.hitch(i,"orient"):null):n.at(J,g,"R"==j?["TR","BR","TL","BL"]:["TL","BL","TR","BR"],g.padding);J.style.display="";J.style.visibility="visible";i.domNode.style.visibility=
+"visible";k=[];k.push(p(J,h._keypress,d.hitch(this,function(b){if(b.charOrCode==l.ESCAPE&&g.onCancel)a.stop(b),g.onCancel();else if(b.charOrCode===l.TAB&&(a.stop(b),(b=this.getTopPopup())&&b.onCancel))b.onCancel()})));i.onCancel&&g.onCancel&&k.push(i.on("cancel",g.onCancel));k.push(i.on(i.onExecute?"execute":"change",d.hitch(this,function(){var a=this.getTopPopup();if(a&&a.onExecute)a.onExecute()})));f.push({widget:i,parent:g.parent,onExecute:g.onExecute,onCancel:g.onCancel,onClose:g.onClose,handlers:k});
+if(i.onOpen)i.onOpen(j);return j},close:function(a){for(var b=this._stack;a&&f.some(b,function(b){return b.widget==a})||!a&&b.length;){var c=b.pop(),d=c.widget,g=c.onClose;if(d.onClose)d.onClose();for(var e;e=c.handlers.pop();)e.remove();d&&d.domNode&&this.hide(d);g&&g()}}});return r.popup=new j})},"dijit/place":function(){define("dojo/_base/array,dojo/dom-geometry,dojo/dom-style,dojo/_base/kernel,dojo/_base/window,dojo/window,./main".split(","),function(f,k,h,j,e,c,i){function b(b,a,i,d){var h=c.getBox(b.ownerDocument);
+(!b.parentNode||"body"!=(""+b.parentNode.tagName).toLowerCase())&&e.body(b.ownerDocument).appendChild(b);var j=null;f.some(a,function(a){var c=a.corner,e=a.pos,f=0,n={w:{L:h.l+h.w-e.x,R:e.x-h.l,M:h.w}[c.charAt(1)],h:{T:h.t+h.h-e.y,B:e.y-h.t,M:h.h}[c.charAt(0)]},t=b.style;t.left=t.right="auto";i&&(f=i(b,a.aroundCorner,c,n,d),f="undefined"==typeof f?0:f);var u=b.style,y=u.display,z=u.visibility;if("none"==u.display)u.visibility="hidden",u.display="";t=k.position(b);u.display=y;u.visibility=z;y={L:e.x,
+R:e.x-t.w,M:Math.max(h.l,Math.min(h.l+h.w,e.x+(t.w>>1))-t.w)}[c.charAt(1)];z={T:e.y,B:e.y-t.h,M:Math.max(h.t,Math.min(h.t+h.h,e.y+(t.h>>1))-t.h)}[c.charAt(0)];e=Math.max(h.l,y);u=Math.max(h.t,z);y=Math.min(h.l+h.w,y+t.w);z=Math.min(h.t+h.h,z+t.h);y-=e;z-=u;f+=t.w-y+(t.h-z);if(null==j||f<j.overflow)j={corner:c,aroundCorner:a.aroundCorner,x:e,y:u,w:y,h:z,overflow:f,spaceAvailable:n};return!f});j.overflow&&i&&i(b,j.aroundCorner,j.corner,j.spaceAvailable,d);var a=k.isBodyLtr(b.ownerDocument),n=b.style;
+n.top=j.y+"px";n[a?"left":"right"]=(a?j.x:h.w-j.x-j.w)+"px";n[a?"right":"left"]="auto";return j}return i.place={at:function(c,a,e,d){e=f.map(e,function(b){var c={corner:b,pos:{x:a.x,y:a.y}};d&&(c.pos.x+="L"==b.charAt(1)?d.x:-d.x,c.pos.y+="T"==b.charAt(0)?d.y:-d.y);return c});return b(c,e)},around:function(c,a,e,d,i){function m(a,b){I.push({aroundCorner:a,corner:b,pos:{x:{L:t,R:t+y,M:t+(y>>1)}[a.charAt(1)],y:{T:u,B:u+z,M:u+(z>>1)}[a.charAt(0)]}})}var n="string"==typeof a||"offsetWidth"in a?k.position(a,
+!0):a;if(a.parentNode)for(var o="absolute"==h.getComputedStyle(a).position,a=a.parentNode;a&&1==a.nodeType&&"BODY"!=a.nodeName;){var r=k.position(a,!0),q=h.getComputedStyle(a);/relative|absolute/.test(q.position)&&(o=!1);if(!o&&/hidden|auto|scroll/.test(q.overflow)){var v=Math.min(n.y+n.h,r.y+r.h),s=Math.min(n.x+n.w,r.x+r.w);n.x=Math.max(n.x,r.x);n.y=Math.max(n.y,r.y);n.h=v-n.y;n.w=s-n.x}"absolute"==q.position&&(o=!0);a=a.parentNode}var t=n.x,u=n.y,y="w"in n?n.w:n.w=n.width,z="h"in n?n.h:(j.deprecated("place.around: dijit/place.__Rectangle: { x:"+
+t+", y:"+u+", height:"+n.height+", width:"+y+" } has been deprecated. Please use { x:"+t+", y:"+u+", h:"+n.height+", w:"+y+" }","","2.0"),n.h=n.height),I=[];f.forEach(e,function(a){var b=d;switch(a){case "above-centered":m("TM","BM");break;case "below-centered":m("BM","TM");break;case "after-centered":b=!b;case "before-centered":m(b?"ML":"MR",b?"MR":"ML");break;case "after":b=!b;case "before":m(b?"TL":"TR",b?"TR":"TL");m(b?"BL":"BR",b?"BR":"BL");break;case "below-alt":b=!b;case "below":m(b?"BL":
+"BR",b?"TL":"TR");m(b?"BR":"BL",b?"TR":"TL");break;case "above-alt":b=!b;case "above":m(b?"TL":"TR",b?"BL":"BR");m(b?"TR":"TL",b?"BR":"BL");break;default:m(a.aroundCorner,a.corner)}});c=b(c,I,i,{w:y,h:z});c.aroundNodePos=n;return c}}})},"dijit/BackgroundIframe":function(){define("require,./main,dojo/_base/config,dojo/dom-construct,dojo/dom-style,dojo/_base/lang,dojo/on,dojo/sniff,dojo/_base/window".split(","),function(f,k,h,j,e,c,i,b,g){var a=new function(){var a=[];this.pop=function(){var c;a.length?
+(c=a.pop(),c.style.display=""):(9>b("ie")?(c="<iframe src='"+(h.dojoBlankHtmlUrl||f.toUrl("dojo/resources/blank.html")||'javascript:""')+"' role='presentation' style='position: absolute; left: 0px; top: 0px;z-index: -1; filter:Alpha(Opacity=\"0\");'>",c=g.doc.createElement(c)):(c=j.create("iframe"),c.src='javascript:""',c.className="dijitBackgroundIframe",c.setAttribute("role","presentation"),e.set(c,"opacity",0.1)),c.tabIndex=-1);return c};this.push=function(b){b.style.display="none";a.push(b)}};
+k.BackgroundIframe=function(g){if(!g.id)throw Error("no id");if(b("ie")||b("mozilla")){var d=this.iframe=a.pop();g.appendChild(d);7>b("ie")||b("quirks")?(this.resize(g),this._conn=i(g,"resize",c.hitch(this,function(){this.resize(g)}))):e.set(d,{width:"100%",height:"100%"})}};c.extend(k.BackgroundIframe,{resize:function(a){this.iframe&&e.set(this.iframe,{width:a.offsetWidth+"px",height:a.offsetHeight+"px"})},destroy:function(){if(this._conn)this._conn.remove(),this._conn=null;this.iframe&&(a.push(this.iframe),
+delete this.iframe)}});return k.BackgroundIframe})},"dijit/_KeyNavContainer":function(){define("dojo/_base/kernel,./_Container,./_FocusMixin,dojo/_base/array,dojo/keys,dojo/_base/declare,dojo/_base/event,dojo/dom-attr,dojo/_base/lang".split(","),function(f,k,h,j,e,c,i,b,g){return c("dijit._KeyNavContainer",[h,k],{tabIndex:"0",connectKeyNavHandlers:function(a,b){var c=this._keyNavCodes={},f=g.hitch(this,"focusPrev"),i=g.hitch(this,"focusNext");j.forEach(a,function(a){c[a]=f});j.forEach(b,function(a){c[a]=
+i});c[e.HOME]=g.hitch(this,"focusFirstChild");c[e.END]=g.hitch(this,"focusLastChild");this.connect(this.domNode,"onkeypress","_onContainerKeypress");this.connect(this.domNode,"onfocus","_onContainerFocus")},startupKeyNavChildren:function(){f.deprecated("startupKeyNavChildren() call no longer needed","","2.0")},startup:function(){this.inherited(arguments);j.forEach(this.getChildren(),g.hitch(this,"_startupChild"))},addChild:function(a,b){this.inherited(arguments);this._startupChild(a)},focus:function(){this.focusFirstChild()},
focusFirstChild:function(){this.focusChild(this._getFirstFocusableChild())},focusLastChild:function(){this.focusChild(this._getLastFocusableChild())},focusNext:function(){this.focusChild(this._getNextFocusableChild(this.focusedChild,1))},focusPrev:function(){this.focusChild(this._getNextFocusableChild(this.focusedChild,-1),!0)},focusChild:function(a,b){a&&(this.focusedChild&&a!==this.focusedChild&&this._onChildBlur(this.focusedChild),a.set("tabIndex",this.tabIndex),a.focus(b?"end":"start"),this._set("focusedChild",
a))},_startupChild:function(a){a.set("tabIndex","-1");this.connect(a,"_onFocus",function(){a.set("tabIndex",this.tabIndex)});this.connect(a,"_onBlur",function(){a.set("tabIndex","-1")})},_onContainerFocus:function(a){a.target!==this.domNode||this.focusedChild||(this.focusFirstChild(),b.set(this.domNode,"tabIndex","-1"))},_onBlur:function(a){this.tabIndex&&b.set(this.domNode,"tabIndex",this.tabIndex);this.focusedChild=null;this.inherited(arguments)},_onContainerKeypress:function(a){if(!a.ctrlKey&&
-!a.altKey){var b=this._keyNavCodes[a.charOrCode];b&&(b(),h.stop(a))}},_onChildBlur:function(){},_getFirstFocusableChild:function(){return this._getNextFocusableChild(null,1)},_getLastFocusableChild:function(){return this._getNextFocusableChild(null,-1)},_getNextFocusableChild:function(a,b){a&&(a=this._getSiblingOfChild(a,b));for(var c=this.getChildren(),f=0;f<c.length;f++){a||(a=c[0<b?0:c.length-1]);if(a.isFocusable())return a;a=this._getSiblingOfChild(a,b)}return null}})})},"url:dijit/templates/MenuBar.html":'<div class="dijitMenuBar dijitMenuPassive" data-dojo-attach-point="containerNode" role="menubar" tabIndex="${tabIndex}" data-dojo-attach-event="onkeypress: _onKeyPress"></div>\n',
-"dijit/PopupMenuBarItem":function(){define(["dojo/_base/declare","./PopupMenuItem","./MenuBarItem"],function(e,j,i){return e("dijit.PopupMenuBarItem",[j,i._MenuBarItemMixin],{})})},"dijit/PopupMenuItem":function(){define("dojo/_base/declare,dojo/dom-style,dojo/query,./registry,./MenuItem,./hccss".split(","),function(e,j,i,l,c){return e("dijit.PopupMenuItem",c,{_fillContent:function(){if(this.srcNodeRef){var c=i("*",this.srcNodeRef);this.inherited(arguments,[c[0]]);this.dropDownContainer=this.srcNodeRef}},
-startup:function(){if(!this._started){this.inherited(arguments);if(!this.popup){var c=i("[widgetId]",this.dropDownContainer)[0];this.popup=l.byNode(c)}this.ownerDocumentBody.appendChild(this.popup.domNode);this.popup.startup();this.popup.domNode.style.display="none";this.arrowWrapper&&j.set(this.arrowWrapper,"visibility","");this.focusNode.setAttribute("aria-haspopup","true")}},destroyDescendants:function(c){this.popup&&(this.popup._destroyed||this.popup.destroyRecursive(c),delete this.popup);this.inherited(arguments)}})})},
-"dijit/MenuItem":function(){define("dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-class,dojo/_base/kernel,dojo/sniff,./_Widget,./_TemplatedMixin,./_Contained,./_CssStateMixin,dojo/text!./templates/MenuItem.html".split(","),function(e,j,i,l,c,g,h,b,f,a,k){return e("dijit.MenuItem",[h,b,f,a],{templateString:k,baseClass:"dijitMenuItem",label:"",_setLabelAttr:function(a){this.containerNode.innerHTML=a;this._set("label",a);"auto"===this.textDir&&this.applyTextDir(this.focusNode,this.label)},iconClass:"dijitNoIcon",
-_setIconClassAttr:{node:"iconNode",type:"class"},accelKey:"",disabled:!1,_fillContent:function(a){a&&!("label"in this.params)&&this.set("label",a.innerHTML)},buildRendering:function(){this.inherited(arguments);var a=this.id+"_text";i.set(this.containerNode,"id",a);this.accelKeyNode&&(i.set(this.accelKeyNode,"id",this.id+"_accel"),a+=" "+this.id+"_accel");this.domNode.setAttribute("aria-labelledby",a);j.setSelectable(this.domNode,!1)},onClick:function(){},focus:function(){try{8==g("ie")&&this.containerNode.focus(),
-this.focusNode.focus()}catch(a){}},_onFocus:function(){this._setSelected(!0);this.getParent()._onItemFocus(this);this.inherited(arguments)},_setSelected:function(a){l.toggle(this.domNode,"dijitMenuItemSelected",a)},setLabel:function(a){c.deprecated("dijit.MenuItem.setLabel() is deprecated. Use set('label', ...) instead.","","2.0");this.set("label",a)},setDisabled:function(a){c.deprecated("dijit.Menu.setDisabled() is deprecated. Use set('disabled', bool) instead.","","2.0");this.set("disabled",a)},
-_setDisabledAttr:function(a){this.focusNode.setAttribute("aria-disabled",a?"true":"false");this._set("disabled",a)},_setAccelKeyAttr:function(a){this.accelKeyNode.style.display=a?"":"none";this.accelKeyNode.innerHTML=a;i.set(this.containerNode,"colSpan",a?"1":"2");this._set("accelKey",a)},_setTextDirAttr:function(a){if(!this._created||this.textDir!=a)this._set("textDir",a),this.applyTextDir(this.focusNode,this.label)}})})},"url:dijit/templates/MenuItem.html":'<tr class="dijitReset dijitMenuItem" data-dojo-attach-point="focusNode" role="menuitem" tabIndex="-1">\n\t<td class="dijitReset dijitMenuItemIconCell" role="presentation">\n\t\t<img src="${_blankGif}" alt="" class="dijitIcon dijitMenuItemIcon" data-dojo-attach-point="iconNode"/>\n\t</td>\n\t<td class="dijitReset dijitMenuItemLabel" colspan="2" data-dojo-attach-point="containerNode"></td>\n\t<td class="dijitReset dijitMenuItemAccelKey" style="display: none" data-dojo-attach-point="accelKeyNode"></td>\n\t<td class="dijitReset dijitMenuArrowCell" role="presentation">\n\t\t<div data-dojo-attach-point="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',
-"dijit/MenuBarItem":function(){define(["dojo/_base/declare","./MenuItem","dojo/text!./templates/MenuBarItem.html"],function(e,j,i){i=e("dijit._MenuBarItemMixin",null,{templateString:i,_setIconClassAttr:null});e=e("dijit.MenuBarItem",[j,i],{});e._MenuBarItemMixin=i;return e})},"url:dijit/templates/MenuBarItem.html":'<div class="dijitReset dijitInline dijitMenuItem dijitMenuItemLabel" data-dojo-attach-point="focusNode"\n\t \trole="menuitem" tabIndex="-1">\n\t<span data-dojo-attach-point="containerNode"></span>\n</div>\n',
-"dijit/Menu":function(){define("require,dojo/_base/array,dojo/_base/declare,dojo/_base/event,dojo/dom,dojo/dom-attr,dojo/dom-geometry,dojo/dom-style,dojo/keys,dojo/_base/lang,dojo/on,dojo/sniff,dojo/_base/window,dojo/window,./popup,./DropDownMenu,dojo/ready".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o,r){d("dijit-legacy-requires")&&r(0,function(){e(["dijit/MenuItem","dijit/PopupMenuItem","dijit/CheckedMenuItem","dijit/MenuSeparator"])});return i("dijit.Menu",o,{constructor:function(){this._bindings=
-[]},targetNodeIds:[],selector:"",contextMenuForWindow:!1,leftClickToOpen:!1,refocus:!0,postCreate:function(){this.contextMenuForWindow?this.bindDomNode(this.ownerDocumentBody):j.forEach(this.targetNodeIds,this.bindDomNode,this);this.inherited(arguments)},_iframeContentWindow:function(a){return m.get(this._iframeContentDocument(a))||this._iframeContentDocument(a).__parent__||a.name&&p.doc.frames[a.name]||null},_iframeContentDocument:function(a){return a.contentDocument||a.contentWindow&&a.contentWindow.document||
-a.name&&p.doc.frames[a.name]&&p.doc.frames[a.name].document||null},bindDomNode:function(b){var b=c.byId(b,this.ownerDocument),d;if("iframe"==b.tagName.toLowerCase()){var e=b,m=this._iframeContentWindow(e);d=p.body(m.document)}else d=b==p.body(this.ownerDocument)?this.ownerDocument.documentElement:b;var h={node:b,iframe:e};g.set(b,"_dijitMenu"+this.id,this._bindings.push(h));var i=a.hitch(this,function(a){var b=this.selector,c=b?function(a){return k.selector(b,a)}:function(a){return a},d=this;return[k(a,
-c(this.leftClickToOpen?"click":"contextmenu"),function(a){l.stop(a);d._scheduleOpen(this,e,{x:a.pageX,y:a.pageY})}),k(a,c("keydown"),function(a){a.shiftKey&&a.keyCode==f.F10&&(l.stop(a),d._scheduleOpen(this,e))})]});h.connects=d?i(d):[];if(e)h.onloadHandler=a.hitch(this,function(){var a=this._iframeContentWindow(e);d=p.body(a.document);h.connects=i(d)}),e.addEventListener?e.addEventListener("load",h.onloadHandler,!1):e.attachEvent("onload",h.onloadHandler)},unBindDomNode:function(a){var b;try{b=c.byId(a,
-this.ownerDocument)}catch(d){return}a="_dijitMenu"+this.id;if(b&&g.has(b,a)){for(var f=g.get(b,a)-1,e=this._bindings[f],m;m=e.connects.pop();)m.remove();(m=e.iframe)&&(m.removeEventListener?m.removeEventListener("load",e.onloadHandler,!1):m.detachEvent("onload",e.onloadHandler));g.remove(b,a);delete this._bindings[f]}},_scheduleOpen:function(a,b,c){if(!this._openTimer)this._openTimer=this.defer(function(){delete this._openTimer;this._openMyself({target:a,iframe:b,coords:c})},1)},_openMyself:function(a){function f(){j.refocus&&
-o&&o.focus();n.close(j)}var g=a.target,e=a.iframe,a=a.coords;this.currentTarget=g;if(a){if(e){var g=h.position(e,!0),m=this._iframeContentWindow(e),m=h.docScroll(m.document),k=b.getComputedStyle(e),i=b.toPixelValue,l=(d("ie")&&d("quirks")?0:i(e,k.paddingLeft))+(d("ie")&&d("quirks")?i(e,k.borderLeftWidth):0),e=(d("ie")&&d("quirks")?0:i(e,k.paddingTop))+(d("ie")&&d("quirks")?i(e,k.borderTopWidth):0);a.x+=g.x+l-m.x;a.y+=g.y+e-m.y}}else a=h.position(g,!0),a.x+=10,a.y+=10;var j=this,e=this._focusManager.get("prevNode"),
-g=this._focusManager.get("curNode"),o=!g||c.isDescendant(g,this.domNode)?e:g;n.open({popup:this,x:a.x,y:a.y,onExecute:f,onCancel:f,orient:this.isLeftToRight()?"L":"R"});this.focus();this._onBlur=function(){this.inherited("_onBlur",arguments);n.close(this)}},destroy:function(){j.forEach(this._bindings,function(a){a&&this.unBindDomNode(a.node)},this);this.inherited(arguments)}})})},"dijit/DropDownMenu":function(){define("dojo/_base/declare,dojo/_base/event,dojo/keys,dojo/text!./templates/Menu.html,./_OnDijitClickMixin,./_MenuBase".split(","),
-function(e,j,i,l,c,g){return e("dijit.DropDownMenu",[g,c],{templateString:l,baseClass:"dijitMenu",postCreate:function(){this.inherited(arguments);var c=this.isLeftToRight();this._openSubMenuKey=c?i.RIGHT_ARROW:i.LEFT_ARROW;this._closeSubMenuKey=c?i.LEFT_ARROW:i.RIGHT_ARROW;this.connectKeyNavHandlers([i.UP_ARROW],[i.DOWN_ARROW])},_onKeyPress:function(c){if(!c.ctrlKey&&!c.altKey)switch(c.charOrCode){case this._openSubMenuKey:this._moveToPopup(c);j.stop(c);break;case this._closeSubMenuKey:if(this.parentMenu)if(this.parentMenu._isMenuBar)this.parentMenu.focusPrev();
-else this.onCancel(!1);else j.stop(c)}}})})},"url:dijit/templates/Menu.html":'<table class="dijit dijitMenu dijitMenuPassive dijitReset dijitMenuTable" role="menu" tabIndex="${tabIndex}"\n\t data-dojo-attach-event="onkeypress:_onKeyPress" cellspacing="0">\n\t<tbody class="dijitReset" data-dojo-attach-point="containerNode"></tbody>\n</table>\n',"dijit/Toolbar":function(){define("require,dojo/_base/declare,dojo/has,dojo/keys,dojo/ready,./_Widget,./_KeyNavContainer,./_TemplatedMixin".split(","),function(e,
-j,i,l,c,g,h,b){i("dijit-legacy-requires")&&c(0,function(){e(["dijit/ToolbarSeparator"])});return j("dijit.Toolbar",[g,b,h],{templateString:'<div class="dijit" role="toolbar" tabIndex="${tabIndex}" data-dojo-attach-point="containerNode"></div>',baseClass:"dijitToolbar",postCreate:function(){this.inherited(arguments);this.connectKeyNavHandlers(this.isLeftToRight()?[l.LEFT_ARROW]:[l.RIGHT_ARROW],this.isLeftToRight()?[l.RIGHT_ARROW]:[l.LEFT_ARROW])}})})},"dijit/Dialog":function(){define("require,dojo/_base/array,dojo/_base/connect,dojo/_base/declare,dojo/_base/Deferred,dojo/dom,dojo/dom-class,dojo/dom-geometry,dojo/dom-style,dojo/_base/event,dojo/_base/fx,dojo/i18n,dojo/keys,dojo/_base/lang,dojo/on,dojo/ready,dojo/sniff,dojo/window,dojo/dnd/Moveable,dojo/dnd/TimedMoveable,./focus,./_base/manager,./_Widget,./_TemplatedMixin,./_CssStateMixin,./form/_FormMixin,./_DialogMixin,./DialogUnderlay,./layout/ContentPane,dojo/text!./templates/Dialog.html,./main,dojo/i18n!./nls/common".split(","),
-function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o,r,q,v,s,u,t,y,z,I,J,N,E,S,Q,B){var t=l("dijit._DialogBase",[z,J,N,I],{templateString:Q,baseClass:"dijitDialog",cssStateNodes:{closeButtonNode:"dijitDialogCloseIcon"},_setTitleAttr:[{node:"titleNode",type:"innerHTML"},{node:"titleBar",type:"attribute"}],open:!1,duration:t.defaultDuration,refocus:!0,autofocus:!0,_firstFocusItem:null,_lastFocusItem:null,doLayout:!1,draggable:!0,_setDraggableAttr:function(a){this._set("draggable",a)},"aria-describedby":"",maxRatio:0.9,
-postMixInProperties:function(){var a=d.getLocalization("dijit","common");m.mixin(this,a);this.inherited(arguments)},postCreate:function(){f.set(this.domNode,{display:"none",position:"absolute"});this.ownerDocumentBody.appendChild(this.domNode);this.inherited(arguments);this.connect(this,"onExecute","hide");this.connect(this,"onCancel","hide");this._modalconnects=[]},onLoad:function(){this._position();this.autofocus&&w.isTop(this)&&(this._getFocusItems(this.domNode),u.focus(this._firstFocusItem));
-this.inherited(arguments)},_endDrag:function(){var a=b.position(this.domNode),c=q.getBox(this.ownerDocument);a.y=Math.min(Math.max(a.y,0),c.h-a.h);a.x=Math.min(Math.max(a.x,0),c.w-a.w);this._relativePosition=a;this._position()},_setup:function(){var a=this.domNode;this.titleBar&&this.draggable?(this._moveable=new (6==r("ie")?s:v)(a,{handle:this.titleBar}),this.connect(this._moveable,"onMoveStop","_endDrag")):h.add(a,"dijitDialogFixed");this.underlayAttrs={dialogId:this.id,"class":j.map(this["class"].split(/\s/),
-function(a){return a+"_underlay"}).join(" "),ownerDocument:this.ownerDocument}},_size:function(){this._checkIfSingleChild();if(this._singleChild){if("undefined"!=typeof this._singleChildOriginalStyle)this._singleChild.domNode.style.cssText=this._singleChildOriginalStyle,delete this._singleChildOriginalStyle}else f.set(this.containerNode,{width:"auto",height:"auto"});var a=b.position(this.domNode),c=q.getBox(this.ownerDocument);c.w*=this.maxRatio;c.h*=this.maxRatio;if(a.w>=c.w||a.h>=c.h){var d=b.position(this.containerNode),
-g=Math.min(a.w,c.w)-(a.w-d.w),a=Math.min(a.h,c.h)-(a.h-d.h);if(this._singleChild&&this._singleChild.resize){if("undefined"==typeof this._singleChildOriginalStyle)this._singleChildOriginalStyle=this._singleChild.domNode.style.cssText;this._singleChild.resize({w:g,h:a})}else f.set(this.containerNode,{width:g+"px",height:a+"px",overflow:"auto",position:"relative"})}else this._singleChild&&this._singleChild.resize&&this._singleChild.resize()},_position:function(){if(!h.contains(this.ownerDocumentBody,
-"dojoMove")){var a=this.domNode,c=q.getBox(this.ownerDocument),d=this._relativePosition,g=d?null:b.position(a);f.set(a,{left:Math.floor(c.l+(d?d.x:(c.w-g.w)/2))+"px",top:Math.floor(c.t+(d?d.y:(c.h-g.h)/2))+"px"})}},_onKey:function(b){if(b.charOrCode){var c=b.target;b.charOrCode===p.TAB&&this._getFocusItems(this.domNode);var d=this._firstFocusItem==this._lastFocusItem;if(c==this._firstFocusItem&&b.shiftKey&&b.charOrCode===p.TAB)d||u.focus(this._lastFocusItem),a.stop(b);else if(c==this._lastFocusItem&&
-b.charOrCode===p.TAB&&!b.shiftKey)d||u.focus(this._firstFocusItem),a.stop(b);else{for(;c;){if(c==this.domNode||h.contains(c,"dijitPopup"))if(b.charOrCode==p.ESCAPE)this.onCancel();else return;c=c.parentNode}if(b.charOrCode!==p.TAB)a.stop(b);else if(!r("opera"))try{this._firstFocusItem.focus()}catch(f){}}}},show:function(){if(!this.open){this._started||this.startup();if(!this._alreadyInitialized)this._setup(),this._alreadyInitialized=!0;this._fadeOutDeferred&&this._fadeOutDeferred.cancel();var a=q.get(this.ownerDocument);
-this._modalconnects.push(n(a,"scroll",m.hitch(this,"resize")));this._modalconnects.push(n(this.domNode,i._keypress,m.hitch(this,"_onKey")));f.set(this.domNode,{opacity:0,display:""});this._set("open",!0);this._onShow();this._size();this._position();var b;this._fadeInDeferred=new c(m.hitch(this,function(){b.stop();delete this._fadeInDeferred}));b=k.fadeIn({node:this.domNode,duration:this.duration,beforeBegin:m.hitch(this,function(){w.show(this,this.underlayAttrs)}),onEnd:m.hitch(this,function(){this.autofocus&&
-w.isTop(this)&&(this._getFocusItems(this.domNode),u.focus(this._firstFocusItem));this._fadeInDeferred.resolve(!0);delete this._fadeInDeferred})}).play();return this._fadeInDeferred}},hide:function(){if(this._alreadyInitialized&&this.open){this._fadeInDeferred&&this._fadeInDeferred.cancel();var a;this._fadeOutDeferred=new c(m.hitch(this,function(){a.stop();delete this._fadeOutDeferred}));this._fadeOutDeferred.then(m.hitch(this,"onHide"));a=k.fadeOut({node:this.domNode,duration:this.duration,onEnd:m.hitch(this,
+!a.altKey){var b=this._keyNavCodes[a.charOrCode];b&&(b(),i.stop(a))}},_onChildBlur:function(){},_getFirstFocusableChild:function(){return this._getNextFocusableChild(null,1)},_getLastFocusableChild:function(){return this._getNextFocusableChild(null,-1)},_getNextFocusableChild:function(a,b){a&&(a=this._getSiblingOfChild(a,b));for(var c=this.getChildren(),g=0;g<c.length;g++){a||(a=c[0<b?0:c.length-1]);if(a.isFocusable())return a;a=this._getSiblingOfChild(a,b)}return null}})})},"url:dijit/templates/MenuBar.html":'<div class="dijitMenuBar dijitMenuPassive" data-dojo-attach-point="containerNode" role="menubar" tabIndex="${tabIndex}" data-dojo-attach-event="onkeypress: _onKeyPress"></div>\n',
+"dijit/PopupMenuBarItem":function(){define(["dojo/_base/declare","./PopupMenuItem","./MenuBarItem"],function(f,k,h){return f("dijit.PopupMenuBarItem",[k,h._MenuBarItemMixin],{})})},"dijit/PopupMenuItem":function(){define("dojo/_base/declare,dojo/dom-style,dojo/query,./registry,./MenuItem,./hccss".split(","),function(f,k,h,j,e){return f("dijit.PopupMenuItem",e,{_fillContent:function(){if(this.srcNodeRef){var c=h("*",this.srcNodeRef);this.inherited(arguments,[c[0]]);this.dropDownContainer=this.srcNodeRef}},
+startup:function(){if(!this._started){this.inherited(arguments);if(!this.popup){var c=h("[widgetId]",this.dropDownContainer)[0];this.popup=j.byNode(c)}this.ownerDocumentBody.appendChild(this.popup.domNode);this.popup.startup();this.popup.domNode.style.display="none";this.arrowWrapper&&k.set(this.arrowWrapper,"visibility","");this.focusNode.setAttribute("aria-haspopup","true")}},destroyDescendants:function(c){this.popup&&(this.popup._destroyed||this.popup.destroyRecursive(c),delete this.popup);this.inherited(arguments)}})})},
+"dijit/MenuItem":function(){define("dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-class,dojo/_base/kernel,dojo/sniff,./_Widget,./_TemplatedMixin,./_Contained,./_CssStateMixin,dojo/text!./templates/MenuItem.html".split(","),function(f,k,h,j,e,c,i,b,g,a,l){return f("dijit.MenuItem",[i,b,g,a],{templateString:l,baseClass:"dijitMenuItem",label:"",_setLabelAttr:function(a){this.containerNode.innerHTML=a;this._set("label",a);"auto"===this.textDir&&this.applyTextDir(this.focusNode,this.label)},iconClass:"dijitNoIcon",
+_setIconClassAttr:{node:"iconNode",type:"class"},accelKey:"",disabled:!1,_fillContent:function(a){a&&!("label"in this.params)&&this.set("label",a.innerHTML)},buildRendering:function(){this.inherited(arguments);var a=this.id+"_text";h.set(this.containerNode,"id",a);this.accelKeyNode&&(h.set(this.accelKeyNode,"id",this.id+"_accel"),a+=" "+this.id+"_accel");this.domNode.setAttribute("aria-labelledby",a);k.setSelectable(this.domNode,!1)},onClick:function(){},focus:function(){try{8==c("ie")&&this.containerNode.focus(),
+this.focusNode.focus()}catch(a){}},_onFocus:function(){this._setSelected(!0);this.getParent()._onItemFocus(this);this.inherited(arguments)},_setSelected:function(a){j.toggle(this.domNode,"dijitMenuItemSelected",a)},setLabel:function(a){e.deprecated("dijit.MenuItem.setLabel() is deprecated. Use set('label', ...) instead.","","2.0");this.set("label",a)},setDisabled:function(a){e.deprecated("dijit.Menu.setDisabled() is deprecated. Use set('disabled', bool) instead.","","2.0");this.set("disabled",a)},
+_setDisabledAttr:function(a){this.focusNode.setAttribute("aria-disabled",a?"true":"false");this._set("disabled",a)},_setAccelKeyAttr:function(a){this.accelKeyNode.style.display=a?"":"none";this.accelKeyNode.innerHTML=a;h.set(this.containerNode,"colSpan",a?"1":"2");this._set("accelKey",a)},_setTextDirAttr:function(a){if(!this._created||this.textDir!=a)this._set("textDir",a),this.applyTextDir(this.focusNode,this.label)}})})},"url:dijit/templates/MenuItem.html":'<tr class="dijitReset dijitMenuItem" data-dojo-attach-point="focusNode" role="menuitem" tabIndex="-1">\n\t<td class="dijitReset dijitMenuItemIconCell" role="presentation">\n\t\t<img src="${_blankGif}" alt="" class="dijitIcon dijitMenuItemIcon" data-dojo-attach-point="iconNode"/>\n\t</td>\n\t<td class="dijitReset dijitMenuItemLabel" colspan="2" data-dojo-attach-point="containerNode"></td>\n\t<td class="dijitReset dijitMenuItemAccelKey" style="display: none" data-dojo-attach-point="accelKeyNode"></td>\n\t<td class="dijitReset dijitMenuArrowCell" role="presentation">\n\t\t<div data-dojo-attach-point="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',
+"dijit/MenuBarItem":function(){define(["dojo/_base/declare","./MenuItem","dojo/text!./templates/MenuBarItem.html"],function(f,k,h){h=f("dijit._MenuBarItemMixin",null,{templateString:h,_setIconClassAttr:null});f=f("dijit.MenuBarItem",[k,h],{});f._MenuBarItemMixin=h;return f})},"url:dijit/templates/MenuBarItem.html":'<div class="dijitReset dijitInline dijitMenuItem dijitMenuItemLabel" data-dojo-attach-point="focusNode"\n\t \trole="menuitem" tabIndex="-1">\n\t<span data-dojo-attach-point="containerNode"></span>\n</div>\n',
+"dijit/Menu":function(){define("require,dojo/_base/array,dojo/_base/declare,dojo/_base/event,dojo/dom,dojo/dom-attr,dojo/dom-geometry,dojo/dom-style,dojo/keys,dojo/_base/lang,dojo/on,dojo/sniff,dojo/_base/window,dojo/window,./popup,./DropDownMenu,dojo/ready".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o,r){d("dijit-legacy-requires")&&r(0,function(){f(["dijit/MenuItem","dijit/PopupMenuItem","dijit/CheckedMenuItem","dijit/MenuSeparator"])});return h("dijit.Menu",o,{constructor:function(){this._bindings=
+[]},targetNodeIds:[],selector:"",contextMenuForWindow:!1,leftClickToOpen:!1,refocus:!0,postCreate:function(){this.contextMenuForWindow?this.bindDomNode(this.ownerDocumentBody):k.forEach(this.targetNodeIds,this.bindDomNode,this);this.inherited(arguments)},_iframeContentWindow:function(a){return m.get(this._iframeContentDocument(a))||this._iframeContentDocument(a).__parent__||a.name&&p.doc.frames[a.name]||null},_iframeContentDocument:function(a){return a.contentDocument||a.contentWindow&&a.contentWindow.document||
+a.name&&p.doc.frames[a.name]&&p.doc.frames[a.name].document||null},bindDomNode:function(b){var b=e.byId(b,this.ownerDocument),d;if("iframe"==b.tagName.toLowerCase()){var f=b,i=this._iframeContentWindow(f);d=p.body(i.document)}else d=b==p.body(this.ownerDocument)?this.ownerDocument.documentElement:b;var h={node:b,iframe:f};c.set(b,"_dijitMenu"+this.id,this._bindings.push(h));var m=a.hitch(this,function(a){var b=this.selector,c=b?function(a){return l.selector(b,a)}:function(a){return a},d=this;return[l(a,
+c(this.leftClickToOpen?"click":"contextmenu"),function(a){j.stop(a);d._scheduleOpen(this,f,{x:a.pageX,y:a.pageY})}),l(a,c("keydown"),function(a){a.shiftKey&&a.keyCode==g.F10&&(j.stop(a),d._scheduleOpen(this,f))})]});h.connects=d?m(d):[];if(f)h.onloadHandler=a.hitch(this,function(){var a=this._iframeContentWindow(f);d=p.body(a.document);h.connects=m(d)}),f.addEventListener?f.addEventListener("load",h.onloadHandler,!1):f.attachEvent("onload",h.onloadHandler)},unBindDomNode:function(a){var b;try{b=e.byId(a,
+this.ownerDocument)}catch(d){return}a="_dijitMenu"+this.id;if(b&&c.has(b,a)){for(var g=c.get(b,a)-1,f=this._bindings[g],i;i=f.connects.pop();)i.remove();(i=f.iframe)&&(i.removeEventListener?i.removeEventListener("load",f.onloadHandler,!1):i.detachEvent("onload",f.onloadHandler));c.remove(b,a);delete this._bindings[g]}},_scheduleOpen:function(a,b,c){if(!this._openTimer)this._openTimer=this.defer(function(){delete this._openTimer;this._openMyself({target:a,iframe:b,coords:c})},1)},_openMyself:function(a){function c(){k.refocus&&
+o&&o.focus();n.close(k)}var g=a.target,f=a.iframe,a=a.coords;this.currentTarget=g;if(a){if(f){var g=i.position(f,!0),h=this._iframeContentWindow(f),h=i.docScroll(h.document),l=b.getComputedStyle(f),j=b.toPixelValue,m=(d("ie")&&d("quirks")?0:j(f,l.paddingLeft))+(d("ie")&&d("quirks")?j(f,l.borderLeftWidth):0),f=(d("ie")&&d("quirks")?0:j(f,l.paddingTop))+(d("ie")&&d("quirks")?j(f,l.borderTopWidth):0);a.x+=g.x+m-h.x;a.y+=g.y+f-h.y}}else a=i.position(g,!0),a.x+=10,a.y+=10;var k=this,f=this._focusManager.get("prevNode"),
+g=this._focusManager.get("curNode"),o=!g||e.isDescendant(g,this.domNode)?f:g;n.open({popup:this,x:a.x,y:a.y,onExecute:c,onCancel:c,orient:this.isLeftToRight()?"L":"R"});this.focus();this._onBlur=function(){this.inherited("_onBlur",arguments);n.close(this)}},destroy:function(){k.forEach(this._bindings,function(a){a&&this.unBindDomNode(a.node)},this);this.inherited(arguments)}})})},"dijit/DropDownMenu":function(){define("dojo/_base/declare,dojo/_base/event,dojo/keys,dojo/text!./templates/Menu.html,./_OnDijitClickMixin,./_MenuBase".split(","),
+function(f,k,h,j,e,c){return f("dijit.DropDownMenu",[c,e],{templateString:j,baseClass:"dijitMenu",postCreate:function(){this.inherited(arguments);var c=this.isLeftToRight();this._openSubMenuKey=c?h.RIGHT_ARROW:h.LEFT_ARROW;this._closeSubMenuKey=c?h.LEFT_ARROW:h.RIGHT_ARROW;this.connectKeyNavHandlers([h.UP_ARROW],[h.DOWN_ARROW])},_onKeyPress:function(c){if(!c.ctrlKey&&!c.altKey)switch(c.charOrCode){case this._openSubMenuKey:this._moveToPopup(c);k.stop(c);break;case this._closeSubMenuKey:if(this.parentMenu)if(this.parentMenu._isMenuBar)this.parentMenu.focusPrev();
+else this.onCancel(!1);else k.stop(c)}}})})},"url:dijit/templates/Menu.html":'<table class="dijit dijitMenu dijitMenuPassive dijitReset dijitMenuTable" role="menu" tabIndex="${tabIndex}"\n\t data-dojo-attach-event="onkeypress:_onKeyPress" cellspacing="0">\n\t<tbody class="dijitReset" data-dojo-attach-point="containerNode"></tbody>\n</table>\n',"dijit/Toolbar":function(){define("require,dojo/_base/declare,dojo/has,dojo/keys,dojo/ready,./_Widget,./_KeyNavContainer,./_TemplatedMixin".split(","),function(f,
+k,h,j,e,c,i,b){h("dijit-legacy-requires")&&e(0,function(){f(["dijit/ToolbarSeparator"])});return k("dijit.Toolbar",[c,b,i],{templateString:'<div class="dijit" role="toolbar" tabIndex="${tabIndex}" data-dojo-attach-point="containerNode"></div>',baseClass:"dijitToolbar",postCreate:function(){this.inherited(arguments);this.connectKeyNavHandlers(this.isLeftToRight()?[j.LEFT_ARROW]:[j.RIGHT_ARROW],this.isLeftToRight()?[j.RIGHT_ARROW]:[j.LEFT_ARROW])}})})},"dijit/Dialog":function(){define("require,dojo/_base/array,dojo/_base/connect,dojo/_base/declare,dojo/_base/Deferred,dojo/dom,dojo/dom-class,dojo/dom-geometry,dojo/dom-style,dojo/_base/event,dojo/_base/fx,dojo/i18n,dojo/keys,dojo/_base/lang,dojo/on,dojo/ready,dojo/sniff,dojo/window,dojo/dnd/Moveable,dojo/dnd/TimedMoveable,./focus,./_base/manager,./_Widget,./_TemplatedMixin,./_CssStateMixin,./form/_FormMixin,./_DialogMixin,./DialogUnderlay,./layout/ContentPane,dojo/text!./templates/Dialog.html,./main,dojo/i18n!./nls/common".split(","),
+function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o,r,q,v,s,t,u,y,z,I,J,N,E,S,Q,B){var u=j("dijit._DialogBase",[z,J,N,I],{templateString:Q,baseClass:"dijitDialog",cssStateNodes:{closeButtonNode:"dijitDialogCloseIcon"},_setTitleAttr:[{node:"titleNode",type:"innerHTML"},{node:"titleBar",type:"attribute"}],open:!1,duration:u.defaultDuration,refocus:!0,autofocus:!0,_firstFocusItem:null,_lastFocusItem:null,doLayout:!1,draggable:!0,_setDraggableAttr:function(a){this._set("draggable",a)},"aria-describedby":"",maxRatio:0.9,
+postMixInProperties:function(){var a=d.getLocalization("dijit","common");m.mixin(this,a);this.inherited(arguments)},postCreate:function(){g.set(this.domNode,{display:"none",position:"absolute"});this.ownerDocumentBody.appendChild(this.domNode);this.inherited(arguments);this.connect(this,"onExecute","hide");this.connect(this,"onCancel","hide");this._modalconnects=[]},onLoad:function(){this._position();this.autofocus&&w.isTop(this)&&(this._getFocusItems(this.domNode),t.focus(this._firstFocusItem));
+this.inherited(arguments)},_endDrag:function(){var a=b.position(this.domNode),c=q.getBox(this.ownerDocument);a.y=Math.min(Math.max(a.y,0),c.h-a.h);a.x=Math.min(Math.max(a.x,0),c.w-a.w);this._relativePosition=a;this._position()},_setup:function(){var a=this.domNode;this.titleBar&&this.draggable?(this._moveable=new (6==r("ie")?s:v)(a,{handle:this.titleBar}),this.connect(this._moveable,"onMoveStop","_endDrag")):i.add(a,"dijitDialogFixed");this.underlayAttrs={dialogId:this.id,"class":k.map(this["class"].split(/\s/),
+function(a){return a+"_underlay"}).join(" "),ownerDocument:this.ownerDocument}},_size:function(){this._checkIfSingleChild();if(this._singleChild){if("undefined"!=typeof this._singleChildOriginalStyle)this._singleChild.domNode.style.cssText=this._singleChildOriginalStyle,delete this._singleChildOriginalStyle}else g.set(this.containerNode,{width:"auto",height:"auto"});var a=b.position(this.domNode),c=q.getBox(this.ownerDocument);c.w*=this.maxRatio;c.h*=this.maxRatio;if(a.w>=c.w||a.h>=c.h){var d=b.position(this.containerNode),
+e=Math.min(a.w,c.w)-(a.w-d.w),a=Math.min(a.h,c.h)-(a.h-d.h);if(this._singleChild&&this._singleChild.resize){if("undefined"==typeof this._singleChildOriginalStyle)this._singleChildOriginalStyle=this._singleChild.domNode.style.cssText;this._singleChild.resize({w:e,h:a})}else g.set(this.containerNode,{width:e+"px",height:a+"px",overflow:"auto",position:"relative"})}else this._singleChild&&this._singleChild.resize&&this._singleChild.resize()},_position:function(){if(!i.contains(this.ownerDocumentBody,
+"dojoMove")){var a=this.domNode,c=q.getBox(this.ownerDocument),d=this._relativePosition,e=d?null:b.position(a);g.set(a,{left:Math.floor(c.l+(d?d.x:(c.w-e.w)/2))+"px",top:Math.floor(c.t+(d?d.y:(c.h-e.h)/2))+"px"})}},_onKey:function(b){if(b.charOrCode){var c=b.target;b.charOrCode===p.TAB&&this._getFocusItems(this.domNode);var d=this._firstFocusItem==this._lastFocusItem;if(c==this._firstFocusItem&&b.shiftKey&&b.charOrCode===p.TAB)d||t.focus(this._lastFocusItem),a.stop(b);else if(c==this._lastFocusItem&&
+b.charOrCode===p.TAB&&!b.shiftKey)d||t.focus(this._firstFocusItem),a.stop(b);else{for(;c;){if(c==this.domNode||i.contains(c,"dijitPopup"))if(b.charOrCode==p.ESCAPE)this.onCancel();else return;c=c.parentNode}if(b.charOrCode!==p.TAB)a.stop(b);else if(!r("opera"))try{this._firstFocusItem.focus()}catch(g){}}}},show:function(){if(!this.open){this._started||this.startup();if(!this._alreadyInitialized)this._setup(),this._alreadyInitialized=!0;this._fadeOutDeferred&&this._fadeOutDeferred.cancel();var a=q.get(this.ownerDocument);
+this._modalconnects.push(n(a,"scroll",m.hitch(this,"resize")));this._modalconnects.push(n(this.domNode,h._keypress,m.hitch(this,"_onKey")));g.set(this.domNode,{opacity:0,display:""});this._set("open",!0);this._onShow();this._size();this._position();var b;this._fadeInDeferred=new e(m.hitch(this,function(){b.stop();delete this._fadeInDeferred}));b=l.fadeIn({node:this.domNode,duration:this.duration,beforeBegin:m.hitch(this,function(){w.show(this,this.underlayAttrs)}),onEnd:m.hitch(this,function(){this.autofocus&&
+w.isTop(this)&&(this._getFocusItems(this.domNode),t.focus(this._firstFocusItem));this._fadeInDeferred.resolve(!0);delete this._fadeInDeferred})}).play();return this._fadeInDeferred}},hide:function(){if(this._alreadyInitialized&&this.open){this._fadeInDeferred&&this._fadeInDeferred.cancel();var a;this._fadeOutDeferred=new e(m.hitch(this,function(){a.stop();delete this._fadeOutDeferred}));this._fadeOutDeferred.then(m.hitch(this,"onHide"));a=l.fadeOut({node:this.domNode,duration:this.duration,onEnd:m.hitch(this,
function(){this.domNode.style.display="none";w.hide(this);this._fadeOutDeferred.resolve(!0);delete this._fadeOutDeferred})}).play();if(this._scrollConnected)this._scrollConnected=!1;for(var b;b=this._modalconnects.pop();)b.remove();this._relativePosition&&delete this._relativePosition;this._set("open",!1);return this._fadeOutDeferred}},resize:function(){"none"!=this.domNode.style.display&&(E._singleton&&E._singleton.layout(),this._position(),this._size())},destroy:function(){this._fadeInDeferred&&
-this._fadeInDeferred.cancel();this._fadeOutDeferred&&this._fadeOutDeferred.cancel();this._moveable&&this._moveable.destroy();for(var a;a=this._modalconnects.pop();)a.remove();w.hide(this);this.inherited(arguments)}}),A=l("dijit.Dialog",[S,t],{});A._DialogBase=t;var w=A._DialogLevelManager={_beginZIndex:950,show:function(a,b){x[x.length-1].focus=u.curNode;var c=E._singleton;!c||c._destroyed?c=B._underlay=E._singleton=new E(b):c.set(a.underlayAttrs);var d=x[x.length-1].dialog?x[x.length-1].zIndex+2:
-A._DialogLevelManager._beginZIndex;1==x.length&&c.show();f.set(E._singleton.domNode,"zIndex",d-1);f.set(a.domNode,"zIndex",d);x.push({dialog:a,underlayAttrs:b,zIndex:d})},hide:function(a){if(x[x.length-1].dialog==a){x.pop();var b=x[x.length-1];E._singleton._destroyed||(1==x.length?E._singleton.hide():(f.set(E._singleton.domNode,"zIndex",b.zIndex-1),E._singleton.set(b.underlayAttrs)));if(a.refocus){a=b.focus;if(b.dialog&&(!a||!g.isDescendant(a,b.dialog.domNode)))b.dialog._getFocusItems(b.dialog.domNode),
-a=b.dialog._firstFocusItem;if(a)try{a.focus()}catch(c){}}}else b=j.indexOf(j.map(x,function(a){return a.dialog}),a),-1!=b&&x.splice(b,1)},isTop:function(a){return x[x.length-1].dialog==a}},x=A._dialogStack=[{dialog:null,focus:null,underlayAttrs:null}];r("dijit-legacy-requires")&&o(0,function(){e(["dijit/TooltipDialog"])});return A})},"dojo/dnd/Moveable":function(){define("../_base/array,../_base/declare,../_base/event,../_base/lang,../dom,../dom-class,../Evented,../on,../topic,../touch,./common,./Mover,../_base/window".split(","),
-function(e,j,i,l,c,g,h,b,f,a,k,d,p){return j("dojo.dnd.Moveable",[h],{handle:"",delay:0,skip:!1,constructor:function(f,g){this.node=c.byId(f);g||(g={});this.handle=g.handle?c.byId(g.handle):null;if(!this.handle)this.handle=this.node;this.delay=0<g.delay?g.delay:0;this.skip=g.skip;this.mover=g.mover?g.mover:d;this.events=[b(this.handle,a.press,l.hitch(this,"onMouseDown")),b(this.handle,"dragstart",l.hitch(this,"onSelectStart")),b(this.handle,"selectstart",l.hitch(this,"onSelectStart"))]},markupFactory:function(a,
-b,c){return new c(b,a)},destroy:function(){e.forEach(this.events,function(a){a.remove()});this.events=this.node=this.handle=null},onMouseDown:function(c){if(!this.skip||!k.isFormElement(c)){if(this.delay)this.events.push(b(this.handle,a.move,l.hitch(this,"onMouseMove")),b(this.handle,a.release,l.hitch(this,"onMouseUp"))),this._lastX=c.pageX,this._lastY=c.pageY;else this.onDragDetected(c);i.stop(c)}},onMouseMove:function(a){if(Math.abs(a.pageX-this._lastX)>this.delay||Math.abs(a.pageY-this._lastY)>
-this.delay)this.onMouseUp(a),this.onDragDetected(a);i.stop(a)},onMouseUp:function(a){for(var b=0;2>b;++b)this.events.pop().remove();i.stop(a)},onSelectStart:function(a){(!this.skip||!k.isFormElement(a))&&i.stop(a)},onDragDetected:function(a){new this.mover(this.node,a,this)},onMoveStart:function(a){f.publish("/dnd/move/start",a);g.add(p.body(),"dojoMove");g.add(this.node,"dojoMoveItem")},onMoveStop:function(a){f.publish("/dnd/move/stop",a);g.remove(p.body(),"dojoMove");g.remove(this.node,"dojoMoveItem")},
-onFirstMove:function(){},onMove:function(a,b){this.onMoving(a,b);var c=a.node.style;c.left=b.l+"px";c.top=b.t+"px";this.onMoved(a,b)},onMoving:function(){},onMoved:function(){}})})},"dojo/dnd/common":function(){define(["../_base/connect","../_base/kernel","../_base/lang","../dom"],function(e,j,i,l){var c={};c.getCopyKeyState=e.isCopyKey;c._uniqueId=0;c.getUniqueId=function(){var g;do g=j._scopeName+"Unique"+ ++c._uniqueId;while(l.byId(g));return g};c._empty={};c.isFormElement=function(c){c=c.target;
-if(3==c.nodeType)c=c.parentNode;return 0<=" button textarea input select option ".indexOf(" "+c.tagName.toLowerCase()+" ")};i.mixin(i.getObject("dojo.dnd",!0),c);return c})},"dojo/dnd/Mover":function(){define("../_base/array,../_base/declare,../_base/event,../_base/lang,../sniff,../_base/window,../dom,../dom-geometry,../dom-style,../Evented,../on,../touch,./common,./autoscroll".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p,m){return j("dojo.dnd.Mover",[a],{constructor:function(a,b,c){this.node=h.byId(a);
-this.marginBox={l:b.pageX,t:b.pageY};this.mouseButton=b.button;b=this.host=c;a=a.ownerDocument;this.events=[k(a,d.move,l.hitch(this,"onFirstMove")),k(a,d.move,l.hitch(this,"onMouseMove")),k(a,d.release,l.hitch(this,"onMouseUp")),k(a,"dragstart",i.stop),k(a.body,"selectstart",i.stop)];m.autoScrollStart(a);if(b&&b.onMoveStart)b.onMoveStart(this)},onMouseMove:function(a){m.autoScroll(a);var b=this.marginBox;this.host.onMove(this,{l:b.l+a.pageX,t:b.t+a.pageY},a);i.stop(a)},onMouseUp:function(a){(c("webkit")&&
-c("mac")&&2==this.mouseButton?0==a.button:this.mouseButton==a.button)&&this.destroy();i.stop(a)},onFirstMove:function(a){var c=this.node.style,d,e=this.host;switch(c.position){case "relative":case "absolute":d=Math.round(parseFloat(c.left))||0;c=Math.round(parseFloat(c.top))||0;break;default:c.position="absolute";c=b.getMarginBox(this.node);d=g.doc.body;var m=f.getComputedStyle(d),h=b.getMarginBox(d,m),m=b.getContentBox(d,m);d=c.l-(m.l-h.l);c=c.t-(m.t-h.t)}this.marginBox.l=d-this.marginBox.l;this.marginBox.t=
-c-this.marginBox.t;if(e&&e.onFirstMove)e.onFirstMove(this,a);this.events.shift().remove()},destroy:function(){e.forEach(this.events,function(a){a.remove()});var a=this.host;if(a&&a.onMoveStop)a.onMoveStop(this);this.events=this.node=this.host=null}})})},"dojo/dnd/autoscroll":function(){define("../_base/lang,../sniff,../_base/window,../dom-geometry,../dom-style,../window".split(","),function(e,j,i,l,c,g){var h={};e.setObject("dojo.dnd.autoscroll",h);h.getViewport=g.getBox;h.V_TRIGGER_AUTOSCROLL=32;
-h.H_TRIGGER_AUTOSCROLL=32;h.V_AUTOSCROLL_VALUE=16;h.H_AUTOSCROLL_VALUE=16;var b,f=i.doc,a=Infinity,k=Infinity;h.autoScrollStart=function(c){f=c;b=g.getBox(f);c=i.body(f).parentNode;a=Math.max(c.scrollHeight-b.h,0);k=Math.max(c.scrollWidth-b.w,0)};h.autoScroll=function(c){var e=b||g.getBox(f),m=i.body(f).parentNode,l=0,j=0;c.clientX<h.H_TRIGGER_AUTOSCROLL?l=-h.H_AUTOSCROLL_VALUE:c.clientX>e.w-h.H_TRIGGER_AUTOSCROLL&&(l=Math.min(h.H_AUTOSCROLL_VALUE,k-m.scrollLeft));c.clientY<h.V_TRIGGER_AUTOSCROLL?
-j=-h.V_AUTOSCROLL_VALUE:c.clientY>e.h-h.V_TRIGGER_AUTOSCROLL&&(j=Math.min(h.V_AUTOSCROLL_VALUE,a-m.scrollTop));window.scrollBy(l,j)};h._validNodes={div:1,p:1,td:1};h._validOverflow={auto:1,scroll:1};h.autoScrollNodes=function(a){for(var b,f,g,e,k,q,v=0,s=0,u=a.target;u;){if(1==u.nodeType&&u.tagName.toLowerCase()in h._validNodes){g=c.getComputedStyle(u);e=g.overflow.toLowerCase()in h._validOverflow;k=g.overflowX.toLowerCase()in h._validOverflow;q=g.overflowY.toLowerCase()in h._validOverflow;if(e||
-k||q)b=l.getContentBox(u,g),f=l.position(u,!0);if(e||k){g=Math.min(h.H_TRIGGER_AUTOSCROLL,b.w/2);k=a.pageX-f.x;if(j("webkit")||j("opera"))k+=i.body().scrollLeft;v=0;0<k&&k<b.w&&(k<g?v=-g:k>b.w-g&&(v=g),u.scrollLeft+=v)}if(e||q){e=Math.min(h.V_TRIGGER_AUTOSCROLL,b.h/2);q=a.pageY-f.y;if(j("webkit")||j("opera"))q+=i.body().scrollTop;s=0;0<q&&q<b.h&&(q<e?s=-e:q>b.h-e&&(s=e),u.scrollTop+=s)}if(v||s)return}try{u=u.parentNode}catch(t){u=null}}h.autoScroll(a)};return h})},"dojo/dnd/TimedMoveable":function(){define(["../_base/declare",
-"./Moveable"],function(e,j){var i=j.prototype.onMove;return e("dojo.dnd.TimedMoveable",j,{timeout:40,constructor:function(e,c){c||(c={});if(c.timeout&&"number"==typeof c.timeout&&0<=c.timeout)this.timeout=c.timeout},onMoveStop:function(e){e._timer&&(clearTimeout(e._timer),i.call(this,e,e._leftTop));j.prototype.onMoveStop.apply(this,arguments)},onMove:function(e,c){e._leftTop=c;if(!e._timer){var g=this;e._timer=setTimeout(function(){e._timer=null;i.call(g,e,e._leftTop)},this.timeout)}}})})},"dijit/_base/manager":function(){define(["dojo/_base/array",
-"dojo/_base/config","dojo/_base/lang","../registry","../main"],function(e,j,i,l,c){var g={};e.forEach("byId,getUniqueId,findWidgets,_destroyAll,byNode,getEnclosingWidget".split(","),function(c){g[c]=l[c]});i.mixin(g,{defaultDuration:j.defaultDuration||200});i.mixin(c,g);return c})},"dijit/_DialogMixin":function(){define(["dojo/_base/declare","./a11y"],function(e,j){return e("dijit._DialogMixin",null,{execute:function(){},onCancel:function(){},onExecute:function(){},_onSubmit:function(){this.onExecute();
-this.execute(this.get("value"))},_getFocusItems:function(){var e=j._getTabNavigable(this.containerNode);this._firstFocusItem=e.lowest||e.first||this.closeButtonNode||this.domNode;this._lastFocusItem=e.last||e.highest||this._firstFocusItem}})})},"dijit/DialogUnderlay":function(){define("dojo/_base/declare,dojo/dom-attr,dojo/window,./_Widget,./_TemplatedMixin,./BackgroundIframe".split(","),function(e,j,i,l,c,g){return e("dijit.DialogUnderlay",[l,c],{templateString:"<div class='dijitDialogUnderlayWrapper'><div class='dijitDialogUnderlay' data-dojo-attach-point='node'></div></div>",
-dialogId:"","class":"",_setDialogIdAttr:function(c){j.set(this.node,"id",c+"_underlay");this._set("dialogId",c)},_setClassAttr:function(c){this.node.className="dijitDialogUnderlay "+c;this._set("class",c)},postCreate:function(){this.ownerDocumentBody.appendChild(this.domNode)},layout:function(){var c=this.node.style,b=this.domNode.style;b.display="none";var f=i.getBox(this.ownerDocument);b.top=f.t+"px";b.left=f.l+"px";c.width=f.w+"px";c.height=f.h+"px";b.display="block"},show:function(){this.domNode.style.display=
-"block";this.layout();this.bgIframe=new g(this.domNode)},hide:function(){this.bgIframe.destroy();delete this.bgIframe;this.domNode.style.display="none"}})})},"url:dijit/templates/Dialog.html":'<div class="dijitDialog" role="dialog" aria-labelledby="${id}_title">\n\t<div data-dojo-attach-point="titleBar" class="dijitDialogTitleBar">\n\t\t<span data-dojo-attach-point="titleNode" class="dijitDialogTitle" id="${id}_title"\n\t\t\t\trole="header" level="1"></span>\n\t\t<span data-dojo-attach-point="closeButtonNode" class="dijitDialogCloseIcon" data-dojo-attach-event="ondijitclick: onCancel" title="${buttonCancel}" role="button" tabIndex="-1">\n\t\t\t<span data-dojo-attach-point="closeText" class="closeText" title="${buttonCancel}">x</span>\n\t\t</span>\n\t</div>\n\t<div data-dojo-attach-point="containerNode" class="dijitDialogPaneContent"></div>\n</div>\n',
-"dijit/layout/TabContainer":function(){define(["dojo/_base/lang","dojo/_base/declare","./_TabContainerBase","./TabController","./ScrollingTabController"],function(e,j,i,l,c){return j("dijit.layout.TabContainer",i,{useMenu:!0,useSlider:!0,controllerWidget:"",_makeController:function(c){var h=this.baseClass+"-tabs"+(this.doLayout?"":" dijitTabNoLayout");return new ("string"==typeof this.controllerWidget?e.getObject(this.controllerWidget):this.controllerWidget)({id:this.id+"_tablist",ownerDocument:this.ownerDocument,
-dir:this.dir,lang:this.lang,textDir:this.textDir,tabPosition:this.tabPosition,doLayout:this.doLayout,containerId:this.id,"class":h,nested:this.nested,useMenu:this.useMenu,useSlider:this.useSlider,tabStripClass:this.tabStrip?this.baseClass+(this.tabStrip?"":"No")+"Strip":null},c)},postMixInProperties:function(){this.inherited(arguments);if(!this.controllerWidget)this.controllerWidget=("top"==this.tabPosition||"bottom"==this.tabPosition)&&!this.nested?c:l}})})},"dijit/layout/_TabContainerBase":function(){define("dojo/text!./templates/TabContainer.html,./StackContainer,./utils,../_TemplatedMixin,dojo/_base/declare,dojo/dom-class,dojo/dom-geometry,dojo/dom-style".split(","),
-function(e,j,i,l,c,g,h,b){return c("dijit.layout._TabContainerBase",[j,l],{tabPosition:"top",baseClass:"dijitTabContainer",tabStrip:!1,nested:!1,templateString:e,postMixInProperties:function(){this.baseClass+=this.tabPosition.charAt(0).toUpperCase()+this.tabPosition.substr(1).replace(/-.*/,"");this.srcNodeRef&&b.set(this.srcNodeRef,"visibility","hidden");this.inherited(arguments)},buildRendering:function(){this.inherited(arguments);this.tablist=this._makeController(this.tablistNode);this.doLayout||
-g.add(this.domNode,"dijitTabContainerNoLayout");this.nested?(g.add(this.domNode,"dijitTabContainerNested"),g.add(this.tablist.containerNode,"dijitTabContainerTabListNested"),g.add(this.tablistSpacer,"dijitTabContainerSpacerNested"),g.add(this.containerNode,"dijitTabPaneWrapperNested")):g.add(this.domNode,"tabStrip-"+(this.tabStrip?"enabled":"disabled"))},_setupChild:function(b){g.add(b.domNode,"dijitTabPane");this.inherited(arguments)},startup:function(){this._started||(this.tablist.startup(),this.inherited(arguments))},
-layout:function(){if(this._contentBox&&"undefined"!=typeof this._contentBox.l){var b=this.selectedChildWidget;if(this.doLayout){var a=this.tabPosition.replace(/-h/,"");this.tablist.layoutAlign=a;a=[this.tablist,{domNode:this.tablistSpacer,layoutAlign:a},{domNode:this.containerNode,layoutAlign:"client"}];i.layoutChildren(this.domNode,this._contentBox,a);this._containerContentBox=i.marginBox2contentBox(this.containerNode,a[2]);b&&b.resize&&b.resize(this._containerContentBox)}else{if(this.tablist.resize){a=
-this.tablist.domNode.style;a.width="0";var c=h.getContentBox(this.domNode).w;a.width="";this.tablist.resize({w:c})}b&&b.resize&&b.resize()}}},destroy:function(){this.tablist&&this.tablist.destroy();this.inherited(arguments)}})})},"url:dijit/layout/templates/TabContainer.html":'<div class="dijitTabContainer">\n\t<div class="dijitTabListWrapper" data-dojo-attach-point="tablistNode"></div>\n\t<div data-dojo-attach-point="tablistSpacer" class="dijitTabSpacer ${baseClass}-spacer"></div>\n\t<div class="dijitTabPaneWrapper ${baseClass}-container" data-dojo-attach-point="containerNode"></div>\n</div>\n',
-"dijit/layout/StackContainer":function(){define("dojo/_base/array,dojo/cookie,dojo/_base/declare,dojo/dom-class,dojo/has,dojo/_base/lang,dojo/ready,dojo/topic,../registry,../_WidgetBase,./_LayoutWidget,dojo/i18n!../nls/common".split(","),function(e,j,i,l,c,g,h,b,f,a,k){c("dijit-legacy-requires")&&h(0,function(){require(["dijit/layout/StackController"])});i=i("dijit.layout.StackContainer",k,{doLayout:!0,persist:!1,baseClass:"dijitStackContainer",buildRendering:function(){this.inherited(arguments);
-l.add(this.domNode,"dijitLayoutContainer");this.containerNode.setAttribute("role","tabpanel")},postCreate:function(){this.inherited(arguments);this.connect(this.domNode,"onkeypress",this._onKeyPress)},startup:function(){if(!this._started){var a=this.getChildren();e.forEach(a,this._setupChild,this);this.persist?this.selectedChildWidget=f.byId(j(this.id+"_selectedChild")):e.some(a,function(a){if(a.selected)this.selectedChildWidget=a;return a.selected},this);var c=this.selectedChildWidget;if(!c&&a[0])c=
-this.selectedChildWidget=a[0],c.selected=!0;b.publish(this.id+"-startup",{children:a,selected:c});this.inherited(arguments)}},resize:function(){if(!this._hasBeenShown){this._hasBeenShown=!0;var a=this.selectedChildWidget;a&&this._showChild(a)}this.inherited(arguments)},_setupChild:function(a){this.inherited(arguments);l.replace(a.domNode,"dijitHidden","dijitVisible");a.domNode.title=""},addChild:function(a,c){this.inherited(arguments);this._started&&(b.publish(this.id+"-addChild",a,c),this.layout(),
-this.selectedChildWidget||this.selectChild(a))},removeChild:function(a){this.inherited(arguments);this._started&&b.publish(this.id+"-removeChild",a);if(!this._descendantsBeingDestroyed){if(this.selectedChildWidget===a&&(this.selectedChildWidget=void 0,this._started)){var c=this.getChildren();c.length&&this.selectChild(c[0])}this._started&&this.layout()}},selectChild:function(a,c){a=f.byId(a);if(this.selectedChildWidget!=a){var g=this._transition(a,this.selectedChildWidget,c);this._set("selectedChildWidget",
-a);b.publish(this.id+"-selectChild",a);this.persist&&j(this.id+"_selectedChild",this.selectedChildWidget.id)}return g},_transition:function(a,b){b&&this._hideChild(b);var c=this._showChild(a);a.resize&&(this.doLayout?a.resize(this._containerContentBox||this._contentBox):a.resize());return c},_adjacent:function(a){var b=this.getChildren(),c=e.indexOf(b,this.selectedChildWidget),c=c+(a?1:b.length-1);return b[c%b.length]},forward:function(){return this.selectChild(this._adjacent(!0),!0)},back:function(){return this.selectChild(this._adjacent(!1),
-!0)},_onKeyPress:function(a){b.publish(this.id+"-containerKeyPress",{e:a,page:this})},layout:function(){var a=this.selectedChildWidget;a&&a.resize&&(this.doLayout?a.resize(this._containerContentBox||this._contentBox):a.resize())},_showChild:function(a){var b=this.getChildren();a.isFirstChild=a==b[0];a.isLastChild=a==b[b.length-1];a._set("selected",!0);l.replace(a.domNode,"dijitVisible","dijitHidden");return a._onShow&&a._onShow()||!0},_hideChild:function(a){a._set("selected",!1);l.replace(a.domNode,
-"dijitHidden","dijitVisible");a.onHide&&a.onHide()},closeChild:function(a){a.onClose(this,a)&&(this.removeChild(a),a.destroyRecursive())},destroyDescendants:function(a){this._descendantsBeingDestroyed=!0;this.selectedChildWidget=void 0;e.forEach(this.getChildren(),function(b){a||this.removeChild(b);b.destroyRecursive(a)},this);this._descendantsBeingDestroyed=!1}});i.ChildWidgetProperties={selected:!1,disabled:!1,closable:!1,iconClass:"dijitNoIcon",showTitle:!0};g.extend(a,i.ChildWidgetProperties);
-return i})},"dijit/layout/TabController":function(){define("dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-class,dojo/i18n,dojo/_base/lang,./StackController,../registry,../Menu,../MenuItem,dojo/text!./templates/_TabButton.html,dojo/i18n!../nls/common".split(","),function(e,j,i,l,c,g,h,b,f,a,k){k=e("dijit.layout._TabButton",h.StackButton,{baseClass:"dijitTab",cssStateNodes:{closeNode:"dijitTabCloseButton"},templateString:k,scrollOnFocus:!1,buildRendering:function(){this.inherited(arguments);j.setSelectable(this.containerNode,
-!1)},startup:function(){this.inherited(arguments);var a=this.domNode;this.defer(function(){a.className=a.className},1)},_setCloseButtonAttr:function(a){this._set("closeButton",a);l.toggle(this.domNode,"dijitClosable",a);this.closeNode.style.display=a?"":"none";a&&(a=c.getLocalization("dijit","common"),this.closeNode&&i.set(this.closeNode,"title",a.itemClose))},_setDisabledAttr:function(a){this.inherited(arguments);if(this.closeNode)if(a)i.remove(this.closeNode,"title");else{var b=c.getLocalization("dijit",
-"common");i.set(this.closeNode,"title",b.itemClose)}},_setLabelAttr:function(a){this.inherited(arguments);if(!this.showLabel&&!this.params.title)this.iconNode.alt=g.trim(this.containerNode.innerText||this.containerNode.textContent||"")}});e=e("dijit.layout.TabController",h,{baseClass:"dijitTabController",templateString:"<div role='tablist' data-dojo-attach-event='onkeypress:onkeypress'></div>",tabPosition:"top",buttonWidget:k,buttonWidgetCloseClass:"dijitTabCloseButton",postCreate:function(){this.inherited(arguments);
-var d=new f({id:this.id+"_Menu",ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir,targetNodeIds:[this.domNode],selector:function(a){return l.contains(a,"dijitClosable")&&!l.contains(a,"dijitTabDisabled")}});this.own(d);var g=c.getLocalization("dijit","common"),e=this;d.addChild(new a({label:g.itemClose,ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir,onClick:function(){var a=b.byNode(this.getParent().currentTarget);e.onCloseButtonClick(a.page)}}))}});
-e.TabButton=k;return e})},"dijit/layout/StackController":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom-class,dojo/_base/event,dojo/keys,dojo/_base/lang,dojo/on,../focus,../registry,../_Widget,../_TemplatedMixin,../_Container,../form/ToggleButton,dojo/i18n!../nls/common".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p){p=j("dijit.layout._StackButton",p,{tabIndex:"-1",closeButton:!1,_aria_attr:"aria-selected",buildRendering:function(a){this.inherited(arguments);(this.focusNode||this.domNode).setAttribute("role",
-"tab")}});j=j("dijit.layout.StackController",[a,k,d],{baseClass:"dijitStackController",templateString:"<span role='tablist' data-dojo-attach-event='onkeypress'></span>",containerId:"",buttonWidget:p,buttonWidgetCloseClass:"dijitStackCloseButton",constructor:function(){this.pane2button={}},postCreate:function(){this.inherited(arguments);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");this.connect(this.containerNode,"click",function(a){var b=f.getEnclosingWidget(a.target);if(b!=this.containerNode&&!b.disabled&&b.page)for(a=a.target;a!==this.containerNode;a=a.parentNode)if(i.contains(a,this.buttonWidgetCloseClass)){this.onCloseButtonClick(b.page);break}else if(a==b.domNode){this.onButtonClick(b.page);break}})},onStartup:function(a){e.forEach(a.children,
-this.onAddChild,this);if(a.selected)this.onSelectChild(a.selected);var b=f.byId(this.containerId).containerNode,c=this.pane2button,a={title:"label",showtitle:"showLabel",iconclass:"iconClass",closable:"closeButton",tooltip:"title",disabled:"disabled"},d=function(a,d){return h(b,"attrmodified-"+a,function(a){var b=c[a.detail&&a.detail.widget&&a.detail.widget.id];b&&b.set(d,a.detail.newValue)})},g;for(g in a)this.own(d(g,a[g]))},destroy:function(){for(var a in this.pane2button)this.onRemoveChild(f.byId(a));
-this.inherited(arguments)},onAddChild:function(a,b){var c=new (g.isString(this.buttonWidget)?g.getObject(this.buttonWidget):this.buttonWidget)({id:this.id+"_"+a.id,name:this.id+"_"+a.id,label:a.title,disabled:a.disabled,ownerDocument:this.ownerDocument,dir:a.dir,lang:a.lang,textDir:a.textDir,showLabel:a.showTitle,iconClass:a.iconClass,closeButton:a.closable,title:a.tooltip,page:a});this.addChild(c,b);this.pane2button[a.id]=c;a.controlButton=c;if(!this._currentChild)this.onSelectChild(a)},onRemoveChild:function(a){if(this._currentChild===
-a)this._currentChild=null;var b=this.pane2button[a.id];b&&(this.removeChild(b),delete this.pane2button[a.id],b.destroy());delete a.controlButton},onSelectChild:function(a){if(a){if(this._currentChild){var b=this.pane2button[this._currentChild.id];b.set("checked",!1);b.focusNode.setAttribute("tabIndex","-1")}b=this.pane2button[a.id];b.set("checked",!0);this._currentChild=a;b.focusNode.setAttribute("tabIndex","0");f.byId(this.containerId).containerNode.setAttribute("aria-labelledby",b.id)}},onButtonClick:function(a){var c=
-this.pane2button[a.id];b.focus(c.focusNode);this._currentChild&&this._currentChild.id===a.id&&c.set("checked",!0);f.byId(this.containerId).selectChild(a)},onCloseButtonClick:function(a){f.byId(this.containerId).closeChild(a);this._currentChild&&(a=this.pane2button[this._currentChild.id])&&b.focus(a.focusNode||a.domNode)},adjacent:function(a){if(!this.isLeftToRight()&&(!this.tabPosition||/top|bottom/.test(this.tabPosition)))a=!a;var b=this.getChildren(),c=e.indexOf(b,this.pane2button[this._currentChild.id]),
-d=b[c],f;do c=(c+(a?1:b.length-1))%b.length,f=b[c];while(f.disabled&&f!=d);return f},onkeypress:function(a){if(!this.disabled&&!a.altKey){var b=null;if(a.ctrlKey||!a._djpage){switch(a.charOrCode){case c.LEFT_ARROW:case c.UP_ARROW:a._djpage||(b=!1);break;case c.PAGE_UP:a.ctrlKey&&(b=!1);break;case c.RIGHT_ARROW:case c.DOWN_ARROW:a._djpage||(b=!0);break;case c.PAGE_DOWN:a.ctrlKey&&(b=!0);break;case c.HOME:for(var d=this.getChildren(),f=0;f<d.length;f++){var g=d[f];if(!g.disabled){this.onButtonClick(g.page);
-break}}l.stop(a);break;case c.END:d=this.getChildren();for(f=d.length-1;0<=f;f--)if(g=d[f],!g.disabled){this.onButtonClick(g.page);break}l.stop(a);break;case c.DELETE:if(this._currentChild.closable)this.onCloseButtonClick(this._currentChild);l.stop(a);break;default:if(a.ctrlKey)if(a.charOrCode===c.TAB)this.onButtonClick(this.adjacent(!a.shiftKey).page),l.stop(a);else if("w"==a.charOrCode){if(this._currentChild.closable)this.onCloseButtonClick(this._currentChild);l.stop(a)}}null!==b&&(this.onButtonClick(this.adjacent(b).page),
-l.stop(a))}}},onContainerKeyPress:function(a){a.e._djpage=a.page;this.onkeypress(a.e)}});j.StackButton=p;return j})},"dijit/form/ToggleButton":function(){define(["dojo/_base/declare","dojo/_base/kernel","./Button","./_ToggleButtonMixin"],function(e,j,i,l){return e("dijit.form.ToggleButton",[i,l],{baseClass:"dijitToggleButton",setChecked:function(c){j.deprecated("setChecked("+c+") is deprecated. Use set('checked',"+c+") instead.","","2.0");this.set("checked",c)}})})},"dijit/form/_ToggleButtonMixin":function(){define(["dojo/_base/declare",
-"dojo/dom-attr"],function(e,j){return e("dijit.form._ToggleButtonMixin",null,{checked:!1,_aria_attr:"aria-pressed",_onClick:function(e){var l=this.checked;this._set("checked",!l);var c=this.inherited(arguments);this.set("checked",c?this.checked:l);return c},_setCheckedAttr:function(e,l){this._set("checked",e);j.set(this.focusNode||this.domNode,"checked",e);(this.focusNode||this.domNode).setAttribute(this._aria_attr,e?"true":"false");this._handleOnChange(e,l)},reset:function(){this._hasBeenBlurred=
+this._fadeInDeferred.cancel();this._fadeOutDeferred&&this._fadeOutDeferred.cancel();this._moveable&&this._moveable.destroy();for(var a;a=this._modalconnects.pop();)a.remove();w.hide(this);this.inherited(arguments)}}),A=j("dijit.Dialog",[S,u],{});A._DialogBase=u;var w=A._DialogLevelManager={_beginZIndex:950,show:function(a,b){x[x.length-1].focus=t.curNode;var c=E._singleton;!c||c._destroyed?c=B._underlay=E._singleton=new E(b):c.set(a.underlayAttrs);var d=x[x.length-1].dialog?x[x.length-1].zIndex+2:
+A._DialogLevelManager._beginZIndex;1==x.length&&c.show();g.set(E._singleton.domNode,"zIndex",d-1);g.set(a.domNode,"zIndex",d);x.push({dialog:a,underlayAttrs:b,zIndex:d})},hide:function(a){if(x[x.length-1].dialog==a){x.pop();var b=x[x.length-1];E._singleton._destroyed||(1==x.length?E._singleton.hide():(g.set(E._singleton.domNode,"zIndex",b.zIndex-1),E._singleton.set(b.underlayAttrs)));if(a.refocus){a=b.focus;if(b.dialog&&(!a||!c.isDescendant(a,b.dialog.domNode)))b.dialog._getFocusItems(b.dialog.domNode),
+a=b.dialog._firstFocusItem;if(a)try{a.focus()}catch(d){}}}else b=k.indexOf(k.map(x,function(a){return a.dialog}),a),-1!=b&&x.splice(b,1)},isTop:function(a){return x[x.length-1].dialog==a}},x=A._dialogStack=[{dialog:null,focus:null,underlayAttrs:null}];r("dijit-legacy-requires")&&o(0,function(){f(["dijit/TooltipDialog"])});return A})},"dojo/dnd/Moveable":function(){define("../_base/array,../_base/declare,../_base/event,../_base/lang,../dom,../dom-class,../Evented,../on,../topic,../touch,./common,./Mover,../_base/window".split(","),
+function(f,k,h,j,e,c,i,b,g,a,l,d,p){return k("dojo.dnd.Moveable",[i],{handle:"",delay:0,skip:!1,constructor:function(c,g){this.node=e.byId(c);g||(g={});this.handle=g.handle?e.byId(g.handle):null;if(!this.handle)this.handle=this.node;this.delay=0<g.delay?g.delay:0;this.skip=g.skip;this.mover=g.mover?g.mover:d;this.events=[b(this.handle,a.press,j.hitch(this,"onMouseDown")),b(this.handle,"dragstart",j.hitch(this,"onSelectStart")),b(this.handle,"selectstart",j.hitch(this,"onSelectStart"))]},markupFactory:function(a,
+b,c){return new c(b,a)},destroy:function(){f.forEach(this.events,function(a){a.remove()});this.events=this.node=this.handle=null},onMouseDown:function(c){if(!this.skip||!l.isFormElement(c)){if(this.delay)this.events.push(b(this.handle,a.move,j.hitch(this,"onMouseMove")),b(this.handle,a.release,j.hitch(this,"onMouseUp"))),this._lastX=c.pageX,this._lastY=c.pageY;else this.onDragDetected(c);h.stop(c)}},onMouseMove:function(a){if(Math.abs(a.pageX-this._lastX)>this.delay||Math.abs(a.pageY-this._lastY)>
+this.delay)this.onMouseUp(a),this.onDragDetected(a);h.stop(a)},onMouseUp:function(a){for(var b=0;2>b;++b)this.events.pop().remove();h.stop(a)},onSelectStart:function(a){(!this.skip||!l.isFormElement(a))&&h.stop(a)},onDragDetected:function(a){new this.mover(this.node,a,this)},onMoveStart:function(a){g.publish("/dnd/move/start",a);c.add(p.body(),"dojoMove");c.add(this.node,"dojoMoveItem")},onMoveStop:function(a){g.publish("/dnd/move/stop",a);c.remove(p.body(),"dojoMove");c.remove(this.node,"dojoMoveItem")},
+onFirstMove:function(){},onMove:function(a,b){this.onMoving(a,b);var c=a.node.style;c.left=b.l+"px";c.top=b.t+"px";this.onMoved(a,b)},onMoving:function(){},onMoved:function(){}})})},"dojo/dnd/common":function(){define(["../_base/connect","../_base/kernel","../_base/lang","../dom"],function(f,k,h,j){var e={};e.getCopyKeyState=f.isCopyKey;e._uniqueId=0;e.getUniqueId=function(){var c;do c=k._scopeName+"Unique"+ ++e._uniqueId;while(j.byId(c));return c};e._empty={};e.isFormElement=function(c){c=c.target;
+if(3==c.nodeType)c=c.parentNode;return 0<=" button textarea input select option ".indexOf(" "+c.tagName.toLowerCase()+" ")};h.mixin(h.getObject("dojo.dnd",!0),e);return e})},"dojo/dnd/Mover":function(){define("../_base/array,../_base/declare,../_base/event,../_base/lang,../sniff,../_base/window,../dom,../dom-geometry,../dom-style,../Evented,../on,../touch,./common,./autoscroll".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,p,m){return k("dojo.dnd.Mover",[a],{constructor:function(a,b,c){this.node=i.byId(a);
+this.marginBox={l:b.pageX,t:b.pageY};this.mouseButton=b.button;b=this.host=c;a=a.ownerDocument;this.events=[l(a,d.move,j.hitch(this,"onFirstMove")),l(a,d.move,j.hitch(this,"onMouseMove")),l(a,d.release,j.hitch(this,"onMouseUp")),l(a,"dragstart",h.stop),l(a.body,"selectstart",h.stop)];m.autoScrollStart(a);if(b&&b.onMoveStart)b.onMoveStart(this)},onMouseMove:function(a){m.autoScroll(a);var b=this.marginBox;this.host.onMove(this,{l:b.l+a.pageX,t:b.t+a.pageY},a);h.stop(a)},onMouseUp:function(a){(e("webkit")&&
+e("mac")&&2==this.mouseButton?0==a.button:this.mouseButton==a.button)&&this.destroy();h.stop(a)},onFirstMove:function(a){var d=this.node.style,e,f=this.host;switch(d.position){case "relative":case "absolute":e=Math.round(parseFloat(d.left))||0;d=Math.round(parseFloat(d.top))||0;break;default:d.position="absolute";d=b.getMarginBox(this.node);e=c.doc.body;var i=g.getComputedStyle(e),h=b.getMarginBox(e,i),i=b.getContentBox(e,i);e=d.l-(i.l-h.l);d=d.t-(i.t-h.t)}this.marginBox.l=e-this.marginBox.l;this.marginBox.t=
+d-this.marginBox.t;if(f&&f.onFirstMove)f.onFirstMove(this,a);this.events.shift().remove()},destroy:function(){f.forEach(this.events,function(a){a.remove()});var a=this.host;if(a&&a.onMoveStop)a.onMoveStop(this);this.events=this.node=this.host=null}})})},"dojo/dnd/autoscroll":function(){define("../_base/lang,../sniff,../_base/window,../dom-geometry,../dom-style,../window".split(","),function(f,k,h,j,e,c){var i={};f.setObject("dojo.dnd.autoscroll",i);i.getViewport=c.getBox;i.V_TRIGGER_AUTOSCROLL=32;
+i.H_TRIGGER_AUTOSCROLL=32;i.V_AUTOSCROLL_VALUE=16;i.H_AUTOSCROLL_VALUE=16;var b,g=h.doc,a=Infinity,l=Infinity;i.autoScrollStart=function(d){g=d;b=c.getBox(g);d=h.body(g).parentNode;a=Math.max(d.scrollHeight-b.h,0);l=Math.max(d.scrollWidth-b.w,0)};i.autoScroll=function(d){var e=b||c.getBox(g),f=h.body(g).parentNode,j=0,k=0;d.clientX<i.H_TRIGGER_AUTOSCROLL?j=-i.H_AUTOSCROLL_VALUE:d.clientX>e.w-i.H_TRIGGER_AUTOSCROLL&&(j=Math.min(i.H_AUTOSCROLL_VALUE,l-f.scrollLeft));d.clientY<i.V_TRIGGER_AUTOSCROLL?
+k=-i.V_AUTOSCROLL_VALUE:d.clientY>e.h-i.V_TRIGGER_AUTOSCROLL&&(k=Math.min(i.V_AUTOSCROLL_VALUE,a-f.scrollTop));window.scrollBy(j,k)};i._validNodes={div:1,p:1,td:1};i._validOverflow={auto:1,scroll:1};i.autoScrollNodes=function(a){for(var b,c,g,f,l,q,v=0,s=0,t=a.target;t;){if(1==t.nodeType&&t.tagName.toLowerCase()in i._validNodes){g=e.getComputedStyle(t);f=g.overflow.toLowerCase()in i._validOverflow;l=g.overflowX.toLowerCase()in i._validOverflow;q=g.overflowY.toLowerCase()in i._validOverflow;if(f||
+l||q)b=j.getContentBox(t,g),c=j.position(t,!0);if(f||l){g=Math.min(i.H_TRIGGER_AUTOSCROLL,b.w/2);l=a.pageX-c.x;if(k("webkit")||k("opera"))l+=h.body().scrollLeft;v=0;0<l&&l<b.w&&(l<g?v=-g:l>b.w-g&&(v=g),t.scrollLeft+=v)}if(f||q){f=Math.min(i.V_TRIGGER_AUTOSCROLL,b.h/2);q=a.pageY-c.y;if(k("webkit")||k("opera"))q+=h.body().scrollTop;s=0;0<q&&q<b.h&&(q<f?s=-f:q>b.h-f&&(s=f),t.scrollTop+=s)}if(v||s)return}try{t=t.parentNode}catch(u){t=null}}i.autoScroll(a)};return i})},"dojo/dnd/TimedMoveable":function(){define(["../_base/declare",
+"./Moveable"],function(f,k){var h=k.prototype.onMove;return f("dojo.dnd.TimedMoveable",k,{timeout:40,constructor:function(f,e){e||(e={});if(e.timeout&&"number"==typeof e.timeout&&0<=e.timeout)this.timeout=e.timeout},onMoveStop:function(f){f._timer&&(clearTimeout(f._timer),h.call(this,f,f._leftTop));k.prototype.onMoveStop.apply(this,arguments)},onMove:function(f,e){f._leftTop=e;if(!f._timer){var c=this;f._timer=setTimeout(function(){f._timer=null;h.call(c,f,f._leftTop)},this.timeout)}}})})},"dijit/_base/manager":function(){define(["dojo/_base/array",
+"dojo/_base/config","dojo/_base/lang","../registry","../main"],function(f,k,h,j,e){var c={};f.forEach("byId,getUniqueId,findWidgets,_destroyAll,byNode,getEnclosingWidget".split(","),function(e){c[e]=j[e]});h.mixin(c,{defaultDuration:k.defaultDuration||200});h.mixin(e,c);return e})},"dijit/_DialogMixin":function(){define(["dojo/_base/declare","./a11y"],function(f,k){return f("dijit._DialogMixin",null,{execute:function(){},onCancel:function(){},onExecute:function(){},_onSubmit:function(){this.onExecute();
+this.execute(this.get("value"))},_getFocusItems:function(){var f=k._getTabNavigable(this.containerNode);this._firstFocusItem=f.lowest||f.first||this.closeButtonNode||this.domNode;this._lastFocusItem=f.last||f.highest||this._firstFocusItem}})})},"dijit/DialogUnderlay":function(){define("dojo/_base/declare,dojo/dom-attr,dojo/window,./_Widget,./_TemplatedMixin,./BackgroundIframe".split(","),function(f,k,h,j,e,c){return f("dijit.DialogUnderlay",[j,e],{templateString:"<div class='dijitDialogUnderlayWrapper'><div class='dijitDialogUnderlay' data-dojo-attach-point='node'></div></div>",
+dialogId:"","class":"",_setDialogIdAttr:function(c){k.set(this.node,"id",c+"_underlay");this._set("dialogId",c)},_setClassAttr:function(c){this.node.className="dijitDialogUnderlay "+c;this._set("class",c)},postCreate:function(){this.ownerDocumentBody.appendChild(this.domNode)},layout:function(){var c=this.node.style,b=this.domNode.style;b.display="none";var g=h.getBox(this.ownerDocument);b.top=g.t+"px";b.left=g.l+"px";c.width=g.w+"px";c.height=g.h+"px";b.display="block"},show:function(){this.domNode.style.display=
+"block";this.layout();this.bgIframe=new c(this.domNode)},hide:function(){this.bgIframe.destroy();delete this.bgIframe;this.domNode.style.display="none"}})})},"url:dijit/templates/Dialog.html":'<div class="dijitDialog" role="dialog" aria-labelledby="${id}_title">\n\t<div data-dojo-attach-point="titleBar" class="dijitDialogTitleBar">\n\t\t<span data-dojo-attach-point="titleNode" class="dijitDialogTitle" id="${id}_title"\n\t\t\t\trole="header" level="1"></span>\n\t\t<span data-dojo-attach-point="closeButtonNode" class="dijitDialogCloseIcon" data-dojo-attach-event="ondijitclick: onCancel" title="${buttonCancel}" role="button" tabIndex="-1">\n\t\t\t<span data-dojo-attach-point="closeText" class="closeText" title="${buttonCancel}">x</span>\n\t\t</span>\n\t</div>\n\t<div data-dojo-attach-point="containerNode" class="dijitDialogPaneContent"></div>\n</div>\n',
+"dijit/layout/TabContainer":function(){define(["dojo/_base/lang","dojo/_base/declare","./_TabContainerBase","./TabController","./ScrollingTabController"],function(f,k,h,j,e){return k("dijit.layout.TabContainer",h,{useMenu:!0,useSlider:!0,controllerWidget:"",_makeController:function(c){var e=this.baseClass+"-tabs"+(this.doLayout?"":" dijitTabNoLayout");return new ("string"==typeof this.controllerWidget?f.getObject(this.controllerWidget):this.controllerWidget)({id:this.id+"_tablist",ownerDocument:this.ownerDocument,
+dir:this.dir,lang:this.lang,textDir:this.textDir,tabPosition:this.tabPosition,doLayout:this.doLayout,containerId:this.id,"class":e,nested:this.nested,useMenu:this.useMenu,useSlider:this.useSlider,tabStripClass:this.tabStrip?this.baseClass+(this.tabStrip?"":"No")+"Strip":null},c)},postMixInProperties:function(){this.inherited(arguments);if(!this.controllerWidget)this.controllerWidget=("top"==this.tabPosition||"bottom"==this.tabPosition)&&!this.nested?e:j}})})},"dijit/layout/_TabContainerBase":function(){define("dojo/text!./templates/TabContainer.html,./StackContainer,./utils,../_TemplatedMixin,dojo/_base/declare,dojo/dom-class,dojo/dom-geometry,dojo/dom-style".split(","),
+function(f,k,h,j,e,c,i,b){return e("dijit.layout._TabContainerBase",[k,j],{tabPosition:"top",baseClass:"dijitTabContainer",tabStrip:!1,nested:!1,templateString:f,postMixInProperties:function(){this.baseClass+=this.tabPosition.charAt(0).toUpperCase()+this.tabPosition.substr(1).replace(/-.*/,"");this.srcNodeRef&&b.set(this.srcNodeRef,"visibility","hidden");this.inherited(arguments)},buildRendering:function(){this.inherited(arguments);this.tablist=this._makeController(this.tablistNode);this.doLayout||
+c.add(this.domNode,"dijitTabContainerNoLayout");this.nested?(c.add(this.domNode,"dijitTabContainerNested"),c.add(this.tablist.containerNode,"dijitTabContainerTabListNested"),c.add(this.tablistSpacer,"dijitTabContainerSpacerNested"),c.add(this.containerNode,"dijitTabPaneWrapperNested")):c.add(this.domNode,"tabStrip-"+(this.tabStrip?"enabled":"disabled"))},_setupChild:function(b){c.add(b.domNode,"dijitTabPane");this.inherited(arguments)},startup:function(){this._started||(this.tablist.startup(),this.inherited(arguments))},
+layout:function(){if(this._contentBox&&"undefined"!=typeof this._contentBox.l){var b=this.selectedChildWidget;if(this.doLayout){var a=this.tabPosition.replace(/-h/,"");this.tablist.layoutAlign=a;a=[this.tablist,{domNode:this.tablistSpacer,layoutAlign:a},{domNode:this.containerNode,layoutAlign:"client"}];h.layoutChildren(this.domNode,this._contentBox,a);this._containerContentBox=h.marginBox2contentBox(this.containerNode,a[2]);b&&b.resize&&b.resize(this._containerContentBox)}else{if(this.tablist.resize){a=
+this.tablist.domNode.style;a.width="0";var c=i.getContentBox(this.domNode).w;a.width="";this.tablist.resize({w:c})}b&&b.resize&&b.resize()}}},destroy:function(){this.tablist&&this.tablist.destroy();this.inherited(arguments)}})})},"url:dijit/layout/templates/TabContainer.html":'<div class="dijitTabContainer">\n\t<div class="dijitTabListWrapper" data-dojo-attach-point="tablistNode"></div>\n\t<div data-dojo-attach-point="tablistSpacer" class="dijitTabSpacer ${baseClass}-spacer"></div>\n\t<div class="dijitTabPaneWrapper ${baseClass}-container" data-dojo-attach-point="containerNode"></div>\n</div>\n',
+"dijit/layout/StackContainer":function(){define("dojo/_base/array,dojo/cookie,dojo/_base/declare,dojo/dom-class,dojo/has,dojo/_base/lang,dojo/ready,dojo/topic,../registry,../_WidgetBase,./_LayoutWidget,dojo/i18n!../nls/common".split(","),function(f,k,h,j,e,c,i,b,g,a,l){e("dijit-legacy-requires")&&i(0,function(){require(["dijit/layout/StackController"])});h=h("dijit.layout.StackContainer",l,{doLayout:!0,persist:!1,baseClass:"dijitStackContainer",buildRendering:function(){this.inherited(arguments);
+j.add(this.domNode,"dijitLayoutContainer");this.containerNode.setAttribute("role","tabpanel")},postCreate:function(){this.inherited(arguments);this.connect(this.domNode,"onkeypress",this._onKeyPress)},startup:function(){if(!this._started){var a=this.getChildren();f.forEach(a,this._setupChild,this);this.persist?this.selectedChildWidget=g.byId(k(this.id+"_selectedChild")):f.some(a,function(a){if(a.selected)this.selectedChildWidget=a;return a.selected},this);var c=this.selectedChildWidget;if(!c&&a[0])c=
+this.selectedChildWidget=a[0],c.selected=!0;b.publish(this.id+"-startup",{children:a,selected:c});this.inherited(arguments)}},resize:function(){if(!this._hasBeenShown){this._hasBeenShown=!0;var a=this.selectedChildWidget;a&&this._showChild(a)}this.inherited(arguments)},_setupChild:function(a){this.inherited(arguments);j.replace(a.domNode,"dijitHidden","dijitVisible");a.domNode.title=""},addChild:function(a,c){this.inherited(arguments);this._started&&(b.publish(this.id+"-addChild",a,c),this.layout(),
+this.selectedChildWidget||this.selectChild(a))},removeChild:function(a){this.inherited(arguments);this._started&&b.publish(this.id+"-removeChild",a);if(!this._descendantsBeingDestroyed){if(this.selectedChildWidget===a&&(this.selectedChildWidget=void 0,this._started)){var c=this.getChildren();c.length&&this.selectChild(c[0])}this._started&&this.layout()}},selectChild:function(a,c){a=g.byId(a);if(this.selectedChildWidget!=a){var e=this._transition(a,this.selectedChildWidget,c);this._set("selectedChildWidget",
+a);b.publish(this.id+"-selectChild",a);this.persist&&k(this.id+"_selectedChild",this.selectedChildWidget.id)}return e},_transition:function(a,b){b&&this._hideChild(b);var c=this._showChild(a);a.resize&&(this.doLayout?a.resize(this._containerContentBox||this._contentBox):a.resize());return c},_adjacent:function(a){var b=this.getChildren(),c=f.indexOf(b,this.selectedChildWidget),c=c+(a?1:b.length-1);return b[c%b.length]},forward:function(){return this.selectChild(this._adjacent(!0),!0)},back:function(){return this.selectChild(this._adjacent(!1),
+!0)},_onKeyPress:function(a){b.publish(this.id+"-containerKeyPress",{e:a,page:this})},layout:function(){var a=this.selectedChildWidget;a&&a.resize&&(this.doLayout?a.resize(this._containerContentBox||this._contentBox):a.resize())},_showChild:function(a){var b=this.getChildren();a.isFirstChild=a==b[0];a.isLastChild=a==b[b.length-1];a._set("selected",!0);j.replace(a.domNode,"dijitVisible","dijitHidden");return a._onShow&&a._onShow()||!0},_hideChild:function(a){a._set("selected",!1);j.replace(a.domNode,
+"dijitHidden","dijitVisible");a.onHide&&a.onHide()},closeChild:function(a){a.onClose(this,a)&&(this.removeChild(a),a.destroyRecursive())},destroyDescendants:function(a){this._descendantsBeingDestroyed=!0;this.selectedChildWidget=void 0;f.forEach(this.getChildren(),function(b){a||this.removeChild(b);b.destroyRecursive(a)},this);this._descendantsBeingDestroyed=!1}});h.ChildWidgetProperties={selected:!1,disabled:!1,closable:!1,iconClass:"dijitNoIcon",showTitle:!0};c.extend(a,h.ChildWidgetProperties);
+return h})},"dijit/layout/TabController":function(){define("dojo/_base/declare,dojo/dom,dojo/dom-attr,dojo/dom-class,dojo/i18n,dojo/_base/lang,./StackController,../registry,../Menu,../MenuItem,dojo/text!./templates/_TabButton.html,dojo/i18n!../nls/common".split(","),function(f,k,h,j,e,c,i,b,g,a,l){l=f("dijit.layout._TabButton",i.StackButton,{baseClass:"dijitTab",cssStateNodes:{closeNode:"dijitTabCloseButton"},templateString:l,scrollOnFocus:!1,buildRendering:function(){this.inherited(arguments);k.setSelectable(this.containerNode,
+!1)},startup:function(){this.inherited(arguments);var a=this.domNode;this.defer(function(){a.className=a.className},1)},_setCloseButtonAttr:function(a){this._set("closeButton",a);j.toggle(this.domNode,"dijitClosable",a);this.closeNode.style.display=a?"":"none";a&&(a=e.getLocalization("dijit","common"),this.closeNode&&h.set(this.closeNode,"title",a.itemClose))},_setDisabledAttr:function(a){this.inherited(arguments);if(this.closeNode)if(a)h.remove(this.closeNode,"title");else{var b=e.getLocalization("dijit",
+"common");h.set(this.closeNode,"title",b.itemClose)}},_setLabelAttr:function(a){this.inherited(arguments);if(!this.showLabel&&!this.params.title)this.iconNode.alt=c.trim(this.containerNode.innerText||this.containerNode.textContent||"")}});f=f("dijit.layout.TabController",i,{baseClass:"dijitTabController",templateString:"<div role='tablist' data-dojo-attach-event='onkeypress:onkeypress'></div>",tabPosition:"top",buttonWidget:l,buttonWidgetCloseClass:"dijitTabCloseButton",postCreate:function(){this.inherited(arguments);
+var c=new g({id:this.id+"_Menu",ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir,targetNodeIds:[this.domNode],selector:function(a){return j.contains(a,"dijitClosable")&&!j.contains(a,"dijitTabDisabled")}});this.own(c);var f=e.getLocalization("dijit","common"),i=this;c.addChild(new a({label:f.itemClose,ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir,onClick:function(){var a=b.byNode(this.getParent().currentTarget);i.onCloseButtonClick(a.page)}}))}});
+f.TabButton=l;return f})},"dijit/layout/StackController":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom-class,dojo/_base/event,dojo/keys,dojo/_base/lang,dojo/on,../focus,../registry,../_Widget,../_TemplatedMixin,../_Container,../form/ToggleButton,dojo/i18n!../nls/common".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,p){p=k("dijit.layout._StackButton",p,{tabIndex:"-1",closeButton:!1,_aria_attr:"aria-selected",buildRendering:function(a){this.inherited(arguments);(this.focusNode||this.domNode).setAttribute("role",
+"tab")}});k=k("dijit.layout.StackController",[a,l,d],{baseClass:"dijitStackController",templateString:"<span role='tablist' data-dojo-attach-event='onkeypress'></span>",containerId:"",buttonWidget:p,buttonWidgetCloseClass:"dijitStackCloseButton",constructor:function(){this.pane2button={}},postCreate:function(){this.inherited(arguments);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");this.connect(this.containerNode,"click",function(a){var b=g.getEnclosingWidget(a.target);if(b!=this.containerNode&&!b.disabled&&b.page)for(a=a.target;a!==this.containerNode;a=a.parentNode)if(h.contains(a,this.buttonWidgetCloseClass)){this.onCloseButtonClick(b.page);break}else if(a==b.domNode){this.onButtonClick(b.page);break}})},onStartup:function(a){f.forEach(a.children,
+this.onAddChild,this);if(a.selected)this.onSelectChild(a.selected);var b=g.byId(this.containerId).containerNode,c=this.pane2button,a={title:"label",showtitle:"showLabel",iconclass:"iconClass",closable:"closeButton",tooltip:"title",disabled:"disabled"},d=function(a,d){return i(b,"attrmodified-"+a,function(a){var b=c[a.detail&&a.detail.widget&&a.detail.widget.id];b&&b.set(d,a.detail.newValue)})},e;for(e in a)this.own(d(e,a[e]))},destroy:function(){for(var a in this.pane2button)this.onRemoveChild(g.byId(a));
+this.inherited(arguments)},onAddChild:function(a,b){var d=new (c.isString(this.buttonWidget)?c.getObject(this.buttonWidget):this.buttonWidget)({id:this.id+"_"+a.id,name:this.id+"_"+a.id,label:a.title,disabled:a.disabled,ownerDocument:this.ownerDocument,dir:a.dir,lang:a.lang,textDir:a.textDir,showLabel:a.showTitle,iconClass:a.iconClass,closeButton:a.closable,title:a.tooltip,page:a});this.addChild(d,b);this.pane2button[a.id]=d;a.controlButton=d;if(!this._currentChild)this.onSelectChild(a)},onRemoveChild:function(a){if(this._currentChild===
+a)this._currentChild=null;var b=this.pane2button[a.id];b&&(this.removeChild(b),delete this.pane2button[a.id],b.destroy());delete a.controlButton},onSelectChild:function(a){if(a){if(this._currentChild){var b=this.pane2button[this._currentChild.id];b.set("checked",!1);b.focusNode.setAttribute("tabIndex","-1")}b=this.pane2button[a.id];b.set("checked",!0);this._currentChild=a;b.focusNode.setAttribute("tabIndex","0");g.byId(this.containerId).containerNode.setAttribute("aria-labelledby",b.id)}},onButtonClick:function(a){var c=
+this.pane2button[a.id];b.focus(c.focusNode);this._currentChild&&this._currentChild.id===a.id&&c.set("checked",!0);g.byId(this.containerId).selectChild(a)},onCloseButtonClick:function(a){g.byId(this.containerId).closeChild(a);this._currentChild&&(a=this.pane2button[this._currentChild.id])&&b.focus(a.focusNode||a.domNode)},adjacent:function(a){if(!this.isLeftToRight()&&(!this.tabPosition||/top|bottom/.test(this.tabPosition)))a=!a;var b=this.getChildren(),c=f.indexOf(b,this.pane2button[this._currentChild.id]),
+d=b[c],g;do c=(c+(a?1:b.length-1))%b.length,g=b[c];while(g.disabled&&g!=d);return g},onkeypress:function(a){if(!this.disabled&&!a.altKey){var b=null;if(a.ctrlKey||!a._djpage){switch(a.charOrCode){case e.LEFT_ARROW:case e.UP_ARROW:a._djpage||(b=!1);break;case e.PAGE_UP:a.ctrlKey&&(b=!1);break;case e.RIGHT_ARROW:case e.DOWN_ARROW:a._djpage||(b=!0);break;case e.PAGE_DOWN:a.ctrlKey&&(b=!0);break;case e.HOME:for(var c=this.getChildren(),d=0;d<c.length;d++){var g=c[d];if(!g.disabled){this.onButtonClick(g.page);
+break}}j.stop(a);break;case e.END:c=this.getChildren();for(d=c.length-1;0<=d;d--)if(g=c[d],!g.disabled){this.onButtonClick(g.page);break}j.stop(a);break;case e.DELETE:if(this._currentChild.closable)this.onCloseButtonClick(this._currentChild);j.stop(a);break;default:if(a.ctrlKey)if(a.charOrCode===e.TAB)this.onButtonClick(this.adjacent(!a.shiftKey).page),j.stop(a);else if("w"==a.charOrCode){if(this._currentChild.closable)this.onCloseButtonClick(this._currentChild);j.stop(a)}}null!==b&&(this.onButtonClick(this.adjacent(b).page),
+j.stop(a))}}},onContainerKeyPress:function(a){a.e._djpage=a.page;this.onkeypress(a.e)}});k.StackButton=p;return k})},"dijit/form/ToggleButton":function(){define(["dojo/_base/declare","dojo/_base/kernel","./Button","./_ToggleButtonMixin"],function(f,k,h,j){return f("dijit.form.ToggleButton",[h,j],{baseClass:"dijitToggleButton",setChecked:function(e){k.deprecated("setChecked("+e+") is deprecated. Use set('checked',"+e+") instead.","","2.0");this.set("checked",e)}})})},"dijit/form/_ToggleButtonMixin":function(){define(["dojo/_base/declare",
+"dojo/dom-attr"],function(f,k){return f("dijit.form._ToggleButtonMixin",null,{checked:!1,_aria_attr:"aria-pressed",_onClick:function(f){var j=this.checked;this._set("checked",!j);var e=this.inherited(arguments);this.set("checked",e?this.checked:j);return e},_setCheckedAttr:function(f,j){this._set("checked",f);k.set(this.focusNode||this.domNode,"checked",f);(this.focusNode||this.domNode).setAttribute(this._aria_attr,f?"true":"false");this._handleOnChange(f,j)},reset:function(){this._hasBeenBlurred=
!1;this.set("checked",this.params.checked||!1)}})})},"url:dijit/layout/templates/_TabButton.html":'<div role="presentation" data-dojo-attach-point="titleNode,innerDiv,tabContent" class="dijitTabInner dijitTabContent">\n\t<img src="${_blankGif}" alt="" class="dijitIcon dijitTabButtonIcon" data-dojo-attach-point=\'iconNode\'/>\n\t<span data-dojo-attach-point=\'containerNode,focusNode\' class=\'tabLabel\'></span>\n\t<span class="dijitInline dijitTabCloseButton dijitTabCloseIcon" data-dojo-attach-point=\'closeNode\'\n\t\t role="presentation">\n\t\t<span data-dojo-attach-point=\'closeText\' class=\'dijitTabCloseText\'>[x]</span\n\t\t\t\t></span>\n</div>\n',
-"dijit/layout/ScrollingTabController":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom-class,dojo/dom-geometry,dojo/dom-style,dojo/_base/fx,dojo/_base/lang,dojo/on,dojo/query,dojo/sniff,../registry,dojo/text!./templates/ScrollingTabController.html,dojo/text!./templates/_ScrollingTabControllerButton.html,./TabController,./utils,../_WidgetsInTemplateMixin,../Menu,../MenuItem,../form/Button,../_HasDropDown,dojo/NodeList-dom".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o,r,q,v,s){d=
-j("dijit.layout.ScrollingTabController",[m,o],{baseClass:"dijitTabController dijitScrollingTabController",templateString:d,useMenu:!0,useSlider:!0,tabStripClass:"",widgetsInTemplate:!0,_minScroll:5,_setClassAttr:{node:"containerNode",type:"class"},buildRendering:function(){this.inherited(arguments);var a=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",i.add(a,"tabStrip-disabled");i.add(this.tablistWrapper,this.tabStripClass)},onStartup:function(){this.inherited(arguments);c.set(this.domNode,"visibility","");this._postStartup=!0;this.own(b(this.containerNode,"attrmodified-label, attrmodified-iconclass",h.hitch(this,function(){this._dim&&this.resize(this._dim)})))},onAddChild:function(a,b){this.inherited(arguments);c.set(this.containerNode,"width",c.get(this.containerNode,"width")+200+"px")},onRemoveChild:function(a,b){if(this._selectedTab===
-this.pane2button[a.id].domNode)this._selectedTab=null;this.inherited(arguments)},_initButtons:function(){this._btnWidth=0;this._buttons=f("> .tabStripButton",this.domNode).filter(function(a){if(this.useMenu&&a==this._menuBtn.domNode||this.useSlider&&(a==this._rightBtn.domNode||a==this._leftBtn.domNode))return this._btnWidth+=l.getMarginSize(a).w,!0;c.set(a,"display","none");return!1},this)},_getTabsWidth:function(){var a=this.getChildren();if(a.length){var b=a[this.isLeftToRight()?0:a.length-1].domNode,
-a=a[this.isLeftToRight()?a.length-1:0].domNode;return a.offsetLeft+a.offsetWidth-b.offsetLeft}return 0},_enableBtn:function(a){var b=this._getTabsWidth(),a=a||c.get(this.scrollNode,"width");return 0<b&&a<b},resize:function(a){this._dim=a;this.scrollNode.style.height="auto";var b=this._contentBox=n.marginBox2contentBox(this.domNode,{h:0,w:a.w});b.h=this.scrollNode.offsetHeight;l.setContentSize(this.domNode,b);this._buttons.style("display",this._enableBtn(this._contentBox.w)?"":"none");this._leftBtn.layoutAlign=
+"dijit/layout/ScrollingTabController":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom-class,dojo/dom-geometry,dojo/dom-style,dojo/_base/fx,dojo/_base/lang,dojo/on,dojo/query,dojo/sniff,../registry,dojo/text!./templates/ScrollingTabController.html,dojo/text!./templates/_ScrollingTabControllerButton.html,./TabController,./utils,../_WidgetsInTemplateMixin,../Menu,../MenuItem,../form/Button,../_HasDropDown,dojo/NodeList-dom".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o,r,q,v,s){d=
+k("dijit.layout.ScrollingTabController",[m,o],{baseClass:"dijitTabController dijitScrollingTabController",templateString:d,useMenu:!0,useSlider:!0,tabStripClass:"",widgetsInTemplate:!0,_minScroll:5,_setClassAttr:{node:"containerNode",type:"class"},buildRendering:function(){this.inherited(arguments);var a=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",h.add(a,"tabStrip-disabled");h.add(this.tablistWrapper,this.tabStripClass)},onStartup:function(){this.inherited(arguments);e.set(this.domNode,"visibility","");this._postStartup=!0;this.own(b(this.containerNode,"attrmodified-label, attrmodified-iconclass",i.hitch(this,function(){this._dim&&this.resize(this._dim)})))},onAddChild:function(a,b){this.inherited(arguments);e.set(this.containerNode,"width",e.get(this.containerNode,"width")+200+"px")},onRemoveChild:function(a,b){if(this._selectedTab===
+this.pane2button[a.id].domNode)this._selectedTab=null;this.inherited(arguments)},_initButtons:function(){this._btnWidth=0;this._buttons=g("> .tabStripButton",this.domNode).filter(function(a){if(this.useMenu&&a==this._menuBtn.domNode||this.useSlider&&(a==this._rightBtn.domNode||a==this._leftBtn.domNode))return this._btnWidth+=j.getMarginSize(a).w,!0;e.set(a,"display","none");return!1},this)},_getTabsWidth:function(){var a=this.getChildren();if(a.length){var b=a[this.isLeftToRight()?0:a.length-1].domNode,
+a=a[this.isLeftToRight()?a.length-1:0].domNode;return a.offsetLeft+a.offsetWidth-b.offsetLeft}return 0},_enableBtn:function(a){var b=this._getTabsWidth(),a=a||e.get(this.scrollNode,"width");return 0<b&&a<b},resize:function(a){this._dim=a;this.scrollNode.style.height="auto";var b=this._contentBox=n.marginBox2contentBox(this.domNode,{h:0,w:a.w});b.h=this.scrollNode.offsetHeight;j.setContentSize(this.domNode,b);this._buttons.style("display",this._enableBtn(this._contentBox.w)?"":"none");this._leftBtn.layoutAlign=
"left";this._rightBtn.layoutAlign="right";this._menuBtn.layoutAlign=this.isLeftToRight()?"right":"left";n.layoutChildren(this.domNode,this._contentBox,[this._menuBtn,this._leftBtn,this._rightBtn,{domNode:this.scrollNode,layoutAlign:"client"}]);if(this._selectedTab)this._anim&&"playing"==this._anim.status()&&this._anim.stop(),this.scrollNode.scrollLeft=this._convertToScrollLeft(this._getScrollForSelectedTab());this._setButtonClass(this._getScroll());this._postResize=!0;return{h:this._contentBox.h,
-w:a.w}},_getScroll:function(){return this.isLeftToRight()||8>a("ie")||a("ie")&&a("quirks")||a("webkit")?this.scrollNode.scrollLeft:c.get(this.containerNode,"width")-c.get(this.scrollNode,"width")+(8<=a("ie")?-1:1)*this.scrollNode.scrollLeft},_convertToScrollLeft:function(b){if(this.isLeftToRight()||8>a("ie")||a("ie")&&a("quirks")||a("webkit"))return b;var d=c.get(this.containerNode,"width")-c.get(this.scrollNode,"width");return(8<=a("ie")?-1:1)*(b-d)},onSelectChild:function(a){var b=this.pane2button[a.id];
-if(b&&a){b=b.domNode;if(b!=this._selectedTab&&(this._selectedTab=b,this._postResize)){var d=this._getScroll();(d>b.offsetLeft||d+c.get(this.scrollNode,"width")<b.offsetLeft+c.get(b,"width"))&&this.createSmoothScroll().play()}this.inherited(arguments)}},_getScrollBounds:function(){var a=this.getChildren(),b=c.get(this.scrollNode,"width"),d=c.get(this.containerNode,"width")-b,f=this._getTabsWidth();if(a.length&&f>b)return{min:this.isLeftToRight()?0:a[a.length-1].domNode.offsetLeft,max:this.isLeftToRight()?
-a[a.length-1].domNode.offsetLeft+a[a.length-1].domNode.offsetWidth-b:d};a=this.isLeftToRight()?0:d;return{min:a,max:a}},_getScrollForSelectedTab:function(){var a=this._selectedTab,b=c.get(this.scrollNode,"width"),d=this._getScrollBounds(),a=a.offsetLeft+c.get(a,"width")/2-b/2;return a=Math.min(Math.max(a,d.min),d.max)},createSmoothScroll:function(a){if(0<arguments.length)var b=this._getScrollBounds(),a=Math.min(Math.max(a,b.min),b.max);else a=this._getScrollForSelectedTab();this._anim&&"playing"==
-this._anim.status()&&this._anim.stop();var c=this,d=this.scrollNode,f=new g.Animation({beforeBegin:function(){this.curve&&delete this.curve;var b=d.scrollLeft,e=c._convertToScrollLeft(a);f.curve=new g._Line(b,e)},onAnimate:function(a){d.scrollLeft=a}});this._anim=f;this._setButtonClass(a);return f},_getBtnNode:function(a){for(a=a.target;a&&!i.contains(a,"tabStripButton");)a=a.parentNode;return a},doSlideRight:function(a){this.doSlide(1,this._getBtnNode(a))},doSlideLeft:function(a){this.doSlide(-1,
-this._getBtnNode(a))},doSlide:function(a,b){if(!b||!i.contains(b,"dijitTabDisabled")){var d=0.75*c.get(this.scrollNode,"width")*a,d=this._getScroll()+d;this._setButtonClass(d);this.createSmoothScroll(d).play()}},_setButtonClass:function(a){var b=this._getScrollBounds();this._leftBtn.set("disabled",a<=b.min);this._rightBtn.set("disabled",a>=b.max)}});p=j("dijit.layout._ScrollingTabControllerButtonMixin",null,{baseClass:"dijitTab tabStripButton",templateString:p,tabIndex:"",isFocusable:function(){return!1}});
-j("dijit.layout._ScrollingTabControllerButton",[v,p]);j("dijit.layout._ScrollingTabControllerMenuButton",[v,s,p],{containerId:"",tabIndex:"-1",isLoaded:function(){return!1},loadDropDown:function(a){this.dropDown=new r({id:this.containerId+"_menu",ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir});var b=k.byId(this.containerId);e.forEach(b.getChildren(),function(a){this.dropDown.addChild(new q({id:a.id+"_stcMi",label:a.title,iconClass:a.iconClass,disabled:a.disabled,
+w:a.w}},_getScroll:function(){return this.isLeftToRight()||8>a("ie")||a("ie")&&a("quirks")||a("webkit")?this.scrollNode.scrollLeft:e.get(this.containerNode,"width")-e.get(this.scrollNode,"width")+(8<=a("ie")?-1:1)*this.scrollNode.scrollLeft},_convertToScrollLeft:function(b){if(this.isLeftToRight()||8>a("ie")||a("ie")&&a("quirks")||a("webkit"))return b;var c=e.get(this.containerNode,"width")-e.get(this.scrollNode,"width");return(8<=a("ie")?-1:1)*(b-c)},onSelectChild:function(a){var b=this.pane2button[a.id];
+if(b&&a){b=b.domNode;if(b!=this._selectedTab&&(this._selectedTab=b,this._postResize)){var c=this._getScroll();(c>b.offsetLeft||c+e.get(this.scrollNode,"width")<b.offsetLeft+e.get(b,"width"))&&this.createSmoothScroll().play()}this.inherited(arguments)}},_getScrollBounds:function(){var a=this.getChildren(),b=e.get(this.scrollNode,"width"),c=e.get(this.containerNode,"width")-b,d=this._getTabsWidth();if(a.length&&d>b)return{min:this.isLeftToRight()?0:a[a.length-1].domNode.offsetLeft,max:this.isLeftToRight()?
+a[a.length-1].domNode.offsetLeft+a[a.length-1].domNode.offsetWidth-b:c};a=this.isLeftToRight()?0:c;return{min:a,max:a}},_getScrollForSelectedTab:function(){var a=this._selectedTab,b=e.get(this.scrollNode,"width"),c=this._getScrollBounds(),a=a.offsetLeft+e.get(a,"width")/2-b/2;return a=Math.min(Math.max(a,c.min),c.max)},createSmoothScroll:function(a){if(0<arguments.length)var b=this._getScrollBounds(),a=Math.min(Math.max(a,b.min),b.max);else a=this._getScrollForSelectedTab();this._anim&&"playing"==
+this._anim.status()&&this._anim.stop();var d=this,g=this.scrollNode,e=new c.Animation({beforeBegin:function(){this.curve&&delete this.curve;var b=g.scrollLeft,f=d._convertToScrollLeft(a);e.curve=new c._Line(b,f)},onAnimate:function(a){g.scrollLeft=a}});this._anim=e;this._setButtonClass(a);return e},_getBtnNode:function(a){for(a=a.target;a&&!h.contains(a,"tabStripButton");)a=a.parentNode;return a},doSlideRight:function(a){this.doSlide(1,this._getBtnNode(a))},doSlideLeft:function(a){this.doSlide(-1,
+this._getBtnNode(a))},doSlide:function(a,b){if(!b||!h.contains(b,"dijitTabDisabled")){var c=0.75*e.get(this.scrollNode,"width")*a,c=this._getScroll()+c;this._setButtonClass(c);this.createSmoothScroll(c).play()}},_setButtonClass:function(a){var b=this._getScrollBounds();this._leftBtn.set("disabled",a<=b.min);this._rightBtn.set("disabled",a>=b.max)}});p=k("dijit.layout._ScrollingTabControllerButtonMixin",null,{baseClass:"dijitTab tabStripButton",templateString:p,tabIndex:"",isFocusable:function(){return!1}});
+k("dijit.layout._ScrollingTabControllerButton",[v,p]);k("dijit.layout._ScrollingTabControllerMenuButton",[v,s,p],{containerId:"",tabIndex:"-1",isLoaded:function(){return!1},loadDropDown:function(a){this.dropDown=new r({id:this.containerId+"_menu",ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir});var b=l.byId(this.containerId);f.forEach(b.getChildren(),function(a){this.dropDown.addChild(new q({id:a.id+"_stcMi",label:a.title,iconClass:a.iconClass,disabled:a.disabled,
ownerDocument:this.ownerDocument,dir:a.dir,lang:a.lang,textDir:a.textDir,onClick:function(){b.selectChild(a)}}))},this);a()},closeDropDown:function(a){this.inherited(arguments);this.dropDown&&(this.dropDown.destroyRecursive(),delete this.dropDown)}});return d})},"url:dijit/layout/templates/ScrollingTabController.html":'<div class="dijitTabListContainer-${tabPosition}" style="visibility:hidden">\n\t<div data-dojo-type="dijit.layout._ScrollingTabControllerMenuButton"\n\t\t\tclass="tabStripButton-${tabPosition}"\n\t\t\tid="${id}_menuBtn"\n\t\t\tdata-dojo-props="containerId: \'${containerId}\', iconClass: \'dijitTabStripMenuIcon\',\n\t\t\t\t\tdropDownPosition: [\'below-alt\', \'above-alt\']"\n\t\t\tdata-dojo-attach-point="_menuBtn" showLabel="false" title="">&#9660;</div>\n\t<div data-dojo-type="dijit.layout._ScrollingTabControllerButton"\n\t\t\tclass="tabStripButton-${tabPosition}"\n\t\t\tid="${id}_leftBtn"\n\t\t\tdata-dojo-props="iconClass:\'dijitTabStripSlideLeftIcon\', showLabel:false, title:\'\'"\n\t\t\tdata-dojo-attach-point="_leftBtn" data-dojo-attach-event="onClick: doSlideLeft">&#9664;</div>\n\t<div data-dojo-type="dijit.layout._ScrollingTabControllerButton"\n\t\t\tclass="tabStripButton-${tabPosition}"\n\t\t\tid="${id}_rightBtn"\n\t\t\tdata-dojo-props="iconClass:\'dijitTabStripSlideRightIcon\', showLabel:false, title:\'\'"\n\t\t\tdata-dojo-attach-point="_rightBtn" data-dojo-attach-event="onClick: doSlideRight">&#9654;</div>\n\t<div class=\'dijitTabListWrapper\' data-dojo-attach-point=\'tablistWrapper\'>\n\t\t<div role=\'tablist\' data-dojo-attach-event=\'onkeypress:onkeypress\'\n\t\t\t\tdata-dojo-attach-point=\'containerNode\' class=\'nowrapTabStrip\'></div>\n\t</div>\n</div>',
"url:dijit/layout/templates/_ScrollingTabControllerButton.html":'<div data-dojo-attach-event="onclick:_onClick" class="dijitTabInnerDiv dijitTabContent dijitButtonContents" data-dojo-attach-point="focusNode">\n\t<img role="presentation" alt="" src="${_blankGif}" class="dijitTabStripIcon" data-dojo-attach-point="iconNode"/>\n\t<span data-dojo-attach-point="containerNode,titleNode" class="dijitButtonText"></span>\n</div>',"dijit/_WidgetsInTemplateMixin":function(){define(["dojo/_base/array","dojo/_base/declare",
-"dojo/parser"],function(e,j,i){return j("dijit._WidgetsInTemplateMixin",null,{_earlyTemplatedStartup:!1,widgetsInTemplate:!0,_beforeFillContent:function(){if(this.widgetsInTemplate){var e=this._startupWidgets=i.parse(this.domNode,{noStart:!this._earlyTemplatedStartup,template:!0,inherited:{dir:this.dir,lang:this.lang,textDir:this.textDir},propsThis:this,scope:"dojo"});if(!e.isFulfilled())throw Error(this.declaredClass+": parser returned unfilled promise (probably waiting for module auto-load), unsupported by _WidgetsInTemplateMixin. Must pre-load all supporting widgets before instantiation.");
-this._attachTemplateNodes(e,function(c,g){return c[g]})}},startup:function(){e.forEach(this._startupWidgets,function(e){e&&!e._started&&e.startup&&e.startup()});this.inherited(arguments)}})})},"dijit/_HasDropDown":function(){define("dojo/_base/declare,dojo/_base/Deferred,dojo/_base/event,dojo/dom,dojo/dom-attr,dojo/dom-class,dojo/dom-geometry,dojo/dom-style,dojo/has,dojo/keys,dojo/_base/lang,dojo/on,dojo/window,./registry,./focus,./popup,./_FocusMixin".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,
-p,m,n,o,r){return e("dijit._HasDropDown",r,{_buttonNode:null,_arrowWrapperNode:null,_popupStateNode:null,_aroundNode:null,dropDown:null,autoWidth:!0,forceWidth:!1,maxHeight:0,dropDownPosition:["below","above"],_stopClickEvents:!0,_onDropDownMouseDown:function(a){if(!this.disabled&&!this.readOnly)a.preventDefault(),this._docHandler=this.connect(this.ownerDocument,"mouseup","_onDropDownMouseUp"),this.toggleDropDown()},_onDropDownMouseUp:function(a){a&&this._docHandler&&this.disconnect(this._docHandler);
-var b=this.dropDown,c=!1;if(a&&this._opened){var d=h.position(this._buttonNode,!0);if(!(a.pageX>=d.x&&a.pageX<=d.x+d.w)||!(a.pageY>=d.y&&a.pageY<=d.y+d.h)){for(d=a.target;d&&!c;)g.contains(d,"dijitPopup")?c=!0:d=d.parentNode;if(c){d=a.target;if(b.onItemClick){for(var e;d&&!(e=m.byNode(d));)d=d.parentNode;if(e&&e.onClick&&e.getParent)e.getParent().onItemClick(e,a)}return}}}if(this._opened){if(b.focus&&!1!==b.autoFocus)this._focusDropDownTimer=this.defer(function(){b.focus();delete this._focusDropDownTimer})}else this.defer("focus");
-if(f("ios"))this._justGotMouseUp=!0,this.defer(function(){this._justGotMouseUp=!1})},_onDropDownClick:function(a){f("touch")&&!this._justGotMouseUp&&(this._onDropDownMouseDown(a),this._onDropDownMouseUp(a));this._stopClickEvents&&i.stop(a)},buildRendering:function(){this.inherited(arguments);this._buttonNode=this._buttonNode||this.focusNode||this.domNode;this._popupStateNode=this._popupStateNode||this.focusNode||this._buttonNode;var a={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";g.add(this._arrowWrapperNode||this._buttonNode,"dijit"+a+"ArrowButton")},postCreate:function(){this.inherited(arguments);this.own(d(this._buttonNode,"mousedown",k.hitch(this,"_onDropDownMouseDown")),d(this._buttonNode,"click",k.hitch(this,"_onDropDownClick")),d(this.focusNode,"keydown",k.hitch(this,"_onKey")),d(this.focusNode,"keyup",k.hitch(this,"_onKeyUp")))},destroy:function(){this.dropDown&&
-(this.dropDown._destroyed||this.dropDown.destroyRecursive(),delete this.dropDown);this.inherited(arguments)},_onKey:function(b){if(!this.disabled&&!this.readOnly){var c=this.dropDown,d=b.target;if(c&&this._opened&&c.handleKey&&!1===c.handleKey(b))i.stop(b);else if(c&&this._opened&&b.keyCode==a.ESCAPE)this.closeDropDown(),i.stop(b);else if(!this._opened&&(b.keyCode==a.DOWN_ARROW||(b.keyCode==a.ENTER||b.keyCode==a.SPACE)&&("input"!==(d.tagName||"").toLowerCase()||d.type&&"text"!==d.type.toLowerCase())))this._toggleOnKeyUp=
-!0,i.stop(b)}},_onKeyUp:function(){if(this._toggleOnKeyUp){delete this._toggleOnKeyUp;this.toggleDropDown();var a=this.dropDown;a&&a.focus&&this.defer(k.hitch(a,"focus"),1)}},_onBlur:function(){this.closeDropDown(n.curNode&&this.dropDown&&l.isDescendant(n.curNode,this.dropDown.domNode));this.inherited(arguments)},isLoaded:function(){return!0},loadDropDown:function(a){a()},loadAndOpenDropDown:function(){var a=new j,b=k.hitch(this,function(){this.openDropDown();a.resolve(this.dropDown)});this.isLoaded()?
-b():this.loadDropDown(b);return a},toggleDropDown:function(){!this.disabled&&!this.readOnly&&(this._opened?this.closeDropDown():this.loadAndOpenDropDown())},openDropDown:function(){var a=this.dropDown,d=a.domNode,f=this._aroundNode||this.domNode,e=this;if(!this._preparedNode){this._preparedNode=!0;if(d.style.width)this._explicitDDWidth=!0;if(d.style.height)this._explicitDDHeight=!0}if(this.maxHeight||this.forceWidth||this.autoWidth){var m={display:"",visibility:"hidden"};if(!this._explicitDDWidth)m.width=
-"";if(!this._explicitDDHeight)m.height="";b.set(d,m);m=this.maxHeight;if(-1==m)var m=p.getBox(this.ownerDocument),i=h.position(f,!1),m=Math.floor(Math.max(i.y,m.h-(i.y+i.h)));o.moveOffScreen(a);a.startup&&!a._started&&a.startup();var i=h.getMarginSize(d),l=m&&i.h>m;b.set(d,{overflowX:"visible",overflowY:l?"auto":"visible"});l?(i.h=m,"w"in i&&(i.w+=16)):delete i.h;this.forceWidth?i.w=f.offsetWidth:this.autoWidth?i.w=Math.max(i.w,f.offsetWidth):delete i.w;k.isFunction(a.resize)?a.resize(i):h.setMarginBox(d,
-i)}a=o.open({parent:this,popup:a,around:f,orient:this.dropDownPosition,onExecute:function(){e.closeDropDown(!0)},onCancel:function(){e.closeDropDown(!0)},onClose:function(){c.set(e._popupStateNode,"popupActive",!1);g.remove(e._popupStateNode,"dijitHasDropDownOpen");e._set("_opened",!1)}});c.set(this._popupStateNode,"popupActive","true");g.add(this._popupStateNode,"dijitHasDropDownOpen");this._set("_opened",!0);this.domNode.setAttribute("aria-expanded","true");return a},closeDropDown:function(a){this._focusDropDownTimer&&
-(this._focusDropDownTimer.remove(),delete this._focusDropDownTimer);if(this._opened)this.domNode.setAttribute("aria-expanded","false"),a&&this.focus(),o.close(this.dropDown),this._opened=!1}})})},"dijit/form/RadioButton":function(){define(["dojo/_base/declare","./CheckBox","./_RadioButtonMixin"],function(e,j,i){return e("dijit.form.RadioButton",[j,i],{baseClass:"dijitRadio"})})},"dijit/form/CheckBox":function(){define("require,dojo/_base/declare,dojo/dom-attr,dojo/has,dojo/query,dojo/ready,./ToggleButton,./_CheckBoxMixin,dojo/text!./templates/CheckBox.html,dojo/NodeList-dom".split(","),
-function(e,j,i,l,c,g,h,b,f){l("dijit-legacy-requires")&&g(0,function(){e(["dijit/form/RadioButton"])});return j("dijit.form.CheckBox",[h,b],{templateString:f,baseClass:"dijitCheckBox",_setValueAttr:function(a,b){"string"==typeof a&&(this.inherited(arguments),a=!0);this._created&&this.set("checked",a,b)},_getValueAttr:function(){return this.checked?this.value:!1},_setIconClassAttr:null,postMixInProperties:function(){this.inherited(arguments);this.checkedAttrSetting=this.checked?"checked":""},_fillContent:function(){},
-_onFocus:function(){this.id&&c("label[for='"+this.id+"']").addClass("dijitFocusedLabel");this.inherited(arguments)},_onBlur:function(){this.id&&c("label[for='"+this.id+"']").removeClass("dijitFocusedLabel");this.inherited(arguments)}})})},"dijit/form/_CheckBoxMixin":function(){define(["dojo/_base/declare","dojo/dom-attr","dojo/_base/event"],function(e,j,i){return e("dijit.form._CheckBoxMixin",null,{type:"checkbox",value:"on",readOnly:!1,_aria_attr:"aria-checked",_setReadOnlyAttr:function(e){this._set("readOnly",
-e);j.set(this.focusNode,"readOnly",e);this.focusNode.setAttribute("aria-readonly",e)},_setLabelAttr:void 0,_getSubmitValue:function(e){return!e&&0!==e?"on":e},_setValueAttr:function(e){e=this._getSubmitValue(e);this._set("value",e);j.set(this.focusNode,"value",e)},reset:function(){this.inherited(arguments);this._set("value",this.params.value||"on");j.set(this.focusNode,"value",this.value)},_onClick:function(e){return this.readOnly?(i.stop(e),!1):this.inherited(arguments)}})})},"url:dijit/form/templates/CheckBox.html":'<div class="dijit dijitReset dijitInline" role="presentation"\n\t><input\n\t \t${!nameAttrSetting} type="${type}" ${checkedAttrSetting}\n\t\tclass="dijitReset dijitCheckBoxInput"\n\t\tdata-dojo-attach-point="focusNode"\n\t \tdata-dojo-attach-event="onclick:_onClick"\n/></div>\n',
-"dijit/form/_RadioButtonMixin":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom-attr,dojo/_base/event,dojo/_base/lang,dojo/query,../registry".split(","),function(e,j,i,l,c,g,h){return j("dijit.form._RadioButtonMixin",null,{type:"radio",_getRelatedWidgets:function(){var b=[];g("input[type=radio]",this.focusNode.form||this.ownerDocument).forEach(c.hitch(this,function(c){c.name==this.name&&c.form==this.focusNode.form&&(c=h.getEnclosingWidget(c))&&b.push(c)}));return b},_setCheckedAttr:function(b){this.inherited(arguments);
-this._created&&b&&e.forEach(this._getRelatedWidgets(),c.hitch(this,function(b){b!=this&&b.checked&&b.set("checked",!1)}))},_getSubmitValue:function(b){return null===b?"on":b},_onClick:function(b){if(this.checked||this.disabled)return l.stop(b),!1;return this.readOnly?(l.stop(b),e.forEach(this._getRelatedWidgets(),c.hitch(this,function(b){i.set(this.focusNode||this.domNode,"checked",b.checked)})),!1):this.inherited(arguments)}})})},"dijit/form/Select":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom-attr,dojo/dom-class,dojo/dom-geometry,dojo/_base/event,dojo/i18n,dojo/_base/lang,dojo/sniff,./_FormSelectWidget,../_HasDropDown,../Menu,../MenuItem,../MenuSeparator,../Tooltip,dojo/text!./templates/Select.html,dojo/i18n!./nls/validate".split(","),
-function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o){var r=j("dijit.form._SelectMenu",d,{autoFocus:!0,buildRendering:function(){this.inherited(arguments);var a=this.menuTableNode=this.domNode,b=this.domNode=this.ownerDocument.createElement("div");b.style.cssText="overflow-x: hidden; overflow-y: scroll";a.parentNode&&a.parentNode.replaceChild(b,a);l.remove(a,"dijitMenuTable");b.className=a.className+" dijitSelectMenu";a.className="dijitReset dijitMenuTable";a.setAttribute("role","listbox");b.setAttribute("role",
-"presentation");b.appendChild(a)},postCreate:function(){this.inherited(arguments);this.connect(this.domNode,"onselectstart",g.stop)},focus:function(){var a=!1,c=this.parentWidget.value;b.isArray(c)&&(c=c[c.length-1]);c&&e.forEach(this.parentWidget._getChildren(),function(b){b.option&&c===b.option.value&&(a=!0,this.focusChild(b,!1))},this);a||this.inherited(arguments)},resize:function(a){if(a&&(c.setMarginBox(this.domNode,a),"w"in a))this.menuTableNode.style.width="100%"}}),j=j("dijit.form.Select",
-[a,k],{baseClass:"dijitSelect dijitValidationTextBox",templateString:o,_buttonInputDisabled:f("ie")?"disabled":"",required:!1,state:"",message:"",tooltipPosition:[],emptyLabel:"&#160;",_isLoaded:!1,_childrenLoaded:!1,_fillContent:function(){this.inherited(arguments);if(this.options.length&&!this.value&&this.srcNodeRef){var a=this.srcNodeRef.selectedIndex||0;this.value=this.options[0<=a?a:0].value}this.dropDown=new r({id:this.id+"_menu",parentWidget:this});l.add(this.dropDown.domNode,this.baseClass.replace(/\s+|$/g,
+"dojo/parser"],function(f,k,h){return k("dijit._WidgetsInTemplateMixin",null,{_earlyTemplatedStartup:!1,widgetsInTemplate:!0,_beforeFillContent:function(){if(this.widgetsInTemplate){var f=this._startupWidgets=h.parse(this.domNode,{noStart:!this._earlyTemplatedStartup,template:!0,inherited:{dir:this.dir,lang:this.lang,textDir:this.textDir},propsThis:this,scope:"dojo"});if(!f.isFulfilled())throw Error(this.declaredClass+": parser returned unfilled promise (probably waiting for module auto-load), unsupported by _WidgetsInTemplateMixin. Must pre-load all supporting widgets before instantiation.");
+this._attachTemplateNodes(f,function(e,c){return e[c]})}},startup:function(){f.forEach(this._startupWidgets,function(f){f&&!f._started&&f.startup&&f.startup()});this.inherited(arguments)}})})},"dijit/_HasDropDown":function(){define("dojo/_base/declare,dojo/_base/Deferred,dojo/_base/event,dojo/dom,dojo/dom-attr,dojo/dom-class,dojo/dom-geometry,dojo/dom-style,dojo/has,dojo/keys,dojo/_base/lang,dojo/on,dojo/window,./registry,./focus,./popup,./_FocusMixin".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,
+p,m,n,o,r){return f("dijit._HasDropDown",r,{_buttonNode:null,_arrowWrapperNode:null,_popupStateNode:null,_aroundNode:null,dropDown:null,autoWidth:!0,forceWidth:!1,maxHeight:0,dropDownPosition:["below","above"],_stopClickEvents:!0,_onDropDownMouseDown:function(a){if(!this.disabled&&!this.readOnly)a.preventDefault(),this._docHandler=this.connect(this.ownerDocument,"mouseup","_onDropDownMouseUp"),this.toggleDropDown()},_onDropDownMouseUp:function(a){a&&this._docHandler&&this.disconnect(this._docHandler);
+var b=this.dropDown,d=!1;if(a&&this._opened){var e=i.position(this._buttonNode,!0);if(!(a.pageX>=e.x&&a.pageX<=e.x+e.w)||!(a.pageY>=e.y&&a.pageY<=e.y+e.h)){for(e=a.target;e&&!d;)c.contains(e,"dijitPopup")?d=!0:e=e.parentNode;if(d){e=a.target;if(b.onItemClick){for(var f;e&&!(f=m.byNode(e));)e=e.parentNode;if(f&&f.onClick&&f.getParent)f.getParent().onItemClick(f,a)}return}}}if(this._opened){if(b.focus&&!1!==b.autoFocus)this._focusDropDownTimer=this.defer(function(){b.focus();delete this._focusDropDownTimer})}else this.defer("focus");
+if(g("ios"))this._justGotMouseUp=!0,this.defer(function(){this._justGotMouseUp=!1})},_onDropDownClick:function(a){g("touch")&&!this._justGotMouseUp&&(this._onDropDownMouseDown(a),this._onDropDownMouseUp(a));this._stopClickEvents&&h.stop(a)},buildRendering:function(){this.inherited(arguments);this._buttonNode=this._buttonNode||this.focusNode||this.domNode;this._popupStateNode=this._popupStateNode||this.focusNode||this._buttonNode;var a={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";c.add(this._arrowWrapperNode||this._buttonNode,"dijit"+a+"ArrowButton")},postCreate:function(){this.inherited(arguments);this.own(d(this._buttonNode,"mousedown",l.hitch(this,"_onDropDownMouseDown")),d(this._buttonNode,"click",l.hitch(this,"_onDropDownClick")),d(this.focusNode,"keydown",l.hitch(this,"_onKey")),d(this.focusNode,"keyup",l.hitch(this,"_onKeyUp")))},destroy:function(){this.dropDown&&
+(this.dropDown._destroyed||this.dropDown.destroyRecursive(),delete this.dropDown);this.inherited(arguments)},_onKey:function(b){if(!this.disabled&&!this.readOnly){var c=this.dropDown,d=b.target;if(c&&this._opened&&c.handleKey&&!1===c.handleKey(b))h.stop(b);else if(c&&this._opened&&b.keyCode==a.ESCAPE)this.closeDropDown(),h.stop(b);else if(!this._opened&&(b.keyCode==a.DOWN_ARROW||(b.keyCode==a.ENTER||b.keyCode==a.SPACE)&&("input"!==(d.tagName||"").toLowerCase()||d.type&&"text"!==d.type.toLowerCase())))this._toggleOnKeyUp=
+!0,h.stop(b)}},_onKeyUp:function(){if(this._toggleOnKeyUp){delete this._toggleOnKeyUp;this.toggleDropDown();var a=this.dropDown;a&&a.focus&&this.defer(l.hitch(a,"focus"),1)}},_onBlur:function(){this.closeDropDown(n.curNode&&this.dropDown&&j.isDescendant(n.curNode,this.dropDown.domNode));this.inherited(arguments)},isLoaded:function(){return!0},loadDropDown:function(a){a()},loadAndOpenDropDown:function(){var a=new k,b=l.hitch(this,function(){this.openDropDown();a.resolve(this.dropDown)});this.isLoaded()?
+b():this.loadDropDown(b);return a},toggleDropDown:function(){!this.disabled&&!this.readOnly&&(this._opened?this.closeDropDown():this.loadAndOpenDropDown())},openDropDown:function(){var a=this.dropDown,d=a.domNode,g=this._aroundNode||this.domNode,f=this;if(!this._preparedNode){this._preparedNode=!0;if(d.style.width)this._explicitDDWidth=!0;if(d.style.height)this._explicitDDHeight=!0}if(this.maxHeight||this.forceWidth||this.autoWidth){var h={display:"",visibility:"hidden"};if(!this._explicitDDWidth)h.width=
+"";if(!this._explicitDDHeight)h.height="";b.set(d,h);h=this.maxHeight;if(-1==h)var h=p.getBox(this.ownerDocument),j=i.position(g,!1),h=Math.floor(Math.max(j.y,h.h-(j.y+j.h)));o.moveOffScreen(a);a.startup&&!a._started&&a.startup();var j=i.getMarginSize(d),k=h&&j.h>h;b.set(d,{overflowX:"visible",overflowY:k?"auto":"visible"});k?(j.h=h,"w"in j&&(j.w+=16)):delete j.h;this.forceWidth?j.w=g.offsetWidth:this.autoWidth?j.w=Math.max(j.w,g.offsetWidth):delete j.w;l.isFunction(a.resize)?a.resize(j):i.setMarginBox(d,
+j)}a=o.open({parent:this,popup:a,around:g,orient:this.dropDownPosition,onExecute:function(){f.closeDropDown(!0)},onCancel:function(){f.closeDropDown(!0)},onClose:function(){e.set(f._popupStateNode,"popupActive",!1);c.remove(f._popupStateNode,"dijitHasDropDownOpen");f._set("_opened",!1)}});e.set(this._popupStateNode,"popupActive","true");c.add(this._popupStateNode,"dijitHasDropDownOpen");this._set("_opened",!0);this.domNode.setAttribute("aria-expanded","true");return a},closeDropDown:function(a){this._focusDropDownTimer&&
+(this._focusDropDownTimer.remove(),delete this._focusDropDownTimer);if(this._opened)this.domNode.setAttribute("aria-expanded","false"),a&&this.focus(),o.close(this.dropDown),this._opened=!1}})})},"dijit/form/RadioButton":function(){define(["dojo/_base/declare","./CheckBox","./_RadioButtonMixin"],function(f,k,h){return f("dijit.form.RadioButton",[k,h],{baseClass:"dijitRadio"})})},"dijit/form/CheckBox":function(){define("require,dojo/_base/declare,dojo/dom-attr,dojo/has,dojo/query,dojo/ready,./ToggleButton,./_CheckBoxMixin,dojo/text!./templates/CheckBox.html,dojo/NodeList-dom".split(","),
+function(f,k,h,j,e,c,i,b,g){j("dijit-legacy-requires")&&c(0,function(){f(["dijit/form/RadioButton"])});return k("dijit.form.CheckBox",[i,b],{templateString:g,baseClass:"dijitCheckBox",_setValueAttr:function(a,b){"string"==typeof a&&(this.inherited(arguments),a=!0);this._created&&this.set("checked",a,b)},_getValueAttr:function(){return this.checked?this.value:!1},_setIconClassAttr:null,postMixInProperties:function(){this.inherited(arguments);this.checkedAttrSetting=this.checked?"checked":""},_fillContent:function(){},
+_onFocus:function(){this.id&&e("label[for='"+this.id+"']").addClass("dijitFocusedLabel");this.inherited(arguments)},_onBlur:function(){this.id&&e("label[for='"+this.id+"']").removeClass("dijitFocusedLabel");this.inherited(arguments)}})})},"dijit/form/_CheckBoxMixin":function(){define(["dojo/_base/declare","dojo/dom-attr","dojo/_base/event"],function(f,k,h){return f("dijit.form._CheckBoxMixin",null,{type:"checkbox",value:"on",readOnly:!1,_aria_attr:"aria-checked",_setReadOnlyAttr:function(f){this._set("readOnly",
+f);k.set(this.focusNode,"readOnly",f);this.focusNode.setAttribute("aria-readonly",f)},_setLabelAttr:void 0,_getSubmitValue:function(f){return!f&&0!==f?"on":f},_setValueAttr:function(f){f=this._getSubmitValue(f);this._set("value",f);k.set(this.focusNode,"value",f)},reset:function(){this.inherited(arguments);this._set("value",this.params.value||"on");k.set(this.focusNode,"value",this.value)},_onClick:function(f){return this.readOnly?(h.stop(f),!1):this.inherited(arguments)}})})},"url:dijit/form/templates/CheckBox.html":'<div class="dijit dijitReset dijitInline" role="presentation"\n\t><input\n\t \t${!nameAttrSetting} type="${type}" ${checkedAttrSetting}\n\t\tclass="dijitReset dijitCheckBoxInput"\n\t\tdata-dojo-attach-point="focusNode"\n\t \tdata-dojo-attach-event="onclick:_onClick"\n/></div>\n',
+"dijit/form/_RadioButtonMixin":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom-attr,dojo/_base/event,dojo/_base/lang,dojo/query,../registry".split(","),function(f,k,h,j,e,c,i){return k("dijit.form._RadioButtonMixin",null,{type:"radio",_getRelatedWidgets:function(){var b=[];c("input[type=radio]",this.focusNode.form||this.ownerDocument).forEach(e.hitch(this,function(c){c.name==this.name&&c.form==this.focusNode.form&&(c=i.getEnclosingWidget(c))&&b.push(c)}));return b},_setCheckedAttr:function(b){this.inherited(arguments);
+this._created&&b&&f.forEach(this._getRelatedWidgets(),e.hitch(this,function(b){b!=this&&b.checked&&b.set("checked",!1)}))},_getSubmitValue:function(b){return null===b?"on":b},_onClick:function(b){if(this.checked||this.disabled)return j.stop(b),!1;return this.readOnly?(j.stop(b),f.forEach(this._getRelatedWidgets(),e.hitch(this,function(b){h.set(this.focusNode||this.domNode,"checked",b.checked)})),!1):this.inherited(arguments)}})})},"dijit/form/Select":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dom-attr,dojo/dom-class,dojo/dom-geometry,dojo/_base/event,dojo/i18n,dojo/_base/lang,dojo/sniff,./_FormSelectWidget,../_HasDropDown,../Menu,../MenuItem,../MenuSeparator,../Tooltip,dojo/text!./templates/Select.html,dojo/i18n!./nls/validate".split(","),
+function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o){var r=k("dijit.form._SelectMenu",d,{autoFocus:!0,buildRendering:function(){this.inherited(arguments);var a=this.menuTableNode=this.domNode,b=this.domNode=this.ownerDocument.createElement("div");b.style.cssText="overflow-x: hidden; overflow-y: scroll";a.parentNode&&a.parentNode.replaceChild(b,a);j.remove(a,"dijitMenuTable");b.className=a.className+" dijitSelectMenu";a.className="dijitReset dijitMenuTable";a.setAttribute("role","listbox");b.setAttribute("role",
+"presentation");b.appendChild(a)},postCreate:function(){this.inherited(arguments);this.connect(this.domNode,"onselectstart",c.stop)},focus:function(){var a=!1,c=this.parentWidget.value;b.isArray(c)&&(c=c[c.length-1]);c&&f.forEach(this.parentWidget._getChildren(),function(b){b.option&&c===b.option.value&&(a=!0,this.focusChild(b,!1))},this);a||this.inherited(arguments)},resize:function(a){if(a&&(e.setMarginBox(this.domNode,a),"w"in a))this.menuTableNode.style.width="100%"}}),k=k("dijit.form.Select",
+[a,l],{baseClass:"dijitSelect dijitValidationTextBox",templateString:o,_buttonInputDisabled:g("ie")?"disabled":"",required:!1,state:"",message:"",tooltipPosition:[],emptyLabel:"&#160;",_isLoaded:!1,_childrenLoaded:!1,_fillContent:function(){this.inherited(arguments);if(this.options.length&&!this.value&&this.srcNodeRef){var a=this.srcNodeRef.selectedIndex||0;this.value=this.options[0<=a?a:0].value}this.dropDown=new r({id:this.id+"_menu",parentWidget:this});j.add(this.dropDown.domNode,this.baseClass.replace(/\s+|$/g,
"Menu "))},_getMenuItemForOption:function(a){if(!a.value&&!a.label)return new m({ownerDocument:this.ownerDocument});var c=b.hitch(this,"_setValueAttr",a),a=new p({option:a,label:a.label||this.emptyLabel,onClick:c,ownerDocument:this.ownerDocument,dir:this.dir,disabled:a.disabled||!1});a.focusNode.setAttribute("role","option");return a},_addOptionItem:function(a){this.dropDown&&this.dropDown.addChild(this._getMenuItemForOption(a))},_getChildren:function(){return!this.dropDown?[]:this.dropDown.getChildren()},
-_loadChildren:function(a){!0===a?(this.dropDown&&delete this.dropDown.focusedChild,this.options.length?this.inherited(arguments):(e.forEach(this._getChildren(),function(a){a.destroyRecursive()}),this.dropDown.addChild(new p({ownerDocument:this.ownerDocument,label:this.emptyLabel})))):this._updateSelection();this._isLoaded=!1;this._childrenLoaded=!0;this._loadingStore||this._setValueAttr(this.value,!1)},_refreshState:function(){this._started&&this.validate(this.focused)},startup:function(){this.inherited(arguments);
-this._refreshState()},_setValueAttr:function(a){this.inherited(arguments);i.set(this.valueNode,"value",this.get("value"));this._refreshState()},_setDisabledAttr:function(a){this.inherited(arguments);this._refreshState()},_setRequiredAttr:function(a){this._set("required",a);this.focusNode.setAttribute("aria-required",a);this._refreshState()},_setOptionsAttr:function(a){this._isLoaded=!1;this._set("options",a)},_setDisplay:function(a){a=a||this.emptyLabel;this.containerNode.innerHTML='<span role="option" class="dijitReset dijitInline '+
+_loadChildren:function(a){!0===a?(this.dropDown&&delete this.dropDown.focusedChild,this.options.length?this.inherited(arguments):(f.forEach(this._getChildren(),function(a){a.destroyRecursive()}),this.dropDown.addChild(new p({ownerDocument:this.ownerDocument,label:this.emptyLabel})))):this._updateSelection();this._isLoaded=!1;this._childrenLoaded=!0;this._loadingStore||this._setValueAttr(this.value,!1)},_refreshState:function(){this._started&&this.validate(this.focused)},startup:function(){this.inherited(arguments);
+this._refreshState()},_setValueAttr:function(a){this.inherited(arguments);h.set(this.valueNode,"value",this.get("value"));this._refreshState()},_setDisabledAttr:function(a){this.inherited(arguments);this._refreshState()},_setRequiredAttr:function(a){this._set("required",a);this.focusNode.setAttribute("aria-required",a);this._refreshState()},_setOptionsAttr:function(a){this._isLoaded=!1;this._set("options",a)},_setDisplay:function(a){a=a||this.emptyLabel;this.containerNode.innerHTML='<span role="option" class="dijitReset dijitInline '+
this.baseClass.replace(/\s+|$/g,"Label ")+'">'+a+"</span>"},validate:function(a){a=this.disabled||this.isValid(a);this._set("state",a?"":this._hasBeenBlurred?"Error":"Incomplete");this.focusNode.setAttribute("aria-invalid",a?"false":"true");var b=a?"":this._missingMsg;b&&this.focused&&this._hasBeenBlurred?n.show(b,this.domNode,this.tooltipPosition,!this.isLeftToRight()):n.hide(this.domNode);this._set("message",b);return a},isValid:function(){return!this.required||0===this.value||!/^\s*$/.test(this.value||
-"")},reset:function(){this.inherited(arguments);n.hide(this.domNode);this._refreshState()},postMixInProperties:function(){this.inherited(arguments);this._missingMsg=h.getLocalization("dijit.form","validate",this.lang).missingMessage},postCreate:function(){this.inherited(arguments);this.connect(this.domNode,"onselectstart",g.stop);this.domNode.setAttribute("aria-expanded","false");9>f("ie")&&this.defer(function(){try{var a=domStyle.getComputedStyle(this.domNode);if(a){var b=a.fontFamily;if(b){var c=
-this.domNode.getElementsByTagName("INPUT");if(c)for(a=0;a<c.length;a++)c[a].style.fontFamily=b}}}catch(d){}})},_setStyleAttr:function(a){this.inherited(arguments);l.toggle(this.domNode,this.baseClass.replace(/\s+|$/g,"FixedWidth "),!!this.domNode.style.width)},isLoaded:function(){return this._isLoaded},loadDropDown:function(a){this._loadChildren(!0);this._isLoaded=!0;a()},closeDropDown:function(){this.inherited(arguments);if(this.dropDown&&this.dropDown.menuTableNode)this.dropDown.menuTableNode.style.width=
-""},destroy:function(a){this.dropDown&&!this.dropDown._destroyed&&(this.dropDown.destroyRecursive(a),delete this.dropDown);this.inherited(arguments)},_onFocus:function(){this.validate(!0);this.inherited(arguments)},_onBlur:function(){n.hide(this.domNode);this.inherited(arguments);this.validate(!1)}});j._Menu=r;return j})},"dijit/form/_FormSelectWidget":function(){define("dojo/_base/array,dojo/_base/Deferred,dojo/aspect,dojo/data/util/sorter,dojo/_base/declare,dojo/dom,dojo/dom-class,dojo/_base/kernel,dojo/_base/lang,dojo/query,dojo/when,dojo/store/util/QueryResults,./_FormValueWidget".split(","),
-function(e,j,i,l,c,g,h,b,f,a,k,d,p){return c("dijit.form._FormSelectWidget",p,{multiple:!1,options:null,store:null,query:null,queryOptions:null,labelAttr:"",onFetch:null,sortByLabel:!0,loadChildrenOnOpen:!1,onLoadDeferred:null,getOptions:function(a){var b=a,c=this.options||[],d=c.length;if(void 0===b)return c;if(f.isArray(b))return e.map(b,"return this.getOptions(item);",this);f.isObject(a)&&(e.some(this.options,function(a,c){return a===b||a.value&&a.value===b.value?(b=c,!0):!1})||(b=-1));if("string"==
-typeof b)for(a=0;a<d;a++)if(c[a].value===b){b=a;break}return"number"==typeof b&&0<=b&&b<d?this.options[b]:null},addOption:function(a){f.isArray(a)||(a=[a]);e.forEach(a,function(a){a&&f.isObject(a)&&this.options.push(a)},this);this._loadChildren()},removeOption:function(a){f.isArray(a)||(a=[a]);a=this.getOptions(a);e.forEach(a,function(a){if(a)this.options=e.filter(this.options,function(b){return b.value!==a.value||b.label!==a.label}),this._removeOptionItem(a)},this);this._loadChildren()},updateOption:function(a){f.isArray(a)||
-(a=[a]);e.forEach(a,function(a){var b=this.getOptions(a),c;if(b)for(c in a)b[c]=a[c]},this);this._loadChildren()},setStore:function(a,b,c){var g=this.store,c=c||{};if(g!==a){for(var h;h=this._notifyConnections.pop();)h.remove();if(!a.get&&(f.mixin(a,{_oldAPI:!0,get:function(a){var b=new j;this.fetchItemByIdentity({identity:a,onItem:function(a){b.resolve(a)},onError:function(a){b.reject(a)}});return b.promise},query:function(a,b){var c=new j(function(){e.abort&&e.abort()});c.total=new j;var e=this.fetch(f.mixin({query:a,
-onBegin:function(a){c.total.resolve(a)},onComplete:function(a){c.resolve(a)},onError:function(a){c.reject(a)}},b));return new d(c)}}),a.getFeatures()["dojo.data.api.Notification"]))this._notifyConnections=[i.after(a,"onNew",f.hitch(this,"_onNewItem"),!0),i.after(a,"onDelete",f.hitch(this,"_onDeleteItem"),!0),i.after(a,"onSet",f.hitch(this,"_onSetItem"),!0)];this._set("store",a)}this.options&&this.options.length&&this.removeOption(this.options);this._queryRes&&this._queryRes.close&&this._queryRes.close();
-c.query&&(this._set("query",c.query),this._set("queryOptions",c.queryOptions));if(a)this._loadingStore=!0,this.onLoadDeferred=new j,this._queryRes=a.query(this.query,this.queryOptions),k(this._queryRes,f.hitch(this,function(d){if(this.sortByLabel&&!c.sort&&d.length)if(d[0].getValue)d.sort(l.createSortFunction([{attribute:a.getLabelAttributes(d[0])[0]}],a));else{var g=this.labelAttr;d.sort(function(a,b){return a[g]>b[g]?1:b[g]>a[g]?-1:0})}c.onFetch&&(d=c.onFetch.call(this,d,c));e.forEach(d,function(a){this._addOptionForItem(a)},
-this);this._queryRes.observe&&this._queryRes.observe(f.hitch(this,function(a,b,c){b==c?this._onSetItem(a):(-1!=b&&this._onDeleteItem(a),-1!=c&&this._onNewItem(a))}),!0);this._loadingStore=!1;this.set("value","_pendingValue"in this?this._pendingValue:b);delete this._pendingValue;this.loadChildrenOnOpen?this._pseudoLoadChildren(d):this._loadChildren();this.onLoadDeferred.resolve(!0);this.onSetStore()}),function(a){this.onLoadDeferred.reject(a)});return g},_setValueAttr:function(a,b){this._onChangeActive||
-(b=null);if(this._loadingStore)this._pendingValue=a;else{var c=this.getOptions()||[];f.isArray(a)||(a=[a]);e.forEach(a,function(b,d){f.isObject(b)||(b+="");"string"===typeof b&&(a[d]=e.filter(c,function(a){return a.value===b})[0]||{value:"",label:""})},this);a=e.filter(a,function(a){return a&&a.value});if(!this.multiple&&(!a[0]||!a[0].value)&&c.length)a[0]=c[0];e.forEach(c,function(b){b.selected=e.some(a,function(a){return a.value===b.value})});var d=e.map(a,function(a){return a.value}),g=e.map(a,
-function(a){return a.label});"undefined"==typeof d||"undefined"==typeof d[0]||(this._setDisplay(this.multiple?g:g[0]),this.inherited(arguments,[this.multiple?d:d[0],b]),this._updateSelection())}},_getDisplayedValueAttr:function(){var a=this.get("value");f.isArray(a)||(a=[a]);a=e.map(this.getOptions(a),function(a){return a&&"label"in a?a.label:a?a.value:null},this);return this.multiple?a:a[0]},_loadChildren:function(){this._loadingStore||(e.forEach(this._getChildren(),function(a){a.destroyRecursive()}),
-e.forEach(this.options,this._addOptionItem,this),this._updateSelection())},_updateSelection:function(){this._set("value",this._getValueFromOpts());var a=this.value;f.isArray(a)||(a=[a]);a&&a[0]&&e.forEach(this._getChildren(),function(b){var c=e.some(a,function(a){return b.option&&a===b.option.value});h.toggle(b.domNode,this.baseClass.replace(/\s+|$/g,"SelectedOption "),c);b.domNode.setAttribute("aria-selected",c?"true":"false")},this)},_getValueFromOpts:function(){var a=this.getOptions()||[];if(!this.multiple&&
-a.length){var b=e.filter(a,function(a){return a.selected})[0];if(b&&b.value)return b.value;a[0].selected=!0;return a[0].value}return this.multiple?e.map(e.filter(a,function(a){return a.selected}),function(a){return a.value})||[]:""},_onNewItem:function(a,b){(!b||!b.parent)&&this._addOptionForItem(a)},_onDeleteItem:function(a){this.removeOption(this.store.getIdentity(a))},_onSetItem:function(a){this.updateOption(this._getOptionObjForItem(a))},_getOptionObjForItem:function(a){var b=this.store,c=this.labelAttr&&
-this.labelAttr in a?a[this.labelAttr]:b.getLabel(a);return{value:c?b.getIdentity(a):null,label:c,item:a}},_addOptionForItem:function(a){var b=this.store;b.isItemLoaded&&!b.isItemLoaded(a)?b.loadItem({item:a,onItem:function(a){this._addOptionForItem(a)},scope:this}):this.addOption(this._getOptionObjForItem(a))},constructor:function(a){this._oValue=(a||{}).value||null;this._notifyConnections=[]},buildRendering:function(){this.inherited(arguments);g.setSelectable(this.focusNode,!1)},_fillContent:function(){if(!this.options)this.options=
+"")},reset:function(){this.inherited(arguments);n.hide(this.domNode);this._refreshState()},postMixInProperties:function(){this.inherited(arguments);this._missingMsg=i.getLocalization("dijit.form","validate",this.lang).missingMessage},postCreate:function(){this.inherited(arguments);this.connect(this.domNode,"onselectstart",c.stop);this.domNode.setAttribute("aria-expanded","false");9>g("ie")&&this.defer(function(){try{var a=domStyle.getComputedStyle(this.domNode);if(a){var b=a.fontFamily;if(b){var c=
+this.domNode.getElementsByTagName("INPUT");if(c)for(a=0;a<c.length;a++)c[a].style.fontFamily=b}}}catch(d){}})},_setStyleAttr:function(a){this.inherited(arguments);j.toggle(this.domNode,this.baseClass.replace(/\s+|$/g,"FixedWidth "),!!this.domNode.style.width)},isLoaded:function(){return this._isLoaded},loadDropDown:function(a){this._loadChildren(!0);this._isLoaded=!0;a()},closeDropDown:function(){this.inherited(arguments);if(this.dropDown&&this.dropDown.menuTableNode)this.dropDown.menuTableNode.style.width=
+""},destroy:function(a){this.dropDown&&!this.dropDown._destroyed&&(this.dropDown.destroyRecursive(a),delete this.dropDown);this.inherited(arguments)},_onFocus:function(){this.validate(!0);this.inherited(arguments)},_onBlur:function(){n.hide(this.domNode);this.inherited(arguments);this.validate(!1)}});k._Menu=r;return k})},"dijit/form/_FormSelectWidget":function(){define("dojo/_base/array,dojo/_base/Deferred,dojo/aspect,dojo/data/util/sorter,dojo/_base/declare,dojo/dom,dojo/dom-class,dojo/_base/kernel,dojo/_base/lang,dojo/query,dojo/when,dojo/store/util/QueryResults,./_FormValueWidget".split(","),
+function(f,k,h,j,e,c,i,b,g,a,l,d,p){return e("dijit.form._FormSelectWidget",p,{multiple:!1,options:null,store:null,query:null,queryOptions:null,labelAttr:"",onFetch:null,sortByLabel:!0,loadChildrenOnOpen:!1,onLoadDeferred:null,getOptions:function(a){var b=a,c=this.options||[],d=c.length;if(void 0===b)return c;if(g.isArray(b))return f.map(b,"return this.getOptions(item);",this);g.isObject(a)&&(f.some(this.options,function(a,c){return a===b||a.value&&a.value===b.value?(b=c,!0):!1})||(b=-1));if("string"==
+typeof b)for(a=0;a<d;a++)if(c[a].value===b){b=a;break}return"number"==typeof b&&0<=b&&b<d?this.options[b]:null},addOption:function(a){g.isArray(a)||(a=[a]);f.forEach(a,function(a){a&&g.isObject(a)&&this.options.push(a)},this);this._loadChildren()},removeOption:function(a){g.isArray(a)||(a=[a]);a=this.getOptions(a);f.forEach(a,function(a){if(a)this.options=f.filter(this.options,function(b){return b.value!==a.value||b.label!==a.label}),this._removeOptionItem(a)},this);this._loadChildren()},updateOption:function(a){g.isArray(a)||
+(a=[a]);f.forEach(a,function(a){var b=this.getOptions(a),c;if(b)for(c in a)b[c]=a[c]},this);this._loadChildren()},setStore:function(a,b,c){var e=this.store,c=c||{};if(e!==a){for(var i;i=this._notifyConnections.pop();)i.remove();if(!a.get&&(g.mixin(a,{_oldAPI:!0,get:function(a){var b=new k;this.fetchItemByIdentity({identity:a,onItem:function(a){b.resolve(a)},onError:function(a){b.reject(a)}});return b.promise},query:function(a,b){var c=new k(function(){e.abort&&e.abort()});c.total=new k;var e=this.fetch(g.mixin({query:a,
+onBegin:function(a){c.total.resolve(a)},onComplete:function(a){c.resolve(a)},onError:function(a){c.reject(a)}},b));return new d(c)}}),a.getFeatures()["dojo.data.api.Notification"]))this._notifyConnections=[h.after(a,"onNew",g.hitch(this,"_onNewItem"),!0),h.after(a,"onDelete",g.hitch(this,"_onDeleteItem"),!0),h.after(a,"onSet",g.hitch(this,"_onSetItem"),!0)];this._set("store",a)}this.options&&this.options.length&&this.removeOption(this.options);this._queryRes&&this._queryRes.close&&this._queryRes.close();
+c.query&&(this._set("query",c.query),this._set("queryOptions",c.queryOptions));if(a)this._loadingStore=!0,this.onLoadDeferred=new k,this._queryRes=a.query(this.query,this.queryOptions),l(this._queryRes,g.hitch(this,function(d){if(this.sortByLabel&&!c.sort&&d.length)if(d[0].getValue)d.sort(j.createSortFunction([{attribute:a.getLabelAttributes(d[0])[0]}],a));else{var e=this.labelAttr;d.sort(function(a,b){return a[e]>b[e]?1:b[e]>a[e]?-1:0})}c.onFetch&&(d=c.onFetch.call(this,d,c));f.forEach(d,function(a){this._addOptionForItem(a)},
+this);this._queryRes.observe&&this._queryRes.observe(g.hitch(this,function(a,b,c){b==c?this._onSetItem(a):(-1!=b&&this._onDeleteItem(a),-1!=c&&this._onNewItem(a))}),!0);this._loadingStore=!1;this.set("value","_pendingValue"in this?this._pendingValue:b);delete this._pendingValue;this.loadChildrenOnOpen?this._pseudoLoadChildren(d):this._loadChildren();this.onLoadDeferred.resolve(!0);this.onSetStore()}),function(a){this.onLoadDeferred.reject(a)});return e},_setValueAttr:function(a,b){this._onChangeActive||
+(b=null);if(this._loadingStore)this._pendingValue=a;else{var c=this.getOptions()||[];g.isArray(a)||(a=[a]);f.forEach(a,function(b,d){g.isObject(b)||(b+="");"string"===typeof b&&(a[d]=f.filter(c,function(a){return a.value===b})[0]||{value:"",label:""})},this);a=f.filter(a,function(a){return a&&a.value});if(!this.multiple&&(!a[0]||!a[0].value)&&c.length)a[0]=c[0];f.forEach(c,function(b){b.selected=f.some(a,function(a){return a.value===b.value})});var d=f.map(a,function(a){return a.value}),e=f.map(a,
+function(a){return a.label});"undefined"==typeof d||"undefined"==typeof d[0]||(this._setDisplay(this.multiple?e:e[0]),this.inherited(arguments,[this.multiple?d:d[0],b]),this._updateSelection())}},_getDisplayedValueAttr:function(){var a=this.get("value");g.isArray(a)||(a=[a]);a=f.map(this.getOptions(a),function(a){return a&&"label"in a?a.label:a?a.value:null},this);return this.multiple?a:a[0]},_loadChildren:function(){this._loadingStore||(f.forEach(this._getChildren(),function(a){a.destroyRecursive()}),
+f.forEach(this.options,this._addOptionItem,this),this._updateSelection())},_updateSelection:function(){this._set("value",this._getValueFromOpts());var a=this.value;g.isArray(a)||(a=[a]);a&&a[0]&&f.forEach(this._getChildren(),function(b){var c=f.some(a,function(a){return b.option&&a===b.option.value});i.toggle(b.domNode,this.baseClass.replace(/\s+|$/g,"SelectedOption "),c);b.domNode.setAttribute("aria-selected",c?"true":"false")},this)},_getValueFromOpts:function(){var a=this.getOptions()||[];if(!this.multiple&&
+a.length){var b=f.filter(a,function(a){return a.selected})[0];if(b&&b.value)return b.value;a[0].selected=!0;return a[0].value}return this.multiple?f.map(f.filter(a,function(a){return a.selected}),function(a){return a.value})||[]:""},_onNewItem:function(a,b){(!b||!b.parent)&&this._addOptionForItem(a)},_onDeleteItem:function(a){this.removeOption(this.store.getIdentity(a))},_onSetItem:function(a){this.updateOption(this._getOptionObjForItem(a))},_getOptionObjForItem:function(a){var b=this.store,c=this.labelAttr&&
+this.labelAttr in a?a[this.labelAttr]:b.getLabel(a);return{value:c?b.getIdentity(a):null,label:c,item:a}},_addOptionForItem:function(a){var b=this.store;b.isItemLoaded&&!b.isItemLoaded(a)?b.loadItem({item:a,onItem:function(a){this._addOptionForItem(a)},scope:this}):this.addOption(this._getOptionObjForItem(a))},constructor:function(a){this._oValue=(a||{}).value||null;this._notifyConnections=[]},buildRendering:function(){this.inherited(arguments);c.setSelectable(this.focusNode,!1)},_fillContent:function(){if(!this.options)this.options=
this.srcNodeRef?a("> *",this.srcNodeRef).map(function(a){return"separator"===a.getAttribute("type")?{value:"",label:"",selected:!1,disabled:!1}:{value:a.getAttribute("data-"+b._scopeName+"-value")||a.getAttribute("value"),label:""+a.innerHTML,selected:a.getAttribute("selected")||!1,disabled:a.getAttribute("disabled")||!1}},this):[];this.value?this.multiple&&"string"==typeof this.value&&this._set("value",this.value.split(",")):this._set("value",this._getValueFromOpts())},postCreate:function(){this.inherited(arguments);
this.connect(this,"onChange","_updateSelection");var a=this.store;if(a&&(a.getIdentity||a.getFeatures()["dojo.data.api.Identity"]))this.store=null,this.setStore(a,this._oValue)},startup:function(){this._loadChildren();this.inherited(arguments)},destroy:function(){for(var a;a=this._notifyConnections.pop();)a.remove();this._queryRes&&this._queryRes.close&&this._queryRes.close();this.inherited(arguments)},_addOptionItem:function(){},_removeOptionItem:function(){},_setDisplay:function(){},_getChildren:function(){return[]},
-_getSelectedOptionsAttr:function(){return this.getOptions(this.get("value"))},_pseudoLoadChildren:function(){},onSetStore:function(){}})})},"dojo/data/util/sorter":function(){define(["../../_base/lang"],function(e){var j={};e.setObject("dojo.data.util.sorter",j);j.basicComparator=function(e,l){var c=-1;null===e&&(e=void 0);null===l&&(l=void 0);if(e==l)c=0;else if(e>l||null==e)c=1;return c};j.createSortFunction=function(e,l){function c(a,b,c,d){return function(f,e){var g=d.getValue(f,a),h=d.getValue(e,
-a);return b*c(g,h)}}for(var g=[],h,b=l.comparatorMap,f=j.basicComparator,a=0;a<e.length;a++){h=e[a];var k=h.attribute;if(k){h=h.descending?-1:1;var d=f;b&&("string"!==typeof k&&"toString"in k&&(k=k.toString()),d=b[k]||f);g.push(c(k,h,d,l))}}return function(a,b){for(var c=0;c<g.length;){var d=g[c++](a,b);if(0!==d)return d}return 0}};return j})},"dojo/store/util/QueryResults":function(){define(["../../_base/array","../../_base/lang","../../_base/Deferred"],function(e,j,i){var l=function(c){function g(g){c[g]||
-(c[g]=function(){var b=arguments;return i.when(c,function(c){Array.prototype.unshift.call(b,c);return l(e[g].apply(e,b))})})}if(!c)return c;c.then&&(c=j.delegate(c));g("forEach");g("filter");g("map");if(!c.total)c.total=i.when(c,function(c){return c.length});return c};j.setObject("dojo.store.util.QueryResults",l);return l})},"dijit/MenuSeparator":function(){define("dojo/_base/declare,dojo/dom,./_WidgetBase,./_TemplatedMixin,./_Contained,dojo/text!./templates/MenuSeparator.html".split(","),function(e,
-j,i,l,c,g){return e("dijit.MenuSeparator",[i,l,c],{templateString:g,buildRendering:function(){this.inherited(arguments);j.setSelectable(this.domNode,!1)},isFocusable:function(){return!1}})})},"url: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>',
-"dijit/Tooltip":function(){define("dojo/_base/array,dojo/_base/declare,dojo/_base/fx,dojo/dom,dojo/dom-class,dojo/dom-geometry,dojo/dom-style,dojo/_base/lang,dojo/mouse,dojo/on,dojo/sniff,./_base/manager,./place,./_Widget,./_TemplatedMixin,./BackgroundIframe,dojo/text!./templates/Tooltip.html,./main".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o,r,q){var v=j("dijit._MasterTooltip",[m,n],{duration:d.defaultDuration,templateString:r,postCreate:function(){this.ownerDocumentBody.appendChild(this.domNode);
-this.bgIframe=new o(this.domNode);this.fadeIn=i.fadeIn({node:this.domNode,duration:this.duration,onEnd:b.hitch(this,"_onShow")});this.fadeOut=i.fadeOut({node:this.domNode,duration:this.duration,onEnd:b.hitch(this,"_onHide")})},show:function(a,c,d,f,e){if(!this.aroundNode||!(this.aroundNode===c&&this.containerNode.innerHTML==a))if("playing"==this.fadeOut.status())this._onDeck=arguments;else{this.containerNode.innerHTML=a;e&&this.set("textDir",e);this.containerNode.align=f?"right":"left";var g=p.around(this.domNode,
-c,d&&d.length?d:s.defaultPosition,!f,b.hitch(this,"orient")),k=g.aroundNodePos;"M"==g.corner.charAt(0)&&"M"==g.aroundCorner.charAt(0)?(this.connectorNode.style.top=k.y+(k.h-this.connectorNode.offsetHeight>>1)-g.y+"px",this.connectorNode.style.left=""):"M"==g.corner.charAt(1)&&"M"==g.aroundCorner.charAt(1)?this.connectorNode.style.left=k.x+(k.w-this.connectorNode.offsetWidth>>1)-g.x+"px":(this.connectorNode.style.left="",this.connectorNode.style.top="");h.set(this.domNode,"opacity",0);this.fadeIn.play();
-this.isShowingNow=!0;this.aroundNode=c}},orient:function(a,b,c,d,f){this.connectorNode.style.top="";var e=d.h,d=d.w;a.className="dijitTooltip "+{"MR-ML":"dijitTooltipRight","ML-MR":"dijitTooltipLeft","TM-BM":"dijitTooltipAbove","BM-TM":"dijitTooltipBelow","BL-TL":"dijitTooltipBelow dijitTooltipABLeft","TL-BL":"dijitTooltipAbove dijitTooltipABLeft","BR-TR":"dijitTooltipBelow dijitTooltipABRight","TR-BR":"dijitTooltipAbove dijitTooltipABRight","BR-BL":"dijitTooltipRight","BL-BR":"dijitTooltipLeft"}[b+
-"-"+c];this.domNode.style.width="auto";var h=g.position(this.domNode);9==k("ie")&&(h.w+=2);var i=Math.min(Math.max(d,1),h.w);g.setMarginBox(this.domNode,{w:i});"B"==c.charAt(0)&&"B"==b.charAt(0)?(a=g.position(a),b=this.connectorNode.offsetHeight,a.h>e?(this.connectorNode.style.top=e-(f.h+b>>1)+"px",this.connectorNode.style.bottom=""):(this.connectorNode.style.bottom=Math.min(Math.max(f.h/2-b/2,0),a.h-b)+"px",this.connectorNode.style.top="")):(this.connectorNode.style.top="",this.connectorNode.style.bottom=
-"");return Math.max(0,h.w-d)},_onShow:function(){if(k("ie"))this.domNode.style.filter=""},hide:function(a){if(this._onDeck&&this._onDeck[1]==a)this._onDeck=null;else if(this.aroundNode===a)this.fadeIn.stop(),this.isShowingNow=!1,this.aroundNode=null,this.fadeOut.play()},_onHide:function(){this.domNode.style.cssText="";this.containerNode.innerHTML="";if(this._onDeck)this.show.apply(this,this._onDeck),this._onDeck=null},_setAutoTextDir:function(a){this.applyTextDir(a,k("ie")?a.outerText:a.textContent);
-e.forEach(a.children,function(a){this._setAutoTextDir(a)},this)},_setTextDirAttr:function(a){this._set("textDir",a);"auto"==a?this._setAutoTextDir(this.containerNode):this.containerNode.dir=this.textDir}});q.showTooltip=function(a,b,c,d,f){c&&(c=e.map(c,function(a){return{after:"after-centered",before:"before-centered"}[a]||a}));if(!s._masterTT)q._masterTT=s._masterTT=new v;return s._masterTT.show(a,b,c,d,f)};q.hideTooltip=function(a){return s._masterTT&&s._masterTT.hide(a)};var s=j("dijit.Tooltip",
-m,{label:"",showDelay:400,connectId:[],position:[],selector:"",_setConnectIdAttr:function(c){e.forEach(this._connections||[],function(a){e.forEach(a,function(a){a.remove()})},this);this._connectIds=e.filter(b.isArrayLike(c)?c:c?[c]:[],function(a){return l.byId(a,this.ownerDocument)},this);this._connections=e.map(this._connectIds,function(c){var c=l.byId(c,this.ownerDocument),d=this.selector,e=d?function(b){return a.selector(d,b)}:function(a){return a},g=this;return[a(c,e(f.enter),function(){g._onHover(this)}),
-a(c,e("focusin"),function(){g._onHover(this)}),a(c,e(f.leave),b.hitch(g,"_onUnHover")),a(c,e("focusout"),b.hitch(g,"_onUnHover"))]},this);this._set("connectId",c)},addTarget:function(a){a=a.id||a;-1==e.indexOf(this._connectIds,a)&&this.set("connectId",this._connectIds.concat(a))},removeTarget:function(a){a=e.indexOf(this._connectIds,a.id||a);0<=a&&(this._connectIds.splice(a,1),this.set("connectId",this._connectIds))},buildRendering:function(){this.inherited(arguments);c.add(this.domNode,"dijitTooltipData")},
-startup:function(){this.inherited(arguments);var a=this.connectId;e.forEach(b.isArrayLike(a)?a:[a],this.addTarget,this)},getContent:function(){return this.label||this.domNode.innerHTML},_onHover:function(a){if(!this._showTimer)this._showTimer=this.defer(function(){this.open(a)},this.showDelay)},_onUnHover:function(){this._showTimer&&(this._showTimer.remove(),delete this._showTimer);this.close()},open:function(a){this._showTimer&&(this._showTimer.remove(),delete this._showTimer);var b=this.getContent(a);
-if(b)s.show(b,a,this.position,!this.isLeftToRight(),this.textDir),this._connectNode=a,this.onShow(a,this.position)},close:function(){this._connectNode&&(s.hide(this._connectNode),delete this._connectNode,this.onHide());this._showTimer&&(this._showTimer.remove(),delete this._showTimer)},onShow:function(){},onHide:function(){},destroy:function(){this.close();e.forEach(this._connections||[],function(a){e.forEach(a,function(a){a.remove()})},this);this.inherited(arguments)}});s._MasterTooltip=v;s.show=
+_getSelectedOptionsAttr:function(){return this.getOptions(this.get("value"))},_pseudoLoadChildren:function(){},onSetStore:function(){}})})},"dojo/data/util/sorter":function(){define(["../../_base/lang"],function(f){var k={};f.setObject("dojo.data.util.sorter",k);k.basicComparator=function(f,j){var e=-1;null===f&&(f=void 0);null===j&&(j=void 0);if(f==j)e=0;else if(f>j||null==f)e=1;return e};k.createSortFunction=function(f,j){function e(a,b,c,d){return function(g,e){var f=d.getValue(g,a),i=d.getValue(e,
+a);return b*c(f,i)}}for(var c=[],i,b=j.comparatorMap,g=k.basicComparator,a=0;a<f.length;a++){i=f[a];var l=i.attribute;if(l){i=i.descending?-1:1;var d=g;b&&("string"!==typeof l&&"toString"in l&&(l=l.toString()),d=b[l]||g);c.push(e(l,i,d,j))}}return function(a,b){for(var d=0;d<c.length;){var g=c[d++](a,b);if(0!==g)return g}return 0}};return k})},"dojo/store/util/QueryResults":function(){define(["../../_base/array","../../_base/lang","../../_base/Deferred"],function(f,k,h){var j=function(e){function c(c){e[c]||
+(e[c]=function(){var b=arguments;return h.when(e,function(g){Array.prototype.unshift.call(b,g);return j(f[c].apply(f,b))})})}if(!e)return e;e.then&&(e=k.delegate(e));c("forEach");c("filter");c("map");if(!e.total)e.total=h.when(e,function(c){return c.length});return e};k.setObject("dojo.store.util.QueryResults",j);return j})},"dijit/MenuSeparator":function(){define("dojo/_base/declare,dojo/dom,./_WidgetBase,./_TemplatedMixin,./_Contained,dojo/text!./templates/MenuSeparator.html".split(","),function(f,
+k,h,j,e,c){return f("dijit.MenuSeparator",[h,j,e],{templateString:c,buildRendering:function(){this.inherited(arguments);k.setSelectable(this.domNode,!1)},isFocusable:function(){return!1}})})},"url: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>',
+"dijit/Tooltip":function(){define("dojo/_base/array,dojo/_base/declare,dojo/_base/fx,dojo/dom,dojo/dom-class,dojo/dom-geometry,dojo/dom-style,dojo/_base/lang,dojo/mouse,dojo/on,dojo/sniff,./_base/manager,./place,./_Widget,./_TemplatedMixin,./BackgroundIframe,dojo/text!./templates/Tooltip.html,./main".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o,r,q){var v=k("dijit._MasterTooltip",[m,n],{duration:d.defaultDuration,templateString:r,postCreate:function(){this.ownerDocumentBody.appendChild(this.domNode);
+this.bgIframe=new o(this.domNode);this.fadeIn=h.fadeIn({node:this.domNode,duration:this.duration,onEnd:b.hitch(this,"_onShow")});this.fadeOut=h.fadeOut({node:this.domNode,duration:this.duration,onEnd:b.hitch(this,"_onHide")})},show:function(a,c,d,g,e){if(!this.aroundNode||!(this.aroundNode===c&&this.containerNode.innerHTML==a))if("playing"==this.fadeOut.status())this._onDeck=arguments;else{this.containerNode.innerHTML=a;e&&this.set("textDir",e);this.containerNode.align=g?"right":"left";var f=p.around(this.domNode,
+c,d&&d.length?d:s.defaultPosition,!g,b.hitch(this,"orient")),h=f.aroundNodePos;"M"==f.corner.charAt(0)&&"M"==f.aroundCorner.charAt(0)?(this.connectorNode.style.top=h.y+(h.h-this.connectorNode.offsetHeight>>1)-f.y+"px",this.connectorNode.style.left=""):"M"==f.corner.charAt(1)&&"M"==f.aroundCorner.charAt(1)?this.connectorNode.style.left=h.x+(h.w-this.connectorNode.offsetWidth>>1)-f.x+"px":(this.connectorNode.style.left="",this.connectorNode.style.top="");i.set(this.domNode,"opacity",0);this.fadeIn.play();
+this.isShowingNow=!0;this.aroundNode=c}},orient:function(a,b,d,g,e){this.connectorNode.style.top="";var f=g.h,g=g.w;a.className="dijitTooltip "+{"MR-ML":"dijitTooltipRight","ML-MR":"dijitTooltipLeft","TM-BM":"dijitTooltipAbove","BM-TM":"dijitTooltipBelow","BL-TL":"dijitTooltipBelow dijitTooltipABLeft","TL-BL":"dijitTooltipAbove dijitTooltipABLeft","BR-TR":"dijitTooltipBelow dijitTooltipABRight","TR-BR":"dijitTooltipAbove dijitTooltipABRight","BR-BL":"dijitTooltipRight","BL-BR":"dijitTooltipLeft"}[b+
+"-"+d];this.domNode.style.width="auto";var i=c.position(this.domNode);9==l("ie")&&(i.w+=2);var h=Math.min(Math.max(g,1),i.w);c.setMarginBox(this.domNode,{w:h});"B"==d.charAt(0)&&"B"==b.charAt(0)?(a=c.position(a),b=this.connectorNode.offsetHeight,a.h>f?(this.connectorNode.style.top=f-(e.h+b>>1)+"px",this.connectorNode.style.bottom=""):(this.connectorNode.style.bottom=Math.min(Math.max(e.h/2-b/2,0),a.h-b)+"px",this.connectorNode.style.top="")):(this.connectorNode.style.top="",this.connectorNode.style.bottom=
+"");return Math.max(0,i.w-g)},_onShow:function(){if(l("ie"))this.domNode.style.filter=""},hide:function(a){if(this._onDeck&&this._onDeck[1]==a)this._onDeck=null;else if(this.aroundNode===a)this.fadeIn.stop(),this.isShowingNow=!1,this.aroundNode=null,this.fadeOut.play()},_onHide:function(){this.domNode.style.cssText="";this.containerNode.innerHTML="";if(this._onDeck)this.show.apply(this,this._onDeck),this._onDeck=null},_setAutoTextDir:function(a){this.applyTextDir(a,l("ie")?a.outerText:a.textContent);
+f.forEach(a.children,function(a){this._setAutoTextDir(a)},this)},_setTextDirAttr:function(a){this._set("textDir",a);"auto"==a?this._setAutoTextDir(this.containerNode):this.containerNode.dir=this.textDir}});q.showTooltip=function(a,b,c,d,g){c&&(c=f.map(c,function(a){return{after:"after-centered",before:"before-centered"}[a]||a}));if(!s._masterTT)q._masterTT=s._masterTT=new v;return s._masterTT.show(a,b,c,d,g)};q.hideTooltip=function(a){return s._masterTT&&s._masterTT.hide(a)};var s=k("dijit.Tooltip",
+m,{label:"",showDelay:400,connectId:[],position:[],selector:"",_setConnectIdAttr:function(c){f.forEach(this._connections||[],function(a){f.forEach(a,function(a){a.remove()})},this);this._connectIds=f.filter(b.isArrayLike(c)?c:c?[c]:[],function(a){return j.byId(a,this.ownerDocument)},this);this._connections=f.map(this._connectIds,function(c){var c=j.byId(c,this.ownerDocument),d=this.selector,e=d?function(b){return a.selector(d,b)}:function(a){return a},f=this;return[a(c,e(g.enter),function(){f._onHover(this)}),
+a(c,e("focusin"),function(){f._onHover(this)}),a(c,e(g.leave),b.hitch(f,"_onUnHover")),a(c,e("focusout"),b.hitch(f,"_onUnHover"))]},this);this._set("connectId",c)},addTarget:function(a){a=a.id||a;-1==f.indexOf(this._connectIds,a)&&this.set("connectId",this._connectIds.concat(a))},removeTarget:function(a){a=f.indexOf(this._connectIds,a.id||a);0<=a&&(this._connectIds.splice(a,1),this.set("connectId",this._connectIds))},buildRendering:function(){this.inherited(arguments);e.add(this.domNode,"dijitTooltipData")},
+startup:function(){this.inherited(arguments);var a=this.connectId;f.forEach(b.isArrayLike(a)?a:[a],this.addTarget,this)},getContent:function(){return this.label||this.domNode.innerHTML},_onHover:function(a){if(!this._showTimer)this._showTimer=this.defer(function(){this.open(a)},this.showDelay)},_onUnHover:function(){this._showTimer&&(this._showTimer.remove(),delete this._showTimer);this.close()},open:function(a){this._showTimer&&(this._showTimer.remove(),delete this._showTimer);var b=this.getContent(a);
+if(b)s.show(b,a,this.position,!this.isLeftToRight(),this.textDir),this._connectNode=a,this.onShow(a,this.position)},close:function(){this._connectNode&&(s.hide(this._connectNode),delete this._connectNode,this.onHide());this._showTimer&&(this._showTimer.remove(),delete this._showTimer)},onShow:function(){},onHide:function(){},destroy:function(){this.close();f.forEach(this._connections||[],function(a){f.forEach(a,function(a){a.remove()})},this);this.inherited(arguments)}});s._MasterTooltip=v;s.show=
q.showTooltip;s.hide=q.hideTooltip;s.defaultPosition=["after-centered","before-centered"];return s})},"url:dijit/templates/Tooltip.html":'<div class="dijitTooltip dijitTooltipLeft" id="dojoTooltip"\n\t><div class="dijitTooltipContainer dijitTooltipContents" data-dojo-attach-point="containerNode" role=\'alert\'></div\n\t><div class="dijitTooltipConnector" data-dojo-attach-point="connectorNode"></div\n></div>\n',"url:dijit/form/templates/Select.html":'<table class="dijit dijitReset dijitInline dijitLeft"\n\tdata-dojo-attach-point="_buttonNode,tableNode,focusNode" cellspacing=\'0\' cellpadding=\'0\'\n\trole="listbox" aria-haspopup="true"\n\t><tbody role="presentation"><tr role="presentation"\n\t\t><td class="dijitReset dijitStretch dijitButtonContents" role="presentation"\n\t\t\t><div class="dijitReset dijitInputField dijitButtonText" data-dojo-attach-point="containerNode,_popupStateNode" role="presentation"></div\n\t\t\t><div class="dijitReset dijitValidationContainer"\n\t\t\t\t><input class="dijitReset dijitInputField dijitValidationIcon dijitValidationInner" value="&#935; " type="text" tabIndex="-1" readonly="readonly" role="presentation"\n\t\t\t/></div\n\t\t\t><input type="hidden" ${!nameAttrSetting} data-dojo-attach-point="valueNode" value="${value}" aria-hidden="true"\n\t\t/></td\n\t\t><td class="dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton dijitArrowButtonContainer"\n\t\t\tdata-dojo-attach-point="titleNode" role="presentation"\n\t\t\t><input class="dijitReset dijitInputField dijitArrowButtonInner" value="&#9660; " type="text" tabIndex="-1" readonly="readonly" role="presentation"\n\t\t\t\t${_buttonInputDisabled}\n\t\t/></td\n\t></tr></tbody\n></table>\n',
-"dijit/form/HorizontalSlider":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dnd/move,dojo/_base/event,dojo/_base/fx,dojo/dom-geometry,dojo/dom-style,dojo/keys,dojo/_base/lang,dojo/sniff,dojo/dnd/Moveable,dojo/dnd/Mover,dojo/query,dojo/mouse,../registry,../focus,../typematic,./Button,./_FormValueWidget,../_Container,dojo/text!./templates/HorizontalSlider.html".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,n,o,r,q,v,s,u){var t=j("dijit.form._SliderMover",d,{onMouseMove:function(a){var b=
-this.widget,c=b._abspos;if(!c)c=b._abspos=g.position(b.sliderBarContainer,!0),b._setPixelValue_=f.hitch(b,"_setPixelValue"),b._isReversed_=b._isReversed();a=a[b._mousePixelCoord]-c[b._startingPixelCoord];b._setPixelValue_(b._isReversed_?c[b._pixelCount]-a:a,c[b._pixelCount],!1)},destroy:function(a){d.prototype.destroy.apply(this,arguments);var b=this.widget;b._abspos=null;b._setValueAttr(b.value,!0)}}),i=j("dijit.form.HorizontalSlider",[v,s],{templateString:u,value:0,showButtons:!0,minimum:0,maximum:100,
+"dijit/form/HorizontalSlider":function(){define("dojo/_base/array,dojo/_base/declare,dojo/dnd/move,dojo/_base/event,dojo/_base/fx,dojo/dom-geometry,dojo/dom-style,dojo/keys,dojo/_base/lang,dojo/sniff,dojo/dnd/Moveable,dojo/dnd/Mover,dojo/query,dojo/mouse,../registry,../focus,../typematic,./Button,./_FormValueWidget,../_Container,dojo/text!./templates/HorizontalSlider.html".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,n,o,r,q,v,s,t){var u=k("dijit.form._SliderMover",d,{onMouseMove:function(a){var b=
+this.widget,d=b._abspos;if(!d)d=b._abspos=c.position(b.sliderBarContainer,!0),b._setPixelValue_=g.hitch(b,"_setPixelValue"),b._isReversed_=b._isReversed();a=a[b._mousePixelCoord]-d[b._startingPixelCoord];b._setPixelValue_(b._isReversed_?d[b._pixelCount]-a:a,d[b._pixelCount],!1)},destroy:function(a){d.prototype.destroy.apply(this,arguments);var b=this.widget;b._abspos=null;b._setValueAttr(b.value,!0)}}),h=k("dijit.form.HorizontalSlider",[v,s],{templateString:t,value:0,showButtons:!0,minimum:0,maximum:100,
discreteValues:Infinity,pageIncrement:2,clickSelect:!0,slideDuration:n.defaultDuration,_setIdAttr:"",baseClass:"dijitSlider",cssStateNodes:{incrementButton:"dijitSliderIncrementButton",decrementButton:"dijitSliderDecrementButton",focusNode:"dijitSliderThumb"},_mousePixelCoord:"pageX",_pixelCount:"w",_startingPixelCoord:"x",_handleOffsetCoord:"left",_progressPixelSize:"width",_onKeyUp:function(a){!this.disabled&&!this.readOnly&&!a.altKey&&!a.ctrlKey&&!a.metaKey&&this._setValueAttr(this.value,!0)},
_onKeyPress:function(a){if(!this.disabled&&!this.readOnly&&!a.altKey&&!a.ctrlKey&&!a.metaKey){switch(a.charOrCode){case b.HOME:this._setValueAttr(this.minimum,!1);break;case b.END:this._setValueAttr(this.maximum,!1);break;case this._descending||this.isLeftToRight()?b.RIGHT_ARROW:b.LEFT_ARROW:case !1===this._descending?b.DOWN_ARROW:b.UP_ARROW:case !1===this._descending?b.PAGE_DOWN:b.PAGE_UP:this.increment(a);break;case this._descending||this.isLeftToRight()?b.LEFT_ARROW:b.RIGHT_ARROW:case !1===this._descending?
-b.UP_ARROW:b.DOWN_ARROW:case !1===this._descending?b.PAGE_UP:b.PAGE_DOWN:this.decrement(a);break;default:return}l.stop(a)}},_onHandleClick:function(b){!this.disabled&&!this.readOnly&&(a("ie")||o.focus(this.sliderHandle),l.stop(b))},_isReversed:function(){return!this.isLeftToRight()},_onBarClick:function(a){if(!this.disabled&&!this.readOnly&&this.clickSelect){o.focus(this.sliderHandle);l.stop(a);var b=g.position(this.sliderBarContainer,!0),c=a[this._mousePixelCoord]-b[this._startingPixelCoord];this._setPixelValue(this._isReversed()?
-b[this._pixelCount]-c:c,b[this._pixelCount],!0);this._movable.onMouseDown(a)}},_setPixelValue:function(a,b,c){if(!this.disabled&&!this.readOnly){var d=this.discreteValues;if(1>=d||Infinity==d)d=b;d--;a=Math.round(a/(b/d));this._setValueAttr(Math.max(Math.min((this.maximum-this.minimum)*a/d+this.minimum,this.maximum),this.minimum),c)}},_setValueAttr:function(a,b){this._set("value",a);this.valueNode.value=a;this.focusNode.setAttribute("aria-valuenow",a);this.inherited(arguments);var d=(a-this.minimum)/
-(this.maximum-this.minimum),f=!1===this._descending?this.remainingBar:this.progressBar,e=!1===this._descending?this.progressBar:this.remainingBar;this._inProgressAnim&&"stopped"!=this._inProgressAnim.status&&this._inProgressAnim.stop(!0);if(b&&0<this.slideDuration&&f.style[this._progressPixelSize]){var g=this,h={},k=parseFloat(f.style[this._progressPixelSize]),i=this.slideDuration*(d-k/100);if(0!=i)0>i&&(i=0-i),h[this._progressPixelSize]={start:k,end:100*d,units:"%"},this._inProgressAnim=c.animateProperty({node:f,
-duration:i,onAnimate:function(a){e.style[g._progressPixelSize]=100-parseFloat(a[g._progressPixelSize])+"%"},onEnd:function(){delete g._inProgressAnim},properties:h}),this._inProgressAnim.play()}else f.style[this._progressPixelSize]=100*d+"%",e.style[this._progressPixelSize]=100*(1-d)+"%"},_bumpValue:function(a,b){if(!this.disabled&&!this.readOnly){var c=h.getComputedStyle(this.sliderBarContainer),d=g.getContentBox(this.sliderBarContainer,c),c=this.discreteValues;if(1>=c||Infinity==c)c=d[this._pixelCount];
-c--;d=(this.value-this.minimum)*c/(this.maximum-this.minimum)+a;0>d&&(d=0);d>c&&(d=c);d=d*(this.maximum-this.minimum)/c+this.minimum;this._setValueAttr(d,b)}},_onClkBumper:function(a){!this.disabled&&!this.readOnly&&this.clickSelect&&this._setValueAttr(a,!0)},_onClkIncBumper:function(){this._onClkBumper(!1===this._descending?this.minimum:this.maximum)},_onClkDecBumper:function(){this._onClkBumper(!1===this._descending?this.maximum:this.minimum)},decrement:function(a){this._bumpValue(a.charOrCode==
-b.PAGE_DOWN?-this.pageIncrement:-1)},increment:function(a){this._bumpValue(a.charOrCode==b.PAGE_UP?this.pageIncrement:1)},_mouseWheeled:function(a){l.stop(a);this._bumpValue(0>a.wheelDelta?-1:1,!0)},startup:function(){this._started||(e.forEach(this.getChildren(),function(a){this[a.container]!=this.containerNode&&this[a.container].appendChild(a.domNode)},this),this.inherited(arguments))},_typematicCallback:function(a,b,c){if(-1==a)this._setValueAttr(this.value,!0);else this[b==(this._descending?this.incrementButton:
+b.UP_ARROW:b.DOWN_ARROW:case !1===this._descending?b.PAGE_UP:b.PAGE_DOWN:this.decrement(a);break;default:return}j.stop(a)}},_onHandleClick:function(b){!this.disabled&&!this.readOnly&&(a("ie")||o.focus(this.sliderHandle),j.stop(b))},_isReversed:function(){return!this.isLeftToRight()},_onBarClick:function(a){if(!this.disabled&&!this.readOnly&&this.clickSelect){o.focus(this.sliderHandle);j.stop(a);var b=c.position(this.sliderBarContainer,!0),d=a[this._mousePixelCoord]-b[this._startingPixelCoord];this._setPixelValue(this._isReversed()?
+b[this._pixelCount]-d:d,b[this._pixelCount],!0);this._movable.onMouseDown(a)}},_setPixelValue:function(a,b,c){if(!this.disabled&&!this.readOnly){var d=this.discreteValues;if(1>=d||Infinity==d)d=b;d--;a=Math.round(a/(b/d));this._setValueAttr(Math.max(Math.min((this.maximum-this.minimum)*a/d+this.minimum,this.maximum),this.minimum),c)}},_setValueAttr:function(a,b){this._set("value",a);this.valueNode.value=a;this.focusNode.setAttribute("aria-valuenow",a);this.inherited(arguments);var c=(a-this.minimum)/
+(this.maximum-this.minimum),d=!1===this._descending?this.remainingBar:this.progressBar,g=!1===this._descending?this.progressBar:this.remainingBar;this._inProgressAnim&&"stopped"!=this._inProgressAnim.status&&this._inProgressAnim.stop(!0);if(b&&0<this.slideDuration&&d.style[this._progressPixelSize]){var f=this,i={},h=parseFloat(d.style[this._progressPixelSize]),l=this.slideDuration*(c-h/100);if(0!=l)0>l&&(l=0-l),i[this._progressPixelSize]={start:h,end:100*c,units:"%"},this._inProgressAnim=e.animateProperty({node:d,
+duration:l,onAnimate:function(a){g.style[f._progressPixelSize]=100-parseFloat(a[f._progressPixelSize])+"%"},onEnd:function(){delete f._inProgressAnim},properties:i}),this._inProgressAnim.play()}else d.style[this._progressPixelSize]=100*c+"%",g.style[this._progressPixelSize]=100*(1-c)+"%"},_bumpValue:function(a,b){if(!this.disabled&&!this.readOnly){var d=i.getComputedStyle(this.sliderBarContainer),g=c.getContentBox(this.sliderBarContainer,d),d=this.discreteValues;if(1>=d||Infinity==d)d=g[this._pixelCount];
+d--;g=(this.value-this.minimum)*d/(this.maximum-this.minimum)+a;0>g&&(g=0);g>d&&(g=d);g=g*(this.maximum-this.minimum)/d+this.minimum;this._setValueAttr(g,b)}},_onClkBumper:function(a){!this.disabled&&!this.readOnly&&this.clickSelect&&this._setValueAttr(a,!0)},_onClkIncBumper:function(){this._onClkBumper(!1===this._descending?this.minimum:this.maximum)},_onClkDecBumper:function(){this._onClkBumper(!1===this._descending?this.maximum:this.minimum)},decrement:function(a){this._bumpValue(a.charOrCode==
+b.PAGE_DOWN?-this.pageIncrement:-1)},increment:function(a){this._bumpValue(a.charOrCode==b.PAGE_UP?this.pageIncrement:1)},_mouseWheeled:function(a){j.stop(a);this._bumpValue(0>a.wheelDelta?-1:1,!0)},startup:function(){this._started||(f.forEach(this.getChildren(),function(a){this[a.container]!=this.containerNode&&this[a.container].appendChild(a.domNode)},this),this.inherited(arguments))},_typematicCallback:function(a,b,c){if(-1==a)this._setValueAttr(this.value,!0);else this[b==(this._descending?this.incrementButton:
this.decrementButton)?"decrement":"increment"](c)},buildRendering:function(){this.inherited(arguments);if(this.showButtons)this.incrementButton.style.display="",this.decrementButton.style.display="";var a=p('label[for="'+this.id+'"]');if(a.length){if(!a[0].id)a[0].id=this.id+"_label";this.focusNode.setAttribute("aria-labelledby",a[0].id)}this.focusNode.setAttribute("aria-valuemin",this.minimum);this.focusNode.setAttribute("aria-valuemax",this.maximum)},postCreate:function(){this.inherited(arguments);
-this.showButtons&&this.own(r.addMouseListener(this.decrementButton,this,"_typematicCallback",25,500),r.addMouseListener(this.incrementButton,this,"_typematicCallback",25,500));this.connect(this.domNode,m.wheel,"_mouseWheeled");var a=j(t,{widget:this});this._movable=new k(this.sliderHandle,{mover:a});this._layoutHackIE7()},destroy:function(){this._movable.destroy();this._inProgressAnim&&"stopped"!=this._inProgressAnim.status&&this._inProgressAnim.stop(!0);this.inherited(arguments)}});i._Mover=t;return i})},
-"dojo/dnd/move":function(){define("../_base/declare,../dom-geometry,../dom-style,./common,./Mover,./Moveable".split(","),function(e,j,i,l,c,g){l=e("dojo.dnd.move.constrainedMoveable",g,{constraints:function(){},within:!1,constructor:function(c,b){b||(b={});this.constraints=b.constraints;this.within=b.within},onFirstMove:function(c){var b=this.constraintBox=this.constraints.call(this,c);b.r=b.l+b.w;b.b=b.t+b.h;this.within&&(c=j.getMarginSize(c.node),b.r-=c.w,b.b-=c.h)},onMove:function(c,b){var f=this.constraintBox,
-a=c.node.style;this.onMoving(c,b);b.l=b.l<f.l?f.l:f.r<b.l?f.r:b.l;b.t=b.t<f.t?f.t:f.b<b.t?f.b:b.t;a.left=b.l+"px";a.top=b.t+"px";this.onMoved(c,b)}});c=e("dojo.dnd.move.boxConstrainedMoveable",l,{box:{},constructor:function(c,b){var f=b&&b.box;this.constraints=function(){return f}}});e=e("dojo.dnd.move.parentConstrainedMoveable",l,{area:"content",constructor:function(c,b){var f=b&&b.area;this.constraints=function(){var a=this.node.parentNode,b=i.getComputedStyle(a),c=j.getMarginBox(a,b);if("margin"==
-f)return c;var e=j.getMarginExtents(a,b);c.l+=e.l;c.t+=e.t;c.w-=e.w;c.h-=e.h;if("border"==f)return c;e=j.getBorderExtents(a,b);c.l+=e.l;c.t+=e.t;c.w-=e.w;c.h-=e.h;if("padding"==f)return c;e=j.getPadExtents(a,b);c.l+=e.l;c.t+=e.t;c.w-=e.w;c.h-=e.h;return c}}});return{constrainedMoveable:l,boxConstrainedMoveable:c,parentConstrainedMoveable:e}})},"dijit/typematic":function(){define("dojo/_base/array,dojo/_base/connect,dojo/_base/event,dojo/_base/kernel,dojo/_base/lang,dojo/on,dojo/sniff,./main".split(","),
-function(e,j,i,l,c,g,h,b){var f=b.typematic={_fireEventAndReload:function(){this._timer=null;this._callback(++this._count,this._node,this._evt);this._currentTimeout=Math.max(0>this._currentTimeout?this._initialDelay:1<this._subsequentDelay?this._subsequentDelay:Math.round(this._currentTimeout*this._subsequentDelay),this._minDelay);this._timer=setTimeout(c.hitch(this,"_fireEventAndReload"),this._currentTimeout)},trigger:function(a,b,d,f,e,g,h,i){if(e!=this._obj){this.stop();this._initialDelay=h||500;
-this._subsequentDelay=g||0.9;this._minDelay=i||10;this._obj=e;this._node=d;this._count=this._currentTimeout=-1;this._callback=c.hitch(b,f);this._evt={faux:!0};for(var l in a)"layerX"!=l&&"layerY"!=l&&(b=a[l],"function"!=typeof b&&"undefined"!=typeof b&&(this._evt[l]=b));this._fireEventAndReload()}},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(a,b,d,h,m,n,o){if(b.keyCode)b.charOrCode=
-b.keyCode,l.deprecated("keyCode attribute parameter for dijit.typematic.addKeyListener is deprecated. Use charOrCode instead.","","2.0");else if(b.charCode)b.charOrCode=String.fromCharCode(b.charCode),l.deprecated("charCode attribute parameter for dijit.typematic.addKeyListener is deprecated. Use charOrCode instead.","","2.0");var r=[g(a,j._keypress,c.hitch(this,function(c){c.charOrCode==b.charOrCode&&(void 0===b.ctrlKey||b.ctrlKey==c.ctrlKey)&&(void 0===b.altKey||b.altKey==c.altKey)&&(void 0===b.metaKey||
-b.metaKey==(c.metaKey||!1))&&(void 0===b.shiftKey||b.shiftKey==c.shiftKey)?(i.stop(c),f.trigger(c,d,a,h,b,m,n,o)):f._obj==b&&f.stop()})),g(a,"keyup",c.hitch(this,function(){f._obj==b&&f.stop()}))];return{remove:function(){e.forEach(r,function(a){a.remove()})}}},addMouseListener:function(a,b,d,i,m,l){var j=[g(a,"mousedown",c.hitch(this,function(c){c.preventDefault();f.trigger(c,b,a,d,a,i,m,l)})),g(a,"mouseup",c.hitch(this,function(a){this._obj&&a.preventDefault();f.stop()})),g(a,"mouseout",c.hitch(this,
-function(a){this._obj&&a.preventDefault();f.stop()})),g(a,"dblclick",c.hitch(this,function(e){e.preventDefault();9>h("ie")&&(f.trigger(e,b,a,d,a,i,m,l),setTimeout(c.hitch(this,f.stop),50))}))];return{remove:function(){e.forEach(j,function(a){a.remove()})}}},addListener:function(a,b,c,f,g,h,i,l){var j=[this.addKeyListener(b,c,f,g,h,i,l),this.addMouseListener(a,f,g,h,i,l)];return{remove:function(){e.forEach(j,function(a){a.remove()})}}}};return f})},"url:dijit/form/templates/HorizontalSlider.html":'<table class="dijit dijitReset dijitSlider dijitSliderH" cellspacing="0" cellpadding="0" border="0" rules="none" data-dojo-attach-event="onkeypress:_onKeyPress,onkeyup:_onKeyUp"\n\trole="presentation"\n\t><tr class="dijitReset"\n\t\t><td class="dijitReset" colspan="2"></td\n\t\t><td data-dojo-attach-point="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" style="display:none" data-dojo-attach-point="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" data-dojo-attach-event="press:_onClkDecBumper"></div\n\t\t></td\n\t\t><td class="dijitReset"\n\t\t\t><input data-dojo-attach-point="valueNode" type="hidden" ${!nameAttrSetting}\n\t\t\t/><div class="dijitReset dijitSliderBarContainerH" role="presentation" data-dojo-attach-point="sliderBarContainer"\n\t\t\t\t><div role="presentation" data-dojo-attach-point="progressBar" class="dijitSliderBar dijitSliderBarH dijitSliderProgressBar dijitSliderProgressBarH" data-dojo-attach-event="press:_onBarClick"\n\t\t\t\t\t><div class="dijitSliderMoveable dijitSliderMoveableH"\n\t\t\t\t\t\t><div data-dojo-attach-point="sliderHandle,focusNode" class="dijitSliderImageHandle dijitSliderImageHandleH" data-dojo-attach-event="press:_onHandleClick" role="slider"></div\n\t\t\t\t\t></div\n\t\t\t\t></div\n\t\t\t\t><div role="presentation" data-dojo-attach-point="remainingBar" class="dijitSliderBar dijitSliderBarH dijitSliderRemainingBar dijitSliderRemainingBarH" data-dojo-attach-event="press:_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" data-dojo-attach-event="press:_onClkIncBumper"></div\n\t\t></td\n\t\t><td class="dijitReset dijitSliderButtonContainer dijitSliderButtonContainerH"\n\t\t\t><div class="dijitSliderIncrementIconH" style="display:none" data-dojo-attach-point="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 data-dojo-attach-point="containerNode,bottomDecoration" class="dijitReset dijitSliderDecoration dijitSliderDecorationB dijitSliderDecorationH"></td\n\t\t><td class="dijitReset" colspan="2"></td\n\t></tr\n></table>\n',
-"dijit/form/NumberTextBox":function(){define(["dojo/_base/declare","dojo/_base/lang","dojo/number","./RangeBoundTextBox"],function(e,j,i,l){var c=e("dijit.form.NumberTextBoxMixin",null,{pattern:i.regexp,value:NaN,editOptions:{pattern:"#.######"},_formatter:i.format,postMixInProperties:function(){this.inherited(arguments);this._set("type","text")},_setConstraintsAttr:function(c){var e="number"==typeof c.places?c.places:0;e&&e++;if("number"!=typeof c.max)c.max=9*Math.pow(10,15-e);if("number"!=typeof c.min)c.min=
+this.showButtons&&this.own(r.addMouseListener(this.decrementButton,this,"_typematicCallback",25,500),r.addMouseListener(this.incrementButton,this,"_typematicCallback",25,500));this.connect(this.domNode,m.wheel,"_mouseWheeled");var a=k(u,{widget:this});this._movable=new l(this.sliderHandle,{mover:a});this._layoutHackIE7()},destroy:function(){this._movable.destroy();this._inProgressAnim&&"stopped"!=this._inProgressAnim.status&&this._inProgressAnim.stop(!0);this.inherited(arguments)}});h._Mover=u;return h})},
+"dojo/dnd/move":function(){define("../_base/declare,../dom-geometry,../dom-style,./common,./Mover,./Moveable".split(","),function(f,k,h,j,e,c){j=f("dojo.dnd.move.constrainedMoveable",c,{constraints:function(){},within:!1,constructor:function(c,b){b||(b={});this.constraints=b.constraints;this.within=b.within},onFirstMove:function(c){var b=this.constraintBox=this.constraints.call(this,c);b.r=b.l+b.w;b.b=b.t+b.h;this.within&&(c=k.getMarginSize(c.node),b.r-=c.w,b.b-=c.h)},onMove:function(c,b){var g=this.constraintBox,
+a=c.node.style;this.onMoving(c,b);b.l=b.l<g.l?g.l:g.r<b.l?g.r:b.l;b.t=b.t<g.t?g.t:g.b<b.t?g.b:b.t;a.left=b.l+"px";a.top=b.t+"px";this.onMoved(c,b)}});e=f("dojo.dnd.move.boxConstrainedMoveable",j,{box:{},constructor:function(c,b){var g=b&&b.box;this.constraints=function(){return g}}});f=f("dojo.dnd.move.parentConstrainedMoveable",j,{area:"content",constructor:function(c,b){var g=b&&b.area;this.constraints=function(){var a=this.node.parentNode,b=h.getComputedStyle(a),c=k.getMarginBox(a,b);if("margin"==
+g)return c;var e=k.getMarginExtents(a,b);c.l+=e.l;c.t+=e.t;c.w-=e.w;c.h-=e.h;if("border"==g)return c;e=k.getBorderExtents(a,b);c.l+=e.l;c.t+=e.t;c.w-=e.w;c.h-=e.h;if("padding"==g)return c;e=k.getPadExtents(a,b);c.l+=e.l;c.t+=e.t;c.w-=e.w;c.h-=e.h;return c}}});return{constrainedMoveable:j,boxConstrainedMoveable:e,parentConstrainedMoveable:f}})},"dijit/typematic":function(){define("dojo/_base/array,dojo/_base/connect,dojo/_base/event,dojo/_base/kernel,dojo/_base/lang,dojo/on,dojo/sniff,./main".split(","),
+function(f,k,h,j,e,c,i,b){var g=b.typematic={_fireEventAndReload:function(){this._timer=null;this._callback(++this._count,this._node,this._evt);this._currentTimeout=Math.max(0>this._currentTimeout?this._initialDelay:1<this._subsequentDelay?this._subsequentDelay:Math.round(this._currentTimeout*this._subsequentDelay),this._minDelay);this._timer=setTimeout(e.hitch(this,"_fireEventAndReload"),this._currentTimeout)},trigger:function(a,b,c,g,f,i,h,j){if(f!=this._obj){this.stop();this._initialDelay=h||500;
+this._subsequentDelay=i||0.9;this._minDelay=j||10;this._obj=f;this._node=c;this._count=this._currentTimeout=-1;this._callback=e.hitch(b,g);this._evt={faux:!0};for(var k in a)"layerX"!=k&&"layerY"!=k&&(b=a[k],"function"!=typeof b&&"undefined"!=typeof b&&(this._evt[k]=b));this._fireEventAndReload()}},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(a,b,d,i,m,n,o){if(b.keyCode)b.charOrCode=
+b.keyCode,j.deprecated("keyCode attribute parameter for dijit.typematic.addKeyListener is deprecated. Use charOrCode instead.","","2.0");else if(b.charCode)b.charOrCode=String.fromCharCode(b.charCode),j.deprecated("charCode attribute parameter for dijit.typematic.addKeyListener is deprecated. Use charOrCode instead.","","2.0");var r=[c(a,k._keypress,e.hitch(this,function(c){c.charOrCode==b.charOrCode&&(void 0===b.ctrlKey||b.ctrlKey==c.ctrlKey)&&(void 0===b.altKey||b.altKey==c.altKey)&&(void 0===b.metaKey||
+b.metaKey==(c.metaKey||!1))&&(void 0===b.shiftKey||b.shiftKey==c.shiftKey)?(h.stop(c),g.trigger(c,d,a,i,b,m,n,o)):g._obj==b&&g.stop()})),c(a,"keyup",e.hitch(this,function(){g._obj==b&&g.stop()}))];return{remove:function(){f.forEach(r,function(a){a.remove()})}}},addMouseListener:function(a,b,d,h,j,k){var o=[c(a,"mousedown",e.hitch(this,function(c){c.preventDefault();g.trigger(c,b,a,d,a,h,j,k)})),c(a,"mouseup",e.hitch(this,function(a){this._obj&&a.preventDefault();g.stop()})),c(a,"mouseout",e.hitch(this,
+function(a){this._obj&&a.preventDefault();g.stop()})),c(a,"dblclick",e.hitch(this,function(c){c.preventDefault();9>i("ie")&&(g.trigger(c,b,a,d,a,h,j,k),setTimeout(e.hitch(this,g.stop),50))}))];return{remove:function(){f.forEach(o,function(a){a.remove()})}}},addListener:function(a,b,c,g,e,i,h,j){var k=[this.addKeyListener(b,c,g,e,i,h,j),this.addMouseListener(a,g,e,i,h,j)];return{remove:function(){f.forEach(k,function(a){a.remove()})}}}};return g})},"url:dijit/form/templates/HorizontalSlider.html":'<table class="dijit dijitReset dijitSlider dijitSliderH" cellspacing="0" cellpadding="0" border="0" rules="none" data-dojo-attach-event="onkeypress:_onKeyPress,onkeyup:_onKeyUp"\n\trole="presentation"\n\t><tr class="dijitReset"\n\t\t><td class="dijitReset" colspan="2"></td\n\t\t><td data-dojo-attach-point="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" style="display:none" data-dojo-attach-point="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" data-dojo-attach-event="press:_onClkDecBumper"></div\n\t\t></td\n\t\t><td class="dijitReset"\n\t\t\t><input data-dojo-attach-point="valueNode" type="hidden" ${!nameAttrSetting}\n\t\t\t/><div class="dijitReset dijitSliderBarContainerH" role="presentation" data-dojo-attach-point="sliderBarContainer"\n\t\t\t\t><div role="presentation" data-dojo-attach-point="progressBar" class="dijitSliderBar dijitSliderBarH dijitSliderProgressBar dijitSliderProgressBarH" data-dojo-attach-event="press:_onBarClick"\n\t\t\t\t\t><div class="dijitSliderMoveable dijitSliderMoveableH"\n\t\t\t\t\t\t><div data-dojo-attach-point="sliderHandle,focusNode" class="dijitSliderImageHandle dijitSliderImageHandleH" data-dojo-attach-event="press:_onHandleClick" role="slider"></div\n\t\t\t\t\t></div\n\t\t\t\t></div\n\t\t\t\t><div role="presentation" data-dojo-attach-point="remainingBar" class="dijitSliderBar dijitSliderBarH dijitSliderRemainingBar dijitSliderRemainingBarH" data-dojo-attach-event="press:_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" data-dojo-attach-event="press:_onClkIncBumper"></div\n\t\t></td\n\t\t><td class="dijitReset dijitSliderButtonContainer dijitSliderButtonContainerH"\n\t\t\t><div class="dijitSliderIncrementIconH" style="display:none" data-dojo-attach-point="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 data-dojo-attach-point="containerNode,bottomDecoration" class="dijitReset dijitSliderDecoration dijitSliderDecorationB dijitSliderDecorationH"></td\n\t\t><td class="dijitReset" colspan="2"></td\n\t></tr\n></table>\n',
+"dijit/form/NumberTextBox":function(){define(["dojo/_base/declare","dojo/_base/lang","dojo/number","./RangeBoundTextBox"],function(f,k,h,j){var e=f("dijit.form.NumberTextBoxMixin",null,{pattern:h.regexp,value:NaN,editOptions:{pattern:"#.######"},_formatter:h.format,postMixInProperties:function(){this.inherited(arguments);this._set("type","text")},_setConstraintsAttr:function(c){var e="number"==typeof c.places?c.places:0;e&&e++;if("number"!=typeof c.max)c.max=9*Math.pow(10,15-e);if("number"!=typeof c.min)c.min=
-9*Math.pow(10,15-e);this.inherited(arguments,[c]);this.focusNode&&this.focusNode.value&&!isNaN(this.value)&&this.set("value",this.value)},_onFocus:function(){if(!this.disabled){var c=this.get("value");if("number"==typeof c&&!isNaN(c)&&(c=this.format(c,this.constraints),void 0!==c))this.textbox.value=c;this.inherited(arguments)}},format:function(c,e){var b=""+c;if("number"!=typeof c)return b;if(isNaN(c))return"";if(!("rangeCheck"in this&&this.rangeCheck(c,e))&&!1!==e.exponent&&/\de[-+]?\d/i.test(b))return b;
-this.editOptions&&this.focused&&(e=j.mixin({},e,this.editOptions));return this._formatter(c,e)},_parser:i.parse,parse:function(c,e){var b=this._parser(c,j.mixin({},e,this.editOptions&&this.focused?this.editOptions:{}));this.editOptions&&this.focused&&isNaN(b)&&(b=this._parser(c,e));return b},_getDisplayedValueAttr:function(){var c=this.inherited(arguments);return isNaN(c)?this.textbox.value:c},filter:function(c){return null==c||""===c?NaN:this.inherited(arguments)},serialize:function(c,e){return"number"!=
-typeof c||isNaN(c)?"":this.inherited(arguments)},_setBlurValue:function(){this._setValueAttr(j.hitch(j.mixin({},this,{focused:!0}),"get")("value"),!0)},_setValueAttr:function(c,e,b){if(void 0!==c&&void 0===b)if(b=""+c,"number"==typeof c)if(isNaN(c))b="";else{if("rangeCheck"in this&&this.rangeCheck(c,this.constraints)||!1===this.constraints.exponent||!/\de[-+]?\d/i.test(b))b=void 0}else c?c=void 0:(b="",c=NaN);this.inherited(arguments,[c,e,b])},_getValueAttr:function(){var c=this.inherited(arguments);
-if(isNaN(c)&&""!==this.textbox.value){if(!1!==this.constraints.exponent&&/\de[-+]?\d/i.test(this.textbox.value)&&RegExp("^"+i._realNumberRegexp(j.mixin({},this.constraints))+"$").test(this.textbox.value))return c=Number(this.textbox.value),isNaN(c)?void 0:c}else return c},isValid:function(c){if(!this.focused||this._isEmpty(this.textbox.value))return this.inherited(arguments);var e=this.get("value");return!isNaN(e)&&this.rangeCheck(e,this.constraints)?!1!==this.constraints.exponent&&/\de[-+]?\d/i.test(this.textbox.value)?
-!0:this.inherited(arguments):!1}}),e=e("dijit.form.NumberTextBox",[l,c],{baseClass:"dijitTextBox dijitNumberTextBox"});e.Mixin=c;return e})},"dojo/number":function(){define(["./_base/lang","./i18n","./i18n!./cldr/nls/number","./string","./regexp"],function(e,j,i,l,c){var g={};e.setObject("dojo.number",g);g.format=function(b,c){var c=e.mixin({},c||{}),a=j.normalizeLocale(c.locale),a=j.getLocalization("dojo.cldr","number",a);c.customs=a;a=c.pattern||a[(c.type||"decimal")+"Format"];return isNaN(b)||
-Infinity==Math.abs(b)?null:g._applyPattern(b,a,c)};g._numberPatternRE=/[#0,]*[#0](?:\.0*#*)?/;g._applyPattern=function(b,c,a){var a=a||{},e=a.customs.group,d=a.customs.decimal,c=c.split(";"),h=c[0],c=c[0>b?1:0]||"-"+h;if(-1!=c.indexOf("%"))b*=100;else if(-1!=c.indexOf("\u2030"))b*=1E3;else if(-1!=c.indexOf("\u00a4"))e=a.customs.currencyGroup||e,d=a.customs.currencyDecimal||d,c=c.replace(/\u00a4{1,3}/,function(b){return a[["symbol","currency","displayName"][b.length-1]]||a.currency||""});else if(-1!=
-c.indexOf("E"))throw Error("exponential notation not supported");var i=g._numberPatternRE,h=h.match(i);if(!h)throw Error("unable to find a number expression in pattern: "+c);if(!1===a.fractional)a.places=0;return c.replace(i,g._formatAbsolute(b,h[0],{decimal:d,group:e,places:a.places,round:a.round}))};g.round=function(b,c,a){a=10/(a||10);return(a*+b).toFixed(c)/a};if(0==(0.9).toFixed()){var h=g.round;g.round=function(b,c,a){var e=Math.pow(10,-c||0),d=Math.abs(b);if(!b||d>=e||5>d*Math.pow(10,c+1))e=
-0;return h(b,c,a)+(0<b?e:-e)}}g._formatAbsolute=function(b,c,a){a=a||{};if(!0===a.places)a.places=0;if(Infinity===a.places)a.places=6;var c=c.split("."),e="string"==typeof a.places&&a.places.indexOf(","),d=a.places;if(e)d=a.places.substring(e+1);else if(!(0<=d))d=(c[1]||[]).length;0>a.round||(b=g.round(b,d,a.round));var b=(""+Math.abs(b)).split("."),h=b[1]||"";if(c[1]||a.places){if(e)a.places=a.places.substring(0,e);e=void 0!==a.places?a.places:c[1]&&c[1].lastIndexOf("0")+1;e>h.length&&(b[1]=l.pad(h,
-e,"0",!0));d<h.length&&(b[1]=h.substr(0,d))}else b[1]&&b.pop();d=c[0].replace(",","");e=d.indexOf("0");-1!=e&&(e=d.length-e,e>b[0].length&&(b[0]=l.pad(b[0],e)),-1==d.indexOf("#")&&(b[0]=b[0].substr(b[0].length-e)));var d=c[0].lastIndexOf(","),i,j;-1!=d&&(i=c[0].length-d-1,c=c[0].substr(0,d),d=c.lastIndexOf(","),-1!=d&&(j=c.length-d-1));c=[];for(d=b[0];d;)e=d.length-i,c.push(0<e?d.substr(e):d),d=0<e?d.slice(0,e):"",j&&(i=j,delete j);b[0]=c.reverse().join(a.group||",");return b.join(a.decimal||".")};
-g.regexp=function(b){return g._parseInfo(b).regexp};g._parseInfo=function(b){var b=b||{},f=j.normalizeLocale(b.locale),f=j.getLocalization("dojo.cldr","number",f),a=b.pattern||f[(b.type||"decimal")+"Format"],e=f.group,d=f.decimal,h=1;if(-1!=a.indexOf("%"))h/=100;else if(-1!=a.indexOf("\u2030"))h/=1E3;else{var i=-1!=a.indexOf("\u00a4");i&&(e=f.currencyGroup||e,d=f.currencyDecimal||d)}f=a.split(";");1==f.length&&f.push("-"+f[0]);f=c.buildGroupRE(f,function(a){a="(?:"+c.escapeString(a,".")+")";return a.replace(g._numberPatternRE,
-function(a){var c={signed:!1,separator:b.strict?e:[e,""],fractional:b.fractional,decimal:d,exponent:!1},a=a.split("."),f=b.places;1==a.length&&1!=h&&(a[1]="###");if(1==a.length||0===f)c.fractional=!1;else{void 0===f&&(f=b.pattern?a[1].lastIndexOf("0")+1:Infinity);if(f&&void 0==b.fractional)c.fractional=!0;!b.places&&f<a[1].length&&(f+=","+a[1].length);c.places=f}a=a[0].split(",");if(1<a.length&&(c.groupSize=a.pop().length,1<a.length))c.groupSize2=a.pop().length;return"("+g._realNumberRegexp(c)+")"})},
-!0);i&&(f=f.replace(/([\s\xa0]*)(\u00a4{1,3})([\s\xa0]*)/g,function(a,d,f,e){a=c.escapeString(b[["symbol","currency","displayName"][f.length-1]]||b.currency||"");d=d?"[\\s\\xa0]":"";e=e?"[\\s\\xa0]":"";return!b.strict?(d&&(d+="*"),e&&(e+="*"),"(?:"+d+a+e+")?"):d+a+e}));return{regexp:f.replace(/[\xa0 ]/g,"[\\s\\xa0]"),group:e,decimal:d,factor:h}};g.parse=function(b,c){var a=g._parseInfo(c),e=RegExp("^"+a.regexp+"$").exec(b);if(!e)return NaN;var d=e[1];if(!e[1]){if(!e[2])return NaN;d=e[2];a.factor*=
--1}d=d.replace(RegExp("["+a.group+"\\s\\xa0]","g"),"").replace(a.decimal,".");return d*a.factor};g._realNumberRegexp=function(b){b=b||{};if(!("places"in b))b.places=Infinity;if("string"!=typeof b.decimal)b.decimal=".";if(!("fractional"in b)||/^0/.test(b.places))b.fractional=[!0,!1];if(!("exponent"in b))b.exponent=[!0,!1];if(!("eSigned"in b))b.eSigned=[!0,!1];var f=g._integerRegexp(b),a=c.buildGroupRE(b.fractional,function(a){var c="";a&&0!==b.places&&(c="\\"+b.decimal,c=Infinity==b.places?"(?:"+c+
-"\\d+)?":c+("\\d{"+b.places+"}"));return c},!0),e=c.buildGroupRE(b.exponent,function(a){return a?"([eE]"+g._integerRegexp({signed:b.eSigned})+")":""}),f=f+a;a&&(f="(?:(?:"+f+")|(?:"+a+"))");return f+e};g._integerRegexp=function(b){b=b||{};if(!("signed"in b))b.signed=[!0,!1];if("separator"in b){if(!("groupSize"in b))b.groupSize=3}else b.separator="";var f=c.buildGroupRE(b.signed,function(a){return a?"[-+]":""},!0),a=c.buildGroupRE(b.separator,function(a){if(!a)return"(?:\\d+)";a=c.escapeString(a);
-" "==a?a="\\s":"\u00a0"==a&&(a="\\s\\xa0");var d=b.groupSize,f=b.groupSize2;return f?(a="(?:0|[1-9]\\d{0,"+(f-1)+"}(?:["+a+"]\\d{"+f+"})*["+a+"]\\d{"+d+"})",0<d-f?"(?:"+a+"|(?:0|[1-9]\\d{0,"+(d-1)+"}))":a):"(?:0|[1-9]\\d{0,"+(d-1)+"}(?:["+a+"]\\d{"+d+"})*)"},!0);return f+a};return g})},"dijit/form/RangeBoundTextBox":function(){define(["dojo/_base/declare","dojo/i18n","./MappedTextBox"],function(e,j,i){return e("dijit.form.RangeBoundTextBox",i,{rangeMessage:"",rangeCheck:function(e,c){return("min"in
-c?0<=this.compare(e,c.min):!0)&&("max"in c?0>=this.compare(e,c.max):!0)},isInRange:function(){return this.rangeCheck(this.get("value"),this.constraints)},_isDefinitelyOutOfRange:function(){var e=this.get("value");if(null==e)return!1;var c=!1;if("min"in this.constraints)c=this.constraints.min,c=0>this.compare(e,"number"==typeof c&&0<=c&&0!=e?0:c);if(!c&&"max"in this.constraints)c=this.constraints.max,c=0<this.compare(e,"number"!=typeof c||0<c?c:0);return c},_isValidSubset:function(){return this.inherited(arguments)&&
-!this._isDefinitelyOutOfRange()},isValid:function(e){return this.inherited(arguments)&&(this._isEmpty(this.textbox.value)&&!this.required||this.isInRange(e))},getErrorMessage:function(e){var c=this.get("value");return null!=c&&""!==c&&("number"!=typeof c||!isNaN(c))&&!this.isInRange(e)?this.rangeMessage:this.inherited(arguments)},postMixInProperties:function(){this.inherited(arguments);if(!this.rangeMessage)this.messages=j.getLocalization("dijit.form","validate",this.lang),this.rangeMessage=this.messages.rangeMessage},
-_setConstraintsAttr:function(e){this.inherited(arguments);this.focusNode&&(void 0!==this.constraints.min?this.focusNode.setAttribute("aria-valuemin",this.constraints.min):this.focusNode.removeAttribute("aria-valuemin"),void 0!==this.constraints.max?this.focusNode.setAttribute("aria-valuemax",this.constraints.max):this.focusNode.removeAttribute("aria-valuemax"))},_setValueAttr:function(e,c){this.focusNode.setAttribute("aria-valuenow",e);this.inherited(arguments)},applyTextDir:function(){}})})},"dijit/form/MappedTextBox":function(){define(["dojo/_base/declare",
-"dojo/dom-construct","./ValidationTextBox"],function(e,j,i){return e("dijit.form.MappedTextBox",i,{postMixInProperties:function(){this.inherited(arguments);this.nameAttrSetting=""},_setNameAttr:null,serialize:function(e){return e.toString?e.toString():""},toString:function(){var e=this.filter(this.get("value"));return null!=e?"string"==typeof e?e:this.serialize(e,this.constraints):""},validate:function(){this.valueNode.value=this.toString();return this.inherited(arguments)},buildRendering:function(){this.inherited(arguments);
-this.valueNode=j.place("<input type='hidden'"+(this.name?' name="'+this.name.replace(/"/g,"&quot;")+'"':"")+"/>",this.textbox,"after")},reset:function(){this.valueNode.value="";this.inherited(arguments)}})})},"dijit/form/ValidationTextBox":function(){define("dojo/_base/declare,dojo/_base/kernel,dojo/i18n,./TextBox,../Tooltip,dojo/text!./templates/ValidationTextBox.html,dojo/i18n!./nls/validate".split(","),function(e,j,i,l,c,g){var h;return h=e("dijit.form.ValidationTextBox",l,{templateString:g,required:!1,
-promptMessage:"",invalidMessage:"$_unset_$",missingMessage:"$_unset_$",message:"",constraints:{},pattern:".*",regExp:"",regExpGen:function(){},state:"",tooltipPosition:[],_deprecateRegExp:function(b,c){c!=h.prototype[b]&&(j.deprecated("ValidationTextBox id="+this.id+", set('"+b+"', ...) is deprecated. Use set('pattern', ...) instead.","","2.0"),this.set("pattern",c))},_setRegExpGenAttr:function(b){this._deprecateRegExp("regExpGen",b);this.regExpGen=this._getPatternAttr},_setRegExpAttr:function(b){this._deprecateRegExp("regExp",
+this.editOptions&&this.focused&&(e=k.mixin({},e,this.editOptions));return this._formatter(c,e)},_parser:h.parse,parse:function(c,e){var b=this._parser(c,k.mixin({},e,this.editOptions&&this.focused?this.editOptions:{}));this.editOptions&&this.focused&&isNaN(b)&&(b=this._parser(c,e));return b},_getDisplayedValueAttr:function(){var c=this.inherited(arguments);return isNaN(c)?this.textbox.value:c},filter:function(c){return null==c||""===c?NaN:this.inherited(arguments)},serialize:function(c,e){return"number"!=
+typeof c||isNaN(c)?"":this.inherited(arguments)},_setBlurValue:function(){this._setValueAttr(k.hitch(k.mixin({},this,{focused:!0}),"get")("value"),!0)},_setValueAttr:function(c,e,b){if(void 0!==c&&void 0===b)if(b=""+c,"number"==typeof c)if(isNaN(c))b="";else{if("rangeCheck"in this&&this.rangeCheck(c,this.constraints)||!1===this.constraints.exponent||!/\de[-+]?\d/i.test(b))b=void 0}else c?c=void 0:(b="",c=NaN);this.inherited(arguments,[c,e,b])},_getValueAttr:function(){var c=this.inherited(arguments);
+if(isNaN(c)&&""!==this.textbox.value){if(!1!==this.constraints.exponent&&/\de[-+]?\d/i.test(this.textbox.value)&&RegExp("^"+h._realNumberRegexp(k.mixin({},this.constraints))+"$").test(this.textbox.value))return c=Number(this.textbox.value),isNaN(c)?void 0:c}else return c},isValid:function(c){if(!this.focused||this._isEmpty(this.textbox.value))return this.inherited(arguments);var e=this.get("value");return!isNaN(e)&&this.rangeCheck(e,this.constraints)?!1!==this.constraints.exponent&&/\de[-+]?\d/i.test(this.textbox.value)?
+!0:this.inherited(arguments):!1}}),f=f("dijit.form.NumberTextBox",[j,e],{baseClass:"dijitTextBox dijitNumberTextBox"});f.Mixin=e;return f})},"dojo/number":function(){define(["./_base/lang","./i18n","./i18n!./cldr/nls/number","./string","./regexp"],function(f,k,h,j,e){var c={};f.setObject("dojo.number",c);c.format=function(b,e){var e=f.mixin({},e||{}),a=k.normalizeLocale(e.locale),a=k.getLocalization("dojo.cldr","number",a);e.customs=a;a=e.pattern||a[(e.type||"decimal")+"Format"];return isNaN(b)||
+Infinity==Math.abs(b)?null:c._applyPattern(b,a,e)};c._numberPatternRE=/[#0,]*[#0](?:\.0*#*)?/;c._applyPattern=function(b,e,a){var a=a||{},f=a.customs.group,d=a.customs.decimal,e=e.split(";"),i=e[0],e=e[0>b?1:0]||"-"+i;if(-1!=e.indexOf("%"))b*=100;else if(-1!=e.indexOf("\u2030"))b*=1E3;else if(-1!=e.indexOf("\u00a4"))f=a.customs.currencyGroup||f,d=a.customs.currencyDecimal||d,e=e.replace(/\u00a4{1,3}/,function(b){return a[["symbol","currency","displayName"][b.length-1]]||a.currency||""});else if(-1!=
+e.indexOf("E"))throw Error("exponential notation not supported");var h=c._numberPatternRE,i=i.match(h);if(!i)throw Error("unable to find a number expression in pattern: "+e);if(!1===a.fractional)a.places=0;return e.replace(h,c._formatAbsolute(b,i[0],{decimal:d,group:f,places:a.places,round:a.round}))};c.round=function(b,c,a){a=10/(a||10);return(a*+b).toFixed(c)/a};if(0==(0.9).toFixed()){var i=c.round;c.round=function(b,c,a){var e=Math.pow(10,-c||0),d=Math.abs(b);if(!b||d>=e||5>d*Math.pow(10,c+1))e=
+0;return i(b,c,a)+(0<b?e:-e)}}c._formatAbsolute=function(b,e,a){a=a||{};if(!0===a.places)a.places=0;if(Infinity===a.places)a.places=6;var e=e.split("."),f="string"==typeof a.places&&a.places.indexOf(","),d=a.places;if(f)d=a.places.substring(f+1);else if(!(0<=d))d=(e[1]||[]).length;0>a.round||(b=c.round(b,d,a.round));var b=(""+Math.abs(b)).split("."),i=b[1]||"";if(e[1]||a.places){if(f)a.places=a.places.substring(0,f);f=void 0!==a.places?a.places:e[1]&&e[1].lastIndexOf("0")+1;f>i.length&&(b[1]=j.pad(i,
+f,"0",!0));d<i.length&&(b[1]=i.substr(0,d))}else b[1]&&b.pop();d=e[0].replace(",","");f=d.indexOf("0");-1!=f&&(f=d.length-f,f>b[0].length&&(b[0]=j.pad(b[0],f)),-1==d.indexOf("#")&&(b[0]=b[0].substr(b[0].length-f)));var d=e[0].lastIndexOf(","),h,k;-1!=d&&(h=e[0].length-d-1,e=e[0].substr(0,d),d=e.lastIndexOf(","),-1!=d&&(k=e.length-d-1));e=[];for(d=b[0];d;)f=d.length-h,e.push(0<f?d.substr(f):d),d=0<f?d.slice(0,f):"",k&&(h=k,delete k);b[0]=e.reverse().join(a.group||",");return b.join(a.decimal||".")};
+c.regexp=function(b){return c._parseInfo(b).regexp};c._parseInfo=function(b){var b=b||{},g=k.normalizeLocale(b.locale),g=k.getLocalization("dojo.cldr","number",g),a=b.pattern||g[(b.type||"decimal")+"Format"],f=g.group,d=g.decimal,i=1;if(-1!=a.indexOf("%"))i/=100;else if(-1!=a.indexOf("\u2030"))i/=1E3;else{var h=-1!=a.indexOf("\u00a4");h&&(f=g.currencyGroup||f,d=g.currencyDecimal||d)}g=a.split(";");1==g.length&&g.push("-"+g[0]);g=e.buildGroupRE(g,function(a){a="(?:"+e.escapeString(a,".")+")";return a.replace(c._numberPatternRE,
+function(a){var e={signed:!1,separator:b.strict?f:[f,""],fractional:b.fractional,decimal:d,exponent:!1},a=a.split("."),g=b.places;1==a.length&&1!=i&&(a[1]="###");if(1==a.length||0===g)e.fractional=!1;else{void 0===g&&(g=b.pattern?a[1].lastIndexOf("0")+1:Infinity);if(g&&void 0==b.fractional)e.fractional=!0;!b.places&&g<a[1].length&&(g+=","+a[1].length);e.places=g}a=a[0].split(",");if(1<a.length&&(e.groupSize=a.pop().length,1<a.length))e.groupSize2=a.pop().length;return"("+c._realNumberRegexp(e)+")"})},
+!0);h&&(g=g.replace(/([\s\xa0]*)(\u00a4{1,3})([\s\xa0]*)/g,function(a,c,d,g){a=e.escapeString(b[["symbol","currency","displayName"][d.length-1]]||b.currency||"");c=c?"[\\s\\xa0]":"";g=g?"[\\s\\xa0]":"";return!b.strict?(c&&(c+="*"),g&&(g+="*"),"(?:"+c+a+g+")?"):c+a+g}));return{regexp:g.replace(/[\xa0 ]/g,"[\\s\\xa0]"),group:f,decimal:d,factor:i}};c.parse=function(b,e){var a=c._parseInfo(e),f=RegExp("^"+a.regexp+"$").exec(b);if(!f)return NaN;var d=f[1];if(!f[1]){if(!f[2])return NaN;d=f[2];a.factor*=
+-1}d=d.replace(RegExp("["+a.group+"\\s\\xa0]","g"),"").replace(a.decimal,".");return d*a.factor};c._realNumberRegexp=function(b){b=b||{};if(!("places"in b))b.places=Infinity;if("string"!=typeof b.decimal)b.decimal=".";if(!("fractional"in b)||/^0/.test(b.places))b.fractional=[!0,!1];if(!("exponent"in b))b.exponent=[!0,!1];if(!("eSigned"in b))b.eSigned=[!0,!1];var g=c._integerRegexp(b),a=e.buildGroupRE(b.fractional,function(a){var c="";a&&0!==b.places&&(c="\\"+b.decimal,c=Infinity==b.places?"(?:"+c+
+"\\d+)?":c+("\\d{"+b.places+"}"));return c},!0),f=e.buildGroupRE(b.exponent,function(a){return a?"([eE]"+c._integerRegexp({signed:b.eSigned})+")":""}),g=g+a;a&&(g="(?:(?:"+g+")|(?:"+a+"))");return g+f};c._integerRegexp=function(b){b=b||{};if(!("signed"in b))b.signed=[!0,!1];if("separator"in b){if(!("groupSize"in b))b.groupSize=3}else b.separator="";var c=e.buildGroupRE(b.signed,function(a){return a?"[-+]":""},!0),a=e.buildGroupRE(b.separator,function(a){if(!a)return"(?:\\d+)";a=e.escapeString(a);
+" "==a?a="\\s":"\u00a0"==a&&(a="\\s\\xa0");var c=b.groupSize,g=b.groupSize2;return g?(a="(?:0|[1-9]\\d{0,"+(g-1)+"}(?:["+a+"]\\d{"+g+"})*["+a+"]\\d{"+c+"})",0<c-g?"(?:"+a+"|(?:0|[1-9]\\d{0,"+(c-1)+"}))":a):"(?:0|[1-9]\\d{0,"+(c-1)+"}(?:["+a+"]\\d{"+c+"})*)"},!0);return c+a};return c})},"dijit/form/RangeBoundTextBox":function(){define(["dojo/_base/declare","dojo/i18n","./MappedTextBox"],function(f,k,h){return f("dijit.form.RangeBoundTextBox",h,{rangeMessage:"",rangeCheck:function(f,e){return("min"in
+e?0<=this.compare(f,e.min):!0)&&("max"in e?0>=this.compare(f,e.max):!0)},isInRange:function(){return this.rangeCheck(this.get("value"),this.constraints)},_isDefinitelyOutOfRange:function(){var f=this.get("value");if(null==f)return!1;var e=!1;if("min"in this.constraints)e=this.constraints.min,e=0>this.compare(f,"number"==typeof e&&0<=e&&0!=f?0:e);if(!e&&"max"in this.constraints)e=this.constraints.max,e=0<this.compare(f,"number"!=typeof e||0<e?e:0);return e},_isValidSubset:function(){return this.inherited(arguments)&&
+!this._isDefinitelyOutOfRange()},isValid:function(f){return this.inherited(arguments)&&(this._isEmpty(this.textbox.value)&&!this.required||this.isInRange(f))},getErrorMessage:function(f){var e=this.get("value");return null!=e&&""!==e&&("number"!=typeof e||!isNaN(e))&&!this.isInRange(f)?this.rangeMessage:this.inherited(arguments)},postMixInProperties:function(){this.inherited(arguments);if(!this.rangeMessage)this.messages=k.getLocalization("dijit.form","validate",this.lang),this.rangeMessage=this.messages.rangeMessage},
+_setConstraintsAttr:function(f){this.inherited(arguments);this.focusNode&&(void 0!==this.constraints.min?this.focusNode.setAttribute("aria-valuemin",this.constraints.min):this.focusNode.removeAttribute("aria-valuemin"),void 0!==this.constraints.max?this.focusNode.setAttribute("aria-valuemax",this.constraints.max):this.focusNode.removeAttribute("aria-valuemax"))},_setValueAttr:function(f,e){this.focusNode.setAttribute("aria-valuenow",f);this.inherited(arguments)},applyTextDir:function(){}})})},"dijit/form/MappedTextBox":function(){define(["dojo/_base/declare",
+"dojo/dom-construct","./ValidationTextBox"],function(f,k,h){return f("dijit.form.MappedTextBox",h,{postMixInProperties:function(){this.inherited(arguments);this.nameAttrSetting=""},_setNameAttr:null,serialize:function(f){return f.toString?f.toString():""},toString:function(){var f=this.filter(this.get("value"));return null!=f?"string"==typeof f?f:this.serialize(f,this.constraints):""},validate:function(){this.valueNode.value=this.toString();return this.inherited(arguments)},buildRendering:function(){this.inherited(arguments);
+this.valueNode=k.place("<input type='hidden'"+(this.name?' name="'+this.name.replace(/"/g,"&quot;")+'"':"")+"/>",this.textbox,"after")},reset:function(){this.valueNode.value="";this.inherited(arguments)}})})},"dijit/form/ValidationTextBox":function(){define("dojo/_base/declare,dojo/_base/kernel,dojo/i18n,./TextBox,../Tooltip,dojo/text!./templates/ValidationTextBox.html,dojo/i18n!./nls/validate".split(","),function(f,k,h,j,e,c){var i;return i=f("dijit.form.ValidationTextBox",j,{templateString:c,required:!1,
+promptMessage:"",invalidMessage:"$_unset_$",missingMessage:"$_unset_$",message:"",constraints:{},pattern:".*",regExp:"",regExpGen:function(){},state:"",tooltipPosition:[],_deprecateRegExp:function(b,c){c!=i.prototype[b]&&(k.deprecated("ValidationTextBox id="+this.id+", set('"+b+"', ...) is deprecated. Use set('pattern', ...) instead.","","2.0"),this.set("pattern",c))},_setRegExpGenAttr:function(b){this._deprecateRegExp("regExpGen",b);this.regExpGen=this._getPatternAttr},_setRegExpAttr:function(b){this._deprecateRegExp("regExp",
b)},_setValueAttr:function(){this.inherited(arguments);this.validate(this.focused)},validator:function(b,c){return RegExp("^(?:"+this._getPatternAttr(c)+")"+(this.required?"":"?")+"$").test(b)&&(!this.required||!this._isEmpty(b))&&(this._isEmpty(b)||void 0!==this.parse(b,c))},_isValidSubset:function(){return 0==this.textbox.value.search(this._partialre)},isValid:function(){return this.validator(this.textbox.value,this.constraints)},_isEmpty:function(b){return(this.trim?/^\s*$/:/^$/).test(b)},getErrorMessage:function(){var b=
"$_unset_$"==this.invalidMessage?this.messages.invalidMessage:!this.invalidMessage?this.promptMessage:this.invalidMessage,c="$_unset_$"==this.missingMessage?this.messages.missingMessage:!this.missingMessage?b:this.missingMessage;return this.required&&this._isEmpty(this.textbox.value)?c:b},getPromptMessage:function(){return this.promptMessage},_maskValidSubsetError:!0,validate:function(b){var c="",a=this.disabled||this.isValid(b);if(a)this._maskValidSubsetError=!0;var e=this._isEmpty(this.textbox.value),
-d=!a&&b&&this._isValidSubset();this._set("state",a?"":((!this._hasBeenBlurred||b)&&e||d)&&this._maskValidSubsetError?"Incomplete":"Error");this.focusNode.setAttribute("aria-invalid",a?"false":"true");"Error"==this.state?(this._maskValidSubsetError=b&&d,c=this.getErrorMessage(b)):"Incomplete"==this.state?(c=this.getPromptMessage(b),this._maskValidSubsetError=!this._hasBeenBlurred||b):e&&(c=this.getPromptMessage(b));this.set("message",c);return a},displayMessage:function(b){b&&this.focused?c.show(b,
-this.domNode,this.tooltipPosition,!this.isLeftToRight()):c.hide(this.domNode)},_refreshState:function(){this._created&&this.validate(this.focused);this.inherited(arguments)},constructor:function(){this.constraints={};this.baseClass+=" dijitValidationTextBox"},startup:function(){this.inherited(arguments);this._refreshState()},_setConstraintsAttr:function(b){if(!b.locale&&this.lang)b.locale=this.lang;this._set("constraints",b);this._refreshState()},_setPatternAttr:function(b){this._set("pattern",b)},
+d=!a&&b&&this._isValidSubset();this._set("state",a?"":((!this._hasBeenBlurred||b)&&e||d)&&this._maskValidSubsetError?"Incomplete":"Error");this.focusNode.setAttribute("aria-invalid",a?"false":"true");"Error"==this.state?(this._maskValidSubsetError=b&&d,c=this.getErrorMessage(b)):"Incomplete"==this.state?(c=this.getPromptMessage(b),this._maskValidSubsetError=!this._hasBeenBlurred||b):e&&(c=this.getPromptMessage(b));this.set("message",c);return a},displayMessage:function(b){b&&this.focused?e.show(b,
+this.domNode,this.tooltipPosition,!this.isLeftToRight()):e.hide(this.domNode)},_refreshState:function(){this._created&&this.validate(this.focused);this.inherited(arguments)},constructor:function(){this.constraints={};this.baseClass+=" dijitValidationTextBox"},startup:function(){this.inherited(arguments);this._refreshState()},_setConstraintsAttr:function(b){if(!b.locale&&this.lang)b.locale=this.lang;this._set("constraints",b);this._refreshState()},_setPatternAttr:function(b){this._set("pattern",b)},
_getPatternAttr:function(b){var c=this.pattern;"function"==(typeof c).toLowerCase()&&(c=this.pattern(b||this.constraints));if(c!=this._lastRegExp){var a="";this._lastRegExp=c;".*"!=c&&c.replace(/\\.|\[\]|\[.*?[^\\]{1}\]|\{.*?\}|\(\?[=:!]|./g,function(b){switch(b.charAt(0)){case "{":case "+":case "?":case "*":case "^":case "$":case "|":case "(":a+=b;break;case ")":a+="|$)";break;default:a+="(?:"+b+"|$)"}});try{"".search(a)}catch(e){a=this.pattern}this._partialre="^(?:"+a+")$"}return c},postMixInProperties:function(){this.inherited(arguments);
-this.messages=i.getLocalization("dijit.form","validate",this.lang);this._setConstraintsAttr(this.constraints)},_setDisabledAttr:function(b){this.inherited(arguments);this._refreshState()},_setRequiredAttr:function(b){this._set("required",b);this.focusNode.setAttribute("aria-required",b);this._refreshState()},_setMessageAttr:function(b){this._set("message",b);this.displayMessage(b)},reset:function(){this._maskValidSubsetError=!0;this.inherited(arguments)},_onBlur:function(){this.displayMessage("");
+this.messages=h.getLocalization("dijit.form","validate",this.lang);this._setConstraintsAttr(this.constraints)},_setDisabledAttr:function(b){this.inherited(arguments);this._refreshState()},_setRequiredAttr:function(b){this._set("required",b);this.focusNode.setAttribute("aria-required",b);this._refreshState()},_setMessageAttr:function(b){this._set("message",b);this.displayMessage(b)},reset:function(){this._maskValidSubsetError=!0;this.inherited(arguments)},_onBlur:function(){this.displayMessage("");
this.inherited(arguments)}})})},"url:dijit/form/templates/ValidationTextBox.html":'<div class="dijit dijitReset dijitInline dijitLeft"\n\tid="widget_${id}" role="presentation"\n\t><div class=\'dijitReset dijitValidationContainer\'\n\t\t><input class="dijitReset dijitInputField dijitValidationIcon dijitValidationInner" value="&#935; " type="text" tabIndex="-1" readonly="readonly" role="presentation"\n\t/></div\n\t><div class="dijitReset dijitInputField dijitInputContainer"\n\t\t><input class="dijitReset dijitInputInner" data-dojo-attach-point=\'textbox,focusNode\' autocomplete="off"\n\t\t\t${!nameAttrSetting} type=\'${type}\'\n\t/></div\n></div>\n',
-"dijit/form/NumberSpinner":function(){define(["dojo/_base/declare","dojo/_base/event","dojo/keys","./_Spinner","./NumberTextBox"],function(e,j,i,l,c){return e("dijit.form.NumberSpinner",[l,c.Mixin],{adjust:function(c,e){var b=this.constraints,f=isNaN(c),a=!isNaN(b.max),i=!isNaN(b.min);f&&0!=e&&(c=0<e?i?b.min:a?b.max:0:a?this.constraints.max:i?b.min:0);var d=c+e;if(f||isNaN(d))return c;if(a&&d>b.max)d=b.max;if(i&&d<b.min)d=b.min;return d},_onKeyPress:function(c){if((c.charOrCode==i.HOME||c.charOrCode==
-i.END)&&!c.ctrlKey&&!c.altKey&&!c.metaKey&&"undefined"!=typeof this.get("value")){var e=this.constraints[c.charOrCode==i.HOME?"min":"max"];"number"==typeof e&&this._setValueAttr(e,!1);j.stop(c)}}})})},"dijit/form/_Spinner":function(){define("dojo/_base/declare,dojo/_base/event,dojo/keys,dojo/_base/lang,dojo/sniff,dojo/mouse,../typematic,./RangeBoundTextBox,dojo/text!./templates/Spinner.html,./_TextBoxMixin".split(","),function(e,j,i,l,c,g,h,b,f,a){return e("dijit.form._Spinner",b,{defaultTimeout:500,
-minimumTimeout:10,timeoutChangeRate:0.9,smallDelta:1,largeDelta:10,templateString:f,baseClass:"dijitTextBox dijitSpinner",cssStateNodes:{upArrowNode:"dijitUpArrowButton",downArrowNode:"dijitDownArrowButton"},adjust:function(a){return a},_arrowPressed:function(b,c,f){!this.disabled&&!this.readOnly&&(this._setValueAttr(this.adjust(this.get("value"),c*f),!1),a.selectInputText(this.textbox,this.textbox.value.length))},_arrowReleased:function(){this._wheelTimer=null},_typematicCallback:function(a,b,c){var f=
-this.smallDelta;if(b==this.textbox)b=c.charOrCode,f=b==i.PAGE_UP||b==i.PAGE_DOWN?this.largeDelta:this.smallDelta,b=b==i.UP_ARROW||b==i.PAGE_UP?this.upArrowNode:this.downArrowNode;-1==a?this._arrowReleased(b):this._arrowPressed(b,b==this.upArrowNode?1:-1,f)},_wheelTimer:null,_mouseWheeled:function(a){j.stop(a);var b=a.wheelDelta/120;Math.floor(b)!=b&&(b=0<a.wheelDelta?1:-1);a=a.detail?-1*a.detail:b;if(0!==a){var c=this[0<a?"upArrowNode":"downArrowNode"];this._arrowPressed(c,a,this.smallDelta);this._wheelTimer&&
-this._wheelTimer.remove();this._wheelTimer=this.defer(function(){this._arrowReleased(c)},50)}},postCreate:function(){this.inherited(arguments);this.connect(this.domNode,g.wheel,"_mouseWheeled");this.own(h.addListener(this.upArrowNode,this.textbox,{charOrCode:i.UP_ARROW,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout,this.minimumTimeout),h.addListener(this.downArrowNode,this.textbox,{charOrCode:i.DOWN_ARROW,ctrlKey:!1,altKey:!1,shiftKey:!1,
-metaKey:!1},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout,this.minimumTimeout),h.addListener(this.upArrowNode,this.textbox,{charOrCode:i.PAGE_UP,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout,this.minimumTimeout),h.addListener(this.downArrowNode,this.textbox,{charOrCode:i.PAGE_DOWN,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout,this.minimumTimeout))}})})},
+"dijit/form/NumberSpinner":function(){define(["dojo/_base/declare","dojo/_base/event","dojo/keys","./_Spinner","./NumberTextBox"],function(f,k,h,j,e){return f("dijit.form.NumberSpinner",[j,e.Mixin],{adjust:function(c,e){var b=this.constraints,g=isNaN(c),a=!isNaN(b.max),f=!isNaN(b.min);g&&0!=e&&(c=0<e?f?b.min:a?b.max:0:a?this.constraints.max:f?b.min:0);var d=c+e;if(g||isNaN(d))return c;if(a&&d>b.max)d=b.max;if(f&&d<b.min)d=b.min;return d},_onKeyPress:function(c){if((c.charOrCode==h.HOME||c.charOrCode==
+h.END)&&!c.ctrlKey&&!c.altKey&&!c.metaKey&&"undefined"!=typeof this.get("value")){var e=this.constraints[c.charOrCode==h.HOME?"min":"max"];"number"==typeof e&&this._setValueAttr(e,!1);k.stop(c)}}})})},"dijit/form/_Spinner":function(){define("dojo/_base/declare,dojo/_base/event,dojo/keys,dojo/_base/lang,dojo/sniff,dojo/mouse,../typematic,./RangeBoundTextBox,dojo/text!./templates/Spinner.html,./_TextBoxMixin".split(","),function(f,k,h,j,e,c,i,b,g,a){return f("dijit.form._Spinner",b,{defaultTimeout:500,
+minimumTimeout:10,timeoutChangeRate:0.9,smallDelta:1,largeDelta:10,templateString:g,baseClass:"dijitTextBox dijitSpinner",cssStateNodes:{upArrowNode:"dijitUpArrowButton",downArrowNode:"dijitDownArrowButton"},adjust:function(a){return a},_arrowPressed:function(b,c,e){!this.disabled&&!this.readOnly&&(this._setValueAttr(this.adjust(this.get("value"),c*e),!1),a.selectInputText(this.textbox,this.textbox.value.length))},_arrowReleased:function(){this._wheelTimer=null},_typematicCallback:function(a,b,c){var e=
+this.smallDelta;if(b==this.textbox)b=c.charOrCode,e=b==h.PAGE_UP||b==h.PAGE_DOWN?this.largeDelta:this.smallDelta,b=b==h.UP_ARROW||b==h.PAGE_UP?this.upArrowNode:this.downArrowNode;-1==a?this._arrowReleased(b):this._arrowPressed(b,b==this.upArrowNode?1:-1,e)},_wheelTimer:null,_mouseWheeled:function(a){k.stop(a);var b=a.wheelDelta/120;Math.floor(b)!=b&&(b=0<a.wheelDelta?1:-1);a=a.detail?-1*a.detail:b;if(0!==a){var c=this[0<a?"upArrowNode":"downArrowNode"];this._arrowPressed(c,a,this.smallDelta);this._wheelTimer&&
+this._wheelTimer.remove();this._wheelTimer=this.defer(function(){this._arrowReleased(c)},50)}},postCreate:function(){this.inherited(arguments);this.connect(this.domNode,c.wheel,"_mouseWheeled");this.own(i.addListener(this.upArrowNode,this.textbox,{charOrCode:h.UP_ARROW,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout,this.minimumTimeout),i.addListener(this.downArrowNode,this.textbox,{charOrCode:h.DOWN_ARROW,ctrlKey:!1,altKey:!1,shiftKey:!1,
+metaKey:!1},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout,this.minimumTimeout),i.addListener(this.upArrowNode,this.textbox,{charOrCode:h.PAGE_UP,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout,this.minimumTimeout),i.addListener(this.downArrowNode,this.textbox,{charOrCode:h.PAGE_DOWN,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout,this.minimumTimeout))}})})},
"url:dijit/form/templates/Spinner.html":'<div class="dijit dijitReset dijitInline dijitLeft"\n\tid="widget_${id}" role="presentation"\n\t><div class="dijitReset dijitButtonNode dijitSpinnerButtonContainer"\n\t\t><input class="dijitReset dijitInputField dijitSpinnerButtonInner" type="text" tabIndex="-1" readonly="readonly" role="presentation"\n\t\t/><div class="dijitReset dijitLeft dijitButtonNode dijitArrowButton dijitUpArrowButton"\n\t\t\tdata-dojo-attach-point="upArrowNode"\n\t\t\t><div class="dijitArrowButtonInner"\n\t\t\t\t><input class="dijitReset dijitInputField" value="&#9650; " type="text" tabIndex="-1" readonly="readonly" role="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\tdata-dojo-attach-point="downArrowNode"\n\t\t\t><div class="dijitArrowButtonInner"\n\t\t\t\t><input class="dijitReset dijitInputField" value="&#9660; " type="text" tabIndex="-1" readonly="readonly" role="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="&#935; " type="text" tabIndex="-1" readonly="readonly" role="presentation"\n\t/></div\n\t><div class="dijitReset dijitInputField dijitInputContainer"\n\t\t><input class=\'dijitReset dijitInputInner\' data-dojo-attach-point="textbox,focusNode" type="${type}" data-dojo-attach-event="onkeypress:_onKeyPress"\n\t\t\trole="spinbutton" autocomplete="off" ${!nameAttrSetting}\n\t/></div\n></div>\n',
-"dojox/widget/ColorPicker":function(){define("dojo/_base/kernel,dojo/_base/declare,dojo/_base/lang,dojo/_base/array,dojo/_base/html,dojo/_base/connect,dojo/_base/sniff,dojo/_base/window,dojo/_base/event,dojo/dom,dojo/dom-class,dojo/keys,dojo/fx,dojo/dnd/move,dijit/registry,dijit/_base/focus,dijit/form/_FormWidget,dijit/typematic,dojox/color,dojo/i18n,dojo/i18n!./nls/ColorPicker,dojo/i18n!dojo/cldr/nls/number,dojo/text!./ColorPicker/ColorPicker.html".split(","),function(e,j,i,l,c,g,h,b,f,a,k,d,p,m,
-n,o,r,q,v,s,u,t,y){e.experimental("dojox.widget.ColorPicker");return j("dojox.widget.ColorPicker",r,{showRgb:!0,showHsv:!0,showHex:!0,webSafe:!0,animatePoint:!0,slideDuration:250,liveUpdate:!1,PICKER_HUE_H:150,PICKER_SAT_VAL_H:150,PICKER_SAT_VAL_W:150,PICKER_HUE_SELECTOR_H:8,PICKER_SAT_SELECTOR_H:10,PICKER_SAT_SELECTOR_W:10,value:"#ffffff",_underlay:e.moduleUrl("dojox.widget","ColorPicker/images/underlay.png"),_hueUnderlay:e.moduleUrl("dojox.widget","ColorPicker/images/hue.png"),_pickerPointer:e.moduleUrl("dojox.widget",
-"ColorPicker/images/pickerPointer.png"),_huePickerPointer:e.moduleUrl("dojox.widget","ColorPicker/images/hueHandle.png"),_huePickerPointerAlly:e.moduleUrl("dojox.widget","ColorPicker/images/hueHandleA11y.png"),templateString:y,postMixInProperties:function(){if(k.contains(b.body(),"dijit_a11y"))this._huePickerPointer=this._huePickerPointerAlly;this._uId=n.getUniqueId(this.id);i.mixin(this,s.getLocalization("dojox.widget","ColorPicker"));i.mixin(this,s.getLocalization("dojo.cldr","number"));this.inherited(arguments)},
-postCreate:function(){this.inherited(arguments);if(7>h("ie"))this.colorUnderlay.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this._underlay+"', sizingMethod='scale')",this.colorUnderlay.src=this._blankGif.toString();if(!this.showRgb)this.rgbNode.style.visibility="hidden";if(!this.showHsv)this.hsvNode.style.visibility="hidden";if(!this.showHex)this.hexNode.style.visibility="hidden";if(!this.webSafe)this.safePreviewNode.style.visibility="hidden"},startup:function(){if(!this._started)this._started=
-!0,this.set("value",this.value),this._mover=new m.boxConstrainedMoveable(this.cursorNode,{box:{t:-(this.PICKER_SAT_SELECTOR_H/2),l:-(this.PICKER_SAT_SELECTOR_W/2),w:this.PICKER_SAT_VAL_W,h:this.PICKER_SAT_VAL_H}}),this._hueMover=new m.boxConstrainedMoveable(this.hueCursorNode,{box:{t:-(this.PICKER_HUE_SELECTOR_H/2),l:0,w:0,h:this.PICKER_HUE_H}}),this._subs=[],this._subs.push(g.subscribe("/dnd/move/stop",i.hitch(this,"_clearTimer"))),this._subs.push(g.subscribe("/dnd/move/start",i.hitch(this,"_setTimer"))),
-this._keyListeners=[],this._connects.push(q.addKeyListener(this.hueCursorNode,{charOrCode:d.UP_ARROW,shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this,i.hitch(this,this._updateHueCursorNode),25,25)),this._connects.push(q.addKeyListener(this.hueCursorNode,{charOrCode:d.DOWN_ARROW,shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this,i.hitch(this,this._updateHueCursorNode),25,25)),this._connects.push(q.addKeyListener(this.cursorNode,{charOrCode:d.UP_ARROW,shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this,
-i.hitch(this,this._updateCursorNode),25,25)),this._connects.push(q.addKeyListener(this.cursorNode,{charOrCode:d.DOWN_ARROW,shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this,i.hitch(this,this._updateCursorNode),25,25)),this._connects.push(q.addKeyListener(this.cursorNode,{charOrCode:d.LEFT_ARROW,shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this,i.hitch(this,this._updateCursorNode),25,25)),this._connects.push(q.addKeyListener(this.cursorNode,{charOrCode:d.RIGHT_ARROW,shiftKey:!1,metaKey:!1,ctrlKey:!1,
-altKey:!1},this,i.hitch(this,this._updateCursorNode),25,25))},_setValueAttr:function(a){this._started&&this.setColor(a,!0)},setColor:function(a,b){a=v.fromString(a);this._updatePickerLocations(a);this._updateColorInputs(a);this._updateValue(a,b)},_setTimer:function(b){if(b.node==this.cursorNode)o.focus(b.node),a.setSelectable(this.domNode,!1),this._timer=setInterval(i.hitch(this,"_updateColor"),45)},_clearTimer:function(){if(this._timer)clearInterval(this._timer),this._timer=null,this.onChange(this.value),
-a.setSelectable(this.domNode,!0)},_setHue:function(a){c.style(this.colorUnderlay,"backgroundColor",v.fromHsv(a,100,100).toHex())},_updateHueCursorNode:function(a,b,f){if(-1!==a){var a=c.style(this.hueCursorNode,"top"),b=this.PICKER_HUE_SELECTOR_H/2,a=a+b,e=!1;f.charOrCode==d.UP_ARROW?0<a&&(a-=1,e=!0):f.charOrCode==d.DOWN_ARROW&&a<this.PICKER_HUE_H&&(a+=1,e=!0);e&&c.style(this.hueCursorNode,"top",a-b+"px")}else this._updateColor(!0)},_updateCursorNode:function(a,b,f){var b=this.PICKER_SAT_SELECTOR_H/
-2,e=this.PICKER_SAT_SELECTOR_W/2;if(-1!==a){var a=c.style(this.cursorNode,"top"),g=c.style(this.cursorNode,"left"),a=a+b,g=g+e,h=!1;f.charOrCode==d.UP_ARROW?0<a&&(a-=1,h=!0):f.charOrCode==d.DOWN_ARROW?a<this.PICKER_SAT_VAL_H&&(a+=1,h=!0):f.charOrCode==d.LEFT_ARROW?0<g&&(g-=1,h=!0):f.charOrCode==d.RIGHT_ARROW&&g<this.PICKER_SAT_VAL_W&&(g+=1,h=!0);h&&(g-=e,c.style(this.cursorNode,"top",a-b+"px"),c.style(this.cursorNode,"left",g+"px"))}else this._updateColor(!0)},_updateColor:function(){var a=this.PICKER_HUE_SELECTOR_H/
-2,b=this.PICKER_SAT_SELECTOR_H/2,d=this.PICKER_SAT_SELECTOR_W/2,a=c.style(this.hueCursorNode,"top")+a,b=c.style(this.cursorNode,"top")+b,d=c.style(this.cursorNode,"left")+d,a=Math.round(360-360*(a/this.PICKER_HUE_H)),d=v.fromHsv(a,100*(d/this.PICKER_SAT_VAL_W),100-100*(b/this.PICKER_SAT_VAL_H));this._updateColorInputs(d);this._updateValue(d,!0);a!=this._hue&&this._setHue(a)},_colorInputChange:function(a){var b,c=!1;switch(a.target){case this.hexCode:b=v.fromString(a.target.value);c=!0;break;case this.Rval:case this.Gval:case this.Bval:b=
-v.fromArray([this.Rval.value,this.Gval.value,this.Bval.value]);c=!0;break;case this.Hval:case this.Sval:case this.Vval:b=v.fromHsv(this.Hval.value,this.Sval.value,this.Vval.value),c=!0}c&&(this._updatePickerLocations(b),this._updateColorInputs(b),this._updateValue(b,!0))},_updateValue:function(a,b){var c=a.toHex();this.value=this.valueNode.value=c;if(b&&(!this._timer||this.liveUpdate))this.onChange(c)},_updatePickerLocations:function(a){var b=this.PICKER_HUE_SELECTOR_H/2,d=this.PICKER_SAT_SELECTOR_H/
-2,f=this.PICKER_SAT_SELECTOR_W/2,a=a.toHsv(),b=Math.round(this.PICKER_HUE_H-a.h/360*this.PICKER_HUE_H)-b,f=Math.round(a.s/100*this.PICKER_SAT_VAL_W)-f,d=Math.round(this.PICKER_SAT_VAL_H-a.v/100*this.PICKER_SAT_VAL_H)-d;this.animatePoint?(p.slideTo({node:this.hueCursorNode,duration:this.slideDuration,top:b,left:0}).play(),p.slideTo({node:this.cursorNode,duration:this.slideDuration,top:d,left:f}).play()):(c.style(this.hueCursorNode,"top",b+"px"),c.style(this.cursorNode,{left:f+"px",top:d+"px"}));a.h!=
+"dojox/widget/ColorPicker":function(){define("dojo/_base/kernel,dojo/_base/declare,dojo/_base/lang,dojo/_base/array,dojo/_base/html,dojo/_base/connect,dojo/_base/sniff,dojo/_base/window,dojo/_base/event,dojo/dom,dojo/dom-class,dojo/keys,dojo/fx,dojo/dnd/move,dijit/registry,dijit/_base/focus,dijit/form/_FormWidget,dijit/typematic,dojox/color,dojo/i18n,dojo/i18n!./nls/ColorPicker,dojo/i18n!dojo/cldr/nls/number,dojo/text!./ColorPicker/ColorPicker.html".split(","),function(f,k,h,j,e,c,i,b,g,a,l,d,p,m,
+n,o,r,q,v,s,t,u,y){f.experimental("dojox.widget.ColorPicker");return k("dojox.widget.ColorPicker",r,{showRgb:!0,showHsv:!0,showHex:!0,webSafe:!0,animatePoint:!0,slideDuration:250,liveUpdate:!1,PICKER_HUE_H:150,PICKER_SAT_VAL_H:150,PICKER_SAT_VAL_W:150,PICKER_HUE_SELECTOR_H:8,PICKER_SAT_SELECTOR_H:10,PICKER_SAT_SELECTOR_W:10,value:"#ffffff",_underlay:f.moduleUrl("dojox.widget","ColorPicker/images/underlay.png"),_hueUnderlay:f.moduleUrl("dojox.widget","ColorPicker/images/hue.png"),_pickerPointer:f.moduleUrl("dojox.widget",
+"ColorPicker/images/pickerPointer.png"),_huePickerPointer:f.moduleUrl("dojox.widget","ColorPicker/images/hueHandle.png"),_huePickerPointerAlly:f.moduleUrl("dojox.widget","ColorPicker/images/hueHandleA11y.png"),templateString:y,postMixInProperties:function(){if(l.contains(b.body(),"dijit_a11y"))this._huePickerPointer=this._huePickerPointerAlly;this._uId=n.getUniqueId(this.id);h.mixin(this,s.getLocalization("dojox.widget","ColorPicker"));h.mixin(this,s.getLocalization("dojo.cldr","number"));this.inherited(arguments)},
+postCreate:function(){this.inherited(arguments);if(7>i("ie"))this.colorUnderlay.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this._underlay+"', sizingMethod='scale')",this.colorUnderlay.src=this._blankGif.toString();if(!this.showRgb)this.rgbNode.style.visibility="hidden";if(!this.showHsv)this.hsvNode.style.visibility="hidden";if(!this.showHex)this.hexNode.style.visibility="hidden";if(!this.webSafe)this.safePreviewNode.style.visibility="hidden"},startup:function(){if(!this._started)this._started=
+!0,this.set("value",this.value),this._mover=new m.boxConstrainedMoveable(this.cursorNode,{box:{t:-(this.PICKER_SAT_SELECTOR_H/2),l:-(this.PICKER_SAT_SELECTOR_W/2),w:this.PICKER_SAT_VAL_W,h:this.PICKER_SAT_VAL_H}}),this._hueMover=new m.boxConstrainedMoveable(this.hueCursorNode,{box:{t:-(this.PICKER_HUE_SELECTOR_H/2),l:0,w:0,h:this.PICKER_HUE_H}}),this._subs=[],this._subs.push(c.subscribe("/dnd/move/stop",h.hitch(this,"_clearTimer"))),this._subs.push(c.subscribe("/dnd/move/start",h.hitch(this,"_setTimer"))),
+this._keyListeners=[],this._connects.push(q.addKeyListener(this.hueCursorNode,{charOrCode:d.UP_ARROW,shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this,h.hitch(this,this._updateHueCursorNode),25,25)),this._connects.push(q.addKeyListener(this.hueCursorNode,{charOrCode:d.DOWN_ARROW,shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this,h.hitch(this,this._updateHueCursorNode),25,25)),this._connects.push(q.addKeyListener(this.cursorNode,{charOrCode:d.UP_ARROW,shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this,
+h.hitch(this,this._updateCursorNode),25,25)),this._connects.push(q.addKeyListener(this.cursorNode,{charOrCode:d.DOWN_ARROW,shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this,h.hitch(this,this._updateCursorNode),25,25)),this._connects.push(q.addKeyListener(this.cursorNode,{charOrCode:d.LEFT_ARROW,shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1},this,h.hitch(this,this._updateCursorNode),25,25)),this._connects.push(q.addKeyListener(this.cursorNode,{charOrCode:d.RIGHT_ARROW,shiftKey:!1,metaKey:!1,ctrlKey:!1,
+altKey:!1},this,h.hitch(this,this._updateCursorNode),25,25))},_setValueAttr:function(a){this._started&&this.setColor(a,!0)},setColor:function(a,b){a=v.fromString(a);this._updatePickerLocations(a);this._updateColorInputs(a);this._updateValue(a,b)},_setTimer:function(b){if(b.node==this.cursorNode)o.focus(b.node),a.setSelectable(this.domNode,!1),this._timer=setInterval(h.hitch(this,"_updateColor"),45)},_clearTimer:function(){if(this._timer)clearInterval(this._timer),this._timer=null,this.onChange(this.value),
+a.setSelectable(this.domNode,!0)},_setHue:function(a){e.style(this.colorUnderlay,"backgroundColor",v.fromHsv(a,100,100).toHex())},_updateHueCursorNode:function(a,b,c){if(-1!==a){var a=e.style(this.hueCursorNode,"top"),b=this.PICKER_HUE_SELECTOR_H/2,a=a+b,g=!1;c.charOrCode==d.UP_ARROW?0<a&&(a-=1,g=!0):c.charOrCode==d.DOWN_ARROW&&a<this.PICKER_HUE_H&&(a+=1,g=!0);g&&e.style(this.hueCursorNode,"top",a-b+"px")}else this._updateColor(!0)},_updateCursorNode:function(a,b,c){var b=this.PICKER_SAT_SELECTOR_H/
+2,g=this.PICKER_SAT_SELECTOR_W/2;if(-1!==a){var a=e.style(this.cursorNode,"top"),f=e.style(this.cursorNode,"left"),a=a+b,f=f+g,i=!1;c.charOrCode==d.UP_ARROW?0<a&&(a-=1,i=!0):c.charOrCode==d.DOWN_ARROW?a<this.PICKER_SAT_VAL_H&&(a+=1,i=!0):c.charOrCode==d.LEFT_ARROW?0<f&&(f-=1,i=!0):c.charOrCode==d.RIGHT_ARROW&&f<this.PICKER_SAT_VAL_W&&(f+=1,i=!0);i&&(f-=g,e.style(this.cursorNode,"top",a-b+"px"),e.style(this.cursorNode,"left",f+"px"))}else this._updateColor(!0)},_updateColor:function(){var a=this.PICKER_HUE_SELECTOR_H/
+2,b=this.PICKER_SAT_SELECTOR_H/2,c=this.PICKER_SAT_SELECTOR_W/2,a=e.style(this.hueCursorNode,"top")+a,b=e.style(this.cursorNode,"top")+b,c=e.style(this.cursorNode,"left")+c,a=Math.round(360-360*(a/this.PICKER_HUE_H)),c=v.fromHsv(a,100*(c/this.PICKER_SAT_VAL_W),100-100*(b/this.PICKER_SAT_VAL_H));this._updateColorInputs(c);this._updateValue(c,!0);a!=this._hue&&this._setHue(a)},_colorInputChange:function(a){var b,c=!1;switch(a.target){case this.hexCode:b=v.fromString(a.target.value);c=!0;break;case this.Rval:case this.Gval:case this.Bval:b=
+v.fromArray([this.Rval.value,this.Gval.value,this.Bval.value]);c=!0;break;case this.Hval:case this.Sval:case this.Vval:b=v.fromHsv(this.Hval.value,this.Sval.value,this.Vval.value),c=!0}c&&(this._updatePickerLocations(b),this._updateColorInputs(b),this._updateValue(b,!0))},_updateValue:function(a,b){var c=a.toHex();this.value=this.valueNode.value=c;if(b&&(!this._timer||this.liveUpdate))this.onChange(c)},_updatePickerLocations:function(a){var b=this.PICKER_HUE_SELECTOR_H/2,c=this.PICKER_SAT_SELECTOR_H/
+2,d=this.PICKER_SAT_SELECTOR_W/2,a=a.toHsv(),b=Math.round(this.PICKER_HUE_H-a.h/360*this.PICKER_HUE_H)-b,d=Math.round(a.s/100*this.PICKER_SAT_VAL_W)-d,c=Math.round(this.PICKER_SAT_VAL_H-a.v/100*this.PICKER_SAT_VAL_H)-c;this.animatePoint?(p.slideTo({node:this.hueCursorNode,duration:this.slideDuration,top:b,left:0}).play(),p.slideTo({node:this.cursorNode,duration:this.slideDuration,top:c,left:d}).play()):(e.style(this.hueCursorNode,"top",b+"px"),e.style(this.cursorNode,{left:d+"px",top:c+"px"}));a.h!=
this._hue&&this._setHue(a.h)},_updateColorInputs:function(a){var b=a.toHex();if(this.showRgb)this.Rval.value=a.r,this.Gval.value=a.g,this.Bval.value=a.b;if(this.showHsv)a=a.toHsv(),this.Hval.value=Math.round(a.h),this.Sval.value=Math.round(a.s),this.Vval.value=Math.round(a.v);if(this.showHex)this.hexCode.value=b;this.previewNode.style.backgroundColor=b;if(this.webSafe)this.safePreviewNode.style.backgroundColor=b},_setHuePoint:function(a){a=a.layerY-this.PICKER_HUE_SELECTOR_H/2;this.animatePoint?p.slideTo({node:this.hueCursorNode,
-duration:this.slideDuration,top:a,left:0,onEnd:i.hitch(this,function(){this._updateColor(!0);o.focus(this.hueCursorNode)})}).play():(c.style(this.hueCursorNode,"top",a+"px"),this._updateColor(!1))},_setPoint:function(a){var b=a.layerY-this.PICKER_SAT_SELECTOR_H/2,d=a.layerX-this.PICKER_SAT_SELECTOR_W/2;a&&o.focus(a.target);this.animatePoint?p.slideTo({node:this.cursorNode,duration:this.slideDuration,top:b,left:d,onEnd:i.hitch(this,function(){this._updateColor(!0);o.focus(this.cursorNode)})}).play():
-(c.style(this.cursorNode,{left:d+"px",top:b+"px"}),this._updateColor(!1))},_handleKey:function(){},focus:function(){this.focused||o.focus(this.focusNode)},_stopDrag:function(a){f.stop(a)},destroy:function(){this.inherited(arguments);l.forEach(this._subs,function(a){g.unsubscribe(a)});delete this._subs}})})},"dojo/fx":function(){define("./_base/lang,./Evented,./_base/kernel,./_base/array,./_base/connect,./_base/fx,./dom,./dom-style,./dom-geometry,./ready,require".split(","),function(e,j,i,l,c,g,h,
-b,f,a,k){i.isAsync||a(0,function(){k(["./fx/Toggler"])});var i=i.fx={},a={_fire:function(a,b){this[a]&&this[a].apply(this,b||[]);return this}},d=function(a){this._index=-1;this._animations=a||[];this._current=this._onAnimateCtx=this._onEndCtx=null;this.duration=0;l.forEach(this._animations,function(a){this.duration+=a.duration;a.delay&&(this.duration+=a.delay)},this)};d.prototype=new j;e.extend(d,{_onAnimate:function(){this._fire("onAnimate",arguments)},_onEnd:function(){c.disconnect(this._onAnimateCtx);
-c.disconnect(this._onEndCtx);this._onAnimateCtx=this._onEndCtx=null;this._index+1==this._animations.length?this._fire("onEnd"):(this._current=this._animations[++this._index],this._onAnimateCtx=c.connect(this._current,"onAnimate",this,"_onAnimate"),this._onEndCtx=c.connect(this._current,"onEnd",this,"_onEnd"),this._current.play(0,!0))},play:function(a,b){if(!this._current)this._current=this._animations[this._index=0];if(!b&&"playing"==this._current.status())return this;var d=c.connect(this._current,
-"beforeBegin",this,function(){this._fire("beforeBegin")}),f=c.connect(this._current,"onBegin",this,function(a){this._fire("onBegin",arguments)}),e=c.connect(this._current,"onPlay",this,function(a){this._fire("onPlay",arguments);c.disconnect(d);c.disconnect(f);c.disconnect(e)});this._onAnimateCtx&&c.disconnect(this._onAnimateCtx);this._onAnimateCtx=c.connect(this._current,"onAnimate",this,"_onAnimate");this._onEndCtx&&c.disconnect(this._onEndCtx);this._onEndCtx=c.connect(this._current,"onEnd",this,
-"_onEnd");this._current.play.apply(this._current,arguments);return this},pause:function(){if(this._current){var a=c.connect(this._current,"onPause",this,function(b){this._fire("onPause",arguments);c.disconnect(a)});this._current.pause()}return this},gotoPercent:function(a,b){this.pause();var c=this.duration*a;this._current=null;l.some(this._animations,function(a){if(a.duration<=c)return this._current=a,!0;c-=a.duration;return!1});this._current&&this._current.gotoPercent(c/this._current.duration,b);
-return this},stop:function(a){if(this._current){if(a){for(;this._index+1<this._animations.length;++this._index)this._animations[this._index].stop(!0);this._current=this._animations[this._index]}var b=c.connect(this._current,"onStop",this,function(a){this._fire("onStop",arguments);c.disconnect(b)});this._current.stop()}return this},status:function(){return this._current?this._current.status():"stopped"},destroy:function(){this._onAnimateCtx&&c.disconnect(this._onAnimateCtx);this._onEndCtx&&c.disconnect(this._onEndCtx)}});
-e.extend(d,a);i.chain=function(a){return new d(a)};var p=function(a){this._animations=a||[];this._connects=[];this.duration=this._finished=0;l.forEach(a,function(a){var b=a.duration;a.delay&&(b+=a.delay);if(this.duration<b)this.duration=b;this._connects.push(c.connect(a,"onEnd",this,"_onEnd"))},this);this._pseudoAnimation=new g.Animation({curve:[0,1],duration:this.duration});var b=this;l.forEach("beforeBegin,onBegin,onPlay,onAnimate,onPause,onStop,onEnd".split(","),function(a){b._connects.push(c.connect(b._pseudoAnimation,
-a,function(){b._fire(a,arguments)}))})};e.extend(p,{_doAction:function(a,b){l.forEach(this._animations,function(c){c[a].apply(c,b)});return this},_onEnd:function(){++this._finished>this._animations.length&&this._fire("onEnd")},_call:function(a,b){var c=this._pseudoAnimation;c[a].apply(c,b)},play:function(a,b){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(a,
-b){var c=this.duration*a;l.forEach(this._animations,function(a){a.gotoPercent(a.duration<c?1:c/a.duration,b)});this._call("gotoPercent",arguments);return this},stop:function(a){this._doAction("stop",arguments);this._call("stop",arguments);return this},status:function(){return this._pseudoAnimation.status()},destroy:function(){l.forEach(this._connects,c.disconnect)}});e.extend(p,a);i.combine=function(a){return new p(a)};i.wipeIn=function(a){var d=a.node=h.byId(a.node),f=d.style,i,a=g.animateProperty(e.mixin({properties:{height:{start:function(){i=
-f.overflow;f.overflow="hidden";if("hidden"==f.visibility||"none"==f.display)return f.height="1px",f.display="",f.visibility="",1;var a=b.get(d,"height");return Math.max(a,1)},end:function(){return d.scrollHeight}}}},a)),k=function(){f.height="auto";f.overflow=i};c.connect(a,"onStop",k);c.connect(a,"onEnd",k);return a};i.wipeOut=function(a){var b=(a.node=h.byId(a.node)).style,d,a=g.animateProperty(e.mixin({properties:{height:{end:1}}},a));c.connect(a,"beforeBegin",function(){d=b.overflow;b.overflow=
-"hidden";b.display=""});var f=function(){b.overflow=d;b.height="auto";b.display="none"};c.connect(a,"onStop",f);c.connect(a,"onEnd",f);return a};i.slideTo=function(a){var d=null,i=null,k=function(a){return function(){var c=b.getComputedStyle(a),e=c.position;d="absolute"==e?a.offsetTop:parseInt(c.top)||0;i="absolute"==e?a.offsetLeft:parseInt(c.left)||0;if("absolute"!=e&&"relative"!=e)c=f.position(a,!0),d=c.y,i=c.x,a.style.position="absolute",a.style.top=d+"px",a.style.left=i+"px"}}(a.node=h.byId(a.node));
-k();a=g.animateProperty(e.mixin({properties:{top:a.top||0,left:a.left||0}},a));c.connect(a,"beforeBegin",a,k);return a};return i})},"dijit/_base/focus":function(){define("dojo/_base/array,dojo/dom,dojo/_base/lang,dojo/topic,dojo/_base/window,../focus,../main".split(","),function(e,j,i,l,c,g,h){g.focus=function(b){if(b){var f="node"in b?b.node:b,a=b.bookmark,b=b.openedForWindow,e=a?a.isCollapsed:!1;if(f){var d="iframe"==f.tagName.toLowerCase()?f.contentWindow:f;if(d&&d.focus)try{d.focus()}catch(i){}g._onFocusNode(f)}if(a&&
-c.withGlobal(b||c.global,h.isCollapsed)&&!e){b&&b.focus();try{c.withGlobal(b||c.global,h.moveToBookmark,null,[a])}catch(j){}}}};g.watch("curNode",function(b,c,a){h._curFocus=a;h._prevFocus=c;a&&l.publish("focusNode",a)});g.watch("activeStack",function(b,c,a){h._activeStack=a});g.on("widget-blur",function(b,c){l.publish("widgetBlur",b,c)});g.on("widget-focus",function(b,c){l.publish("widgetFocus",b,c)});i.mixin(h,{_curFocus:null,_prevFocus:null,isCollapsed:function(){return h.getBookmark().isCollapsed},
-getBookmark:function(){var b,f,a=c.doc.selection,e=g.curNode;if(c.global.getSelection){if(a=c.global.getSelection())if(a.isCollapsed){if(b=e?e.tagName:"")if(b=b.toLowerCase(),"textarea"==b||"input"==b&&(!e.type||"text"==e.type.toLowerCase()))return a={start:e.selectionStart,end:e.selectionEnd,node:e,pRange:!0},{isCollapsed:a.end<=a.start,mark:a};b={isCollapsed:!0};if(a.rangeCount)b.mark=a.getRangeAt(0).cloneRange()}else f=a.getRangeAt(0),b={isCollapsed:!1,mark:f.cloneRange()}}else if(a){b=e?e.tagName:
-"";b=b.toLowerCase();if(e&&b&&("button"==b||"textarea"==b||"input"==b)){if(a.type&&"none"==a.type.toLowerCase())return{isCollapsed:!0,mark:null};f=a.createRange();return{isCollapsed:f.text&&f.text.length?!1:!0,mark:{range:f,pRange:!0}}}b={};try{f=a.createRange(),b.isCollapsed=!("Text"==a.type?f.htmlText.length:f.length)}catch(d){return b.isCollapsed=!0,b}if("CONTROL"==a.type.toUpperCase())if(f.length){b.mark=[];a=0;for(e=f.length;a<e;)b.mark.push(f.item(a++))}else b.isCollapsed=!0,b.mark=null;else b.mark=
-f.getBookmark()}return b},moveToBookmark:function(b){var f=c.doc;if(b=b.mark)if(c.global.getSelection){if((f=c.global.getSelection())&&f.removeAllRanges)b.pRange?(f=b.node,f.selectionStart=b.start,f.selectionEnd=b.end):(f.removeAllRanges(),f.addRange(b))}else if(f.selection&&b){var a;b.pRange?a=b.range:i.isArray(b)?(a=f.body.createControlRange(),e.forEach(b,function(b){a.addElement(b)})):(a=f.body.createTextRange(),a.moveToBookmark(b));a.select()}},getFocus:function(b,f){var a=!g.curNode||b&&j.isDescendant(g.curNode,
-b.domNode)?h._prevFocus:g.curNode;return{node:a,bookmark:a&&a==g.curNode&&c.withGlobal(f||c.global,h.getBookmark),openedForWindow:f}},_activeStack:[],registerIframe:function(b){return g.registerIframe(b)},unregisterIframe:function(b){b&&b.remove()},registerWin:function(b,c){return g.registerWin(b,c)},unregisterWin:function(b){b&&b.remove()}});return h})},"dojox/color":function(){define(["./color/_base"],function(e){return e})},"dojox/color/_base":function(){define(["../main","dojo/_base/lang","dojo/_base/Color",
-"dojo/colors"],function(e,j,i,l){e=j.getObject("color",!0,e);e.Color=i;e.blend=i.blendColors;e.fromRgb=i.fromRgb;e.fromHex=i.fromHex;e.fromArray=i.fromArray;e.fromString=i.fromString;e.greyscale=l.makeGrey;j.mixin(e,{fromCmy:function(c,e,h){if(j.isArray(c))e=c[1],h=c[2],c=c[0];else if(j.isObject(c))e=c.m,h=c.y,c=c.c;c/=100;e/=100;h/=100;e=1-e;h=1-h;return new i({r:Math.round(255*(1-c)),g:Math.round(255*e),b:Math.round(255*h)})},fromCmyk:function(c,e,h,b){if(j.isArray(c))e=c[1],h=c[2],b=c[3],c=c[0];
-else if(j.isObject(c))e=c.m,h=c.y,b=c.b,c=c.c;c/=100;e/=100;h/=100;b/=100;c=1-Math.min(1,c*(1-b)+b);e=1-Math.min(1,e*(1-b)+b);h=1-Math.min(1,h*(1-b)+b);return new i({r:Math.round(255*c),g:Math.round(255*e),b:Math.round(255*h)})},fromHsl:function(c,e,h){if(j.isArray(c))e=c[1],h=c[2],c=c[0];else if(j.isObject(c))e=c.s,h=c.l,c=c.h;e/=100;for(h/=100;0>c;)c+=360;for(;360<=c;)c-=360;var b,f,a;120>c?(b=(120-c)/60,f=c/60,a=0):240>c?(b=0,f=(240-c)/60,a=(c-120)/60):(b=(c-240)/60,f=0,a=(360-c)/60);b=2*e*Math.min(b,
-1)+(1-e);f=2*e*Math.min(f,1)+(1-e);a=2*e*Math.min(a,1)+(1-e);0.5>h?(b*=h,f*=h,a*=h):(b=(1-h)*b+2*h-1,f=(1-h)*f+2*h-1,a=(1-h)*a+2*h-1);return new i({r:Math.round(255*b),g:Math.round(255*f),b:Math.round(255*a)})}});e.fromHsv=function(c,e,h){if(j.isArray(c))e=c[1],h=c[2],c=c[0];else if(j.isObject(c))e=c.s,h=c.v,c=c.h;360==c&&(c=0);var e=e/100,h=h/100,b,f,a;if(0==e)b=h,a=h,f=h;else{var k=c/60,c=Math.floor(k),d=k-c,k=h*(1-e),l=h*(1-e*d),e=h*(1-e*(1-d));switch(c){case 0:b=h;f=e;a=k;break;case 1:b=l;f=h;
-a=k;break;case 2:b=k;f=h;a=e;break;case 3:b=k;f=l;a=h;break;case 4:b=e;f=k;a=h;break;case 5:b=h,f=k,a=l}}return new i({r:Math.round(255*b),g:Math.round(255*f),b:Math.round(255*a)})};j.extend(i,{toCmy:function(){var c=1-this.g/255,e=1-this.b/255;return{c:Math.round(100*(1-this.r/255)),m:Math.round(100*c),y:Math.round(100*e)}},toCmyk:function(){var c,e,h,b=this.r/255;e=this.g/255;h=this.b/255;c=Math.min(1-b,1-e,1-h);e=(1-e-c)/(1-c);h=(1-h-c)/(1-c);return{c:Math.round(100*((1-b-c)/(1-c))),m:Math.round(100*
-e),y:Math.round(100*h),b:Math.round(100*c)}},toHsl:function(){var c=this.r/255,e=this.g/255,h=this.b/255,b=Math.min(c,h,e),f=Math.max(c,e,h),a=f-b,i=0,d=0,b=(b+f)/2;0<b&&1>b&&(d=a/(0.5>b?2*b:2-2*b));0<a&&(f==c&&f!=e&&(i+=(e-h)/a),f==e&&f!=h&&(i+=2+(h-c)/a),f==h&&f!=c&&(i+=4+(c-e)/a),i*=60);return{h:i,s:Math.round(100*d),l:Math.round(100*b)}},toHsv:function(){var c=this.r/255,e=this.g/255,h=this.b/255,b=Math.min(c,h,e),f=Math.max(c,e,h),b=f-b,a=null,i=0==f?0:b/f;0==i?a=0:(a=c==f?60*(e-h)/b:e==f?120+
-60*(h-c)/b:240+60*(c-e)/b,0>a&&(a+=360));return{h:a,s:Math.round(100*i),v:Math.round(100*f)}}});return e})},"dojox/main":function(){define(["dojo/_base/kernel"],function(e){return e.dojox})},"dojo/colors":function(){define("dojo/colors",["./_base/kernel","./_base/lang","./_base/Color","./_base/array"],function(e,j,i,l){var c={};j.setObject("dojo.colors",c);var g=function(b,c,a){0>a&&++a;1<a&&--a;var e=6*a;return 1>e?b+(c-b)*e:1>2*a?c:2>3*a?b+6*(c-b)*(2/3-a):b};e.colorFromRgb=i.fromRgb=function(b,
-c){var a=b.toLowerCase().match(/^(rgba?|hsla?)\(([\s\.\-,%0-9]+)\)/);if(a){var e=a[2].split(/\s*,\s*/),d=e.length,a=a[1];if("rgb"==a&&3==d||"rgba"==a&&4==d){a=e[0];return"%"==a.charAt(a.length-1)?(a=l.map(e,function(a){return 2.56*parseFloat(a)}),4==d&&(a[3]=e[3]),i.fromArray(a,c)):i.fromArray(e,c)}if("hsl"==a&&3==d||"hsla"==a&&4==d){var a=(parseFloat(e[0])%360+360)%360/360,h=parseFloat(e[1])/100,j=parseFloat(e[2])/100,h=0.5>=j?j*(h+1):j+h-j*h,j=2*j-h,a=[256*g(j,h,a+1/3),256*g(j,h,a),256*g(j,h,a-
-1/3),1];4==d&&(a[3]=e[3]);return i.fromArray(a,c)}}return null};var h=function(b,c,a){b=Number(b);return isNaN(b)?a:b<c?c:b>a?a:b};i.prototype.sanitize=function(){this.r=Math.round(h(this.r,0,255));this.g=Math.round(h(this.g,0,255));this.b=Math.round(h(this.b,0,255));this.a=h(this.a,0,1);return this};c.makeGrey=i.makeGrey=function(b,c){return i.fromArray([b,b,b,c])};j.mixin(i.named,{aliceblue:[240,248,255],antiquewhite:[250,235,215],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],
+duration:this.slideDuration,top:a,left:0,onEnd:h.hitch(this,function(){this._updateColor(!0);o.focus(this.hueCursorNode)})}).play():(e.style(this.hueCursorNode,"top",a+"px"),this._updateColor(!1))},_setPoint:function(a){var b=a.layerY-this.PICKER_SAT_SELECTOR_H/2,c=a.layerX-this.PICKER_SAT_SELECTOR_W/2;a&&o.focus(a.target);this.animatePoint?p.slideTo({node:this.cursorNode,duration:this.slideDuration,top:b,left:c,onEnd:h.hitch(this,function(){this._updateColor(!0);o.focus(this.cursorNode)})}).play():
+(e.style(this.cursorNode,{left:c+"px",top:b+"px"}),this._updateColor(!1))},_handleKey:function(){},focus:function(){this.focused||o.focus(this.focusNode)},_stopDrag:function(a){g.stop(a)},destroy:function(){this.inherited(arguments);j.forEach(this._subs,function(a){c.unsubscribe(a)});delete this._subs}})})},"dojo/fx":function(){define("./_base/lang,./Evented,./_base/kernel,./_base/array,./_base/connect,./_base/fx,./dom,./dom-style,./dom-geometry,./ready,require".split(","),function(f,k,h,j,e,c,i,
+b,g,a,l){h.isAsync||a(0,function(){l(["./fx/Toggler"])});var h=h.fx={},a={_fire:function(a,b){this[a]&&this[a].apply(this,b||[]);return this}},d=function(a){this._index=-1;this._animations=a||[];this._current=this._onAnimateCtx=this._onEndCtx=null;this.duration=0;j.forEach(this._animations,function(a){this.duration+=a.duration;a.delay&&(this.duration+=a.delay)},this)};d.prototype=new k;f.extend(d,{_onAnimate:function(){this._fire("onAnimate",arguments)},_onEnd:function(){e.disconnect(this._onAnimateCtx);
+e.disconnect(this._onEndCtx);this._onAnimateCtx=this._onEndCtx=null;this._index+1==this._animations.length?this._fire("onEnd"):(this._current=this._animations[++this._index],this._onAnimateCtx=e.connect(this._current,"onAnimate",this,"_onAnimate"),this._onEndCtx=e.connect(this._current,"onEnd",this,"_onEnd"),this._current.play(0,!0))},play:function(a,b){if(!this._current)this._current=this._animations[this._index=0];if(!b&&"playing"==this._current.status())return this;var c=e.connect(this._current,
+"beforeBegin",this,function(){this._fire("beforeBegin")}),d=e.connect(this._current,"onBegin",this,function(a){this._fire("onBegin",arguments)}),g=e.connect(this._current,"onPlay",this,function(a){this._fire("onPlay",arguments);e.disconnect(c);e.disconnect(d);e.disconnect(g)});this._onAnimateCtx&&e.disconnect(this._onAnimateCtx);this._onAnimateCtx=e.connect(this._current,"onAnimate",this,"_onAnimate");this._onEndCtx&&e.disconnect(this._onEndCtx);this._onEndCtx=e.connect(this._current,"onEnd",this,
+"_onEnd");this._current.play.apply(this._current,arguments);return this},pause:function(){if(this._current){var a=e.connect(this._current,"onPause",this,function(b){this._fire("onPause",arguments);e.disconnect(a)});this._current.pause()}return this},gotoPercent:function(a,b){this.pause();var c=this.duration*a;this._current=null;j.some(this._animations,function(a){if(a.duration<=c)return this._current=a,!0;c-=a.duration;return!1});this._current&&this._current.gotoPercent(c/this._current.duration,b);
+return this},stop:function(a){if(this._current){if(a){for(;this._index+1<this._animations.length;++this._index)this._animations[this._index].stop(!0);this._current=this._animations[this._index]}var b=e.connect(this._current,"onStop",this,function(a){this._fire("onStop",arguments);e.disconnect(b)});this._current.stop()}return this},status:function(){return this._current?this._current.status():"stopped"},destroy:function(){this._onAnimateCtx&&e.disconnect(this._onAnimateCtx);this._onEndCtx&&e.disconnect(this._onEndCtx)}});
+f.extend(d,a);h.chain=function(a){return new d(a)};var p=function(a){this._animations=a||[];this._connects=[];this.duration=this._finished=0;j.forEach(a,function(a){var b=a.duration;a.delay&&(b+=a.delay);if(this.duration<b)this.duration=b;this._connects.push(e.connect(a,"onEnd",this,"_onEnd"))},this);this._pseudoAnimation=new c.Animation({curve:[0,1],duration:this.duration});var b=this;j.forEach("beforeBegin,onBegin,onPlay,onAnimate,onPause,onStop,onEnd".split(","),function(a){b._connects.push(e.connect(b._pseudoAnimation,
+a,function(){b._fire(a,arguments)}))})};f.extend(p,{_doAction:function(a,b){j.forEach(this._animations,function(c){c[a].apply(c,b)});return this},_onEnd:function(){++this._finished>this._animations.length&&this._fire("onEnd")},_call:function(a,b){var c=this._pseudoAnimation;c[a].apply(c,b)},play:function(a,b){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(a,
+b){var c=this.duration*a;j.forEach(this._animations,function(a){a.gotoPercent(a.duration<c?1:c/a.duration,b)});this._call("gotoPercent",arguments);return this},stop:function(a){this._doAction("stop",arguments);this._call("stop",arguments);return this},status:function(){return this._pseudoAnimation.status()},destroy:function(){j.forEach(this._connects,e.disconnect)}});f.extend(p,a);h.combine=function(a){return new p(a)};h.wipeIn=function(a){var d=a.node=i.byId(a.node),g=d.style,h,a=c.animateProperty(f.mixin({properties:{height:{start:function(){h=
+g.overflow;g.overflow="hidden";if("hidden"==g.visibility||"none"==g.display)return g.height="1px",g.display="",g.visibility="",1;var a=b.get(d,"height");return Math.max(a,1)},end:function(){return d.scrollHeight}}}},a)),j=function(){g.height="auto";g.overflow=h};e.connect(a,"onStop",j);e.connect(a,"onEnd",j);return a};h.wipeOut=function(a){var b=(a.node=i.byId(a.node)).style,d,a=c.animateProperty(f.mixin({properties:{height:{end:1}}},a));e.connect(a,"beforeBegin",function(){d=b.overflow;b.overflow=
+"hidden";b.display=""});var g=function(){b.overflow=d;b.height="auto";b.display="none"};e.connect(a,"onStop",g);e.connect(a,"onEnd",g);return a};h.slideTo=function(a){var d=null,h=null,j=function(a){return function(){var c=b.getComputedStyle(a),e=c.position;d="absolute"==e?a.offsetTop:parseInt(c.top)||0;h="absolute"==e?a.offsetLeft:parseInt(c.left)||0;if("absolute"!=e&&"relative"!=e)c=g.position(a,!0),d=c.y,h=c.x,a.style.position="absolute",a.style.top=d+"px",a.style.left=h+"px"}}(a.node=i.byId(a.node));
+j();a=c.animateProperty(f.mixin({properties:{top:a.top||0,left:a.left||0}},a));e.connect(a,"beforeBegin",a,j);return a};return h})},"dijit/_base/focus":function(){define("dojo/_base/array,dojo/dom,dojo/_base/lang,dojo/topic,dojo/_base/window,../focus,../main".split(","),function(f,k,h,j,e,c,i){c.focus=function(b){if(b){var g="node"in b?b.node:b,a=b.bookmark,b=b.openedForWindow,f=a?a.isCollapsed:!1;if(g){var d="iframe"==g.tagName.toLowerCase()?g.contentWindow:g;if(d&&d.focus)try{d.focus()}catch(h){}c._onFocusNode(g)}if(a&&
+e.withGlobal(b||e.global,i.isCollapsed)&&!f){b&&b.focus();try{e.withGlobal(b||e.global,i.moveToBookmark,null,[a])}catch(j){}}}};c.watch("curNode",function(b,c,a){i._curFocus=a;i._prevFocus=c;a&&j.publish("focusNode",a)});c.watch("activeStack",function(b,c,a){i._activeStack=a});c.on("widget-blur",function(b,c){j.publish("widgetBlur",b,c)});c.on("widget-focus",function(b,c){j.publish("widgetFocus",b,c)});h.mixin(i,{_curFocus:null,_prevFocus:null,isCollapsed:function(){return i.getBookmark().isCollapsed},
+getBookmark:function(){var b,g,a=e.doc.selection,f=c.curNode;if(e.global.getSelection){if(a=e.global.getSelection())if(a.isCollapsed){if(b=f?f.tagName:"")if(b=b.toLowerCase(),"textarea"==b||"input"==b&&(!f.type||"text"==f.type.toLowerCase()))return a={start:f.selectionStart,end:f.selectionEnd,node:f,pRange:!0},{isCollapsed:a.end<=a.start,mark:a};b={isCollapsed:!0};if(a.rangeCount)b.mark=a.getRangeAt(0).cloneRange()}else g=a.getRangeAt(0),b={isCollapsed:!1,mark:g.cloneRange()}}else if(a){b=f?f.tagName:
+"";b=b.toLowerCase();if(f&&b&&("button"==b||"textarea"==b||"input"==b)){if(a.type&&"none"==a.type.toLowerCase())return{isCollapsed:!0,mark:null};g=a.createRange();return{isCollapsed:g.text&&g.text.length?!1:!0,mark:{range:g,pRange:!0}}}b={};try{g=a.createRange(),b.isCollapsed=!("Text"==a.type?g.htmlText.length:g.length)}catch(d){return b.isCollapsed=!0,b}if("CONTROL"==a.type.toUpperCase())if(g.length){b.mark=[];a=0;for(f=g.length;a<f;)b.mark.push(g.item(a++))}else b.isCollapsed=!0,b.mark=null;else b.mark=
+g.getBookmark()}return b},moveToBookmark:function(b){var c=e.doc;if(b=b.mark)if(e.global.getSelection){if((c=e.global.getSelection())&&c.removeAllRanges)b.pRange?(c=b.node,c.selectionStart=b.start,c.selectionEnd=b.end):(c.removeAllRanges(),c.addRange(b))}else if(c.selection&&b){var a;b.pRange?a=b.range:h.isArray(b)?(a=c.body.createControlRange(),f.forEach(b,function(b){a.addElement(b)})):(a=c.body.createTextRange(),a.moveToBookmark(b));a.select()}},getFocus:function(b,g){var a=!c.curNode||b&&k.isDescendant(c.curNode,
+b.domNode)?i._prevFocus:c.curNode;return{node:a,bookmark:a&&a==c.curNode&&e.withGlobal(g||e.global,i.getBookmark),openedForWindow:g}},_activeStack:[],registerIframe:function(b){return c.registerIframe(b)},unregisterIframe:function(b){b&&b.remove()},registerWin:function(b,e){return c.registerWin(b,e)},unregisterWin:function(b){b&&b.remove()}});return i})},"dojox/color":function(){define(["./color/_base"],function(f){return f})},"dojox/color/_base":function(){define(["../main","dojo/_base/lang","dojo/_base/Color",
+"dojo/colors"],function(f,k,h,j){f=k.getObject("color",!0,f);f.Color=h;f.blend=h.blendColors;f.fromRgb=h.fromRgb;f.fromHex=h.fromHex;f.fromArray=h.fromArray;f.fromString=h.fromString;f.greyscale=j.makeGrey;k.mixin(f,{fromCmy:function(e,c,f){if(k.isArray(e))c=e[1],f=e[2],e=e[0];else if(k.isObject(e))c=e.m,f=e.y,e=e.c;e/=100;c/=100;f/=100;c=1-c;f=1-f;return new h({r:Math.round(255*(1-e)),g:Math.round(255*c),b:Math.round(255*f)})},fromCmyk:function(e,c,f,b){if(k.isArray(e))c=e[1],f=e[2],b=e[3],e=e[0];
+else if(k.isObject(e))c=e.m,f=e.y,b=e.b,e=e.c;e/=100;c/=100;f/=100;b/=100;e=1-Math.min(1,e*(1-b)+b);c=1-Math.min(1,c*(1-b)+b);f=1-Math.min(1,f*(1-b)+b);return new h({r:Math.round(255*e),g:Math.round(255*c),b:Math.round(255*f)})},fromHsl:function(e,c,f){if(k.isArray(e))c=e[1],f=e[2],e=e[0];else if(k.isObject(e))c=e.s,f=e.l,e=e.h;c/=100;for(f/=100;0>e;)e+=360;for(;360<=e;)e-=360;var b,g,a;120>e?(b=(120-e)/60,g=e/60,a=0):240>e?(b=0,g=(240-e)/60,a=(e-120)/60):(b=(e-240)/60,g=0,a=(360-e)/60);b=2*c*Math.min(b,
+1)+(1-c);g=2*c*Math.min(g,1)+(1-c);a=2*c*Math.min(a,1)+(1-c);0.5>f?(b*=f,g*=f,a*=f):(b=(1-f)*b+2*f-1,g=(1-f)*g+2*f-1,a=(1-f)*a+2*f-1);return new h({r:Math.round(255*b),g:Math.round(255*g),b:Math.round(255*a)})}});f.fromHsv=function(e,c,f){if(k.isArray(e))c=e[1],f=e[2],e=e[0];else if(k.isObject(e))c=e.s,f=e.v,e=e.h;360==e&&(e=0);var c=c/100,f=f/100,b,g,a;if(0==c)b=f,a=f,g=f;else{var j=e/60,e=Math.floor(j),d=j-e,j=f*(1-c),p=f*(1-c*d),c=f*(1-c*(1-d));switch(e){case 0:b=f;g=c;a=j;break;case 1:b=p;g=f;
+a=j;break;case 2:b=j;g=f;a=c;break;case 3:b=j;g=p;a=f;break;case 4:b=c;g=j;a=f;break;case 5:b=f,g=j,a=p}}return new h({r:Math.round(255*b),g:Math.round(255*g),b:Math.round(255*a)})};k.extend(h,{toCmy:function(){var e=1-this.g/255,c=1-this.b/255;return{c:Math.round(100*(1-this.r/255)),m:Math.round(100*e),y:Math.round(100*c)}},toCmyk:function(){var e,c,f,b=this.r/255;c=this.g/255;f=this.b/255;e=Math.min(1-b,1-c,1-f);c=(1-c-e)/(1-e);f=(1-f-e)/(1-e);return{c:Math.round(100*((1-b-e)/(1-e))),m:Math.round(100*
+c),y:Math.round(100*f),b:Math.round(100*e)}},toHsl:function(){var e=this.r/255,c=this.g/255,f=this.b/255,b=Math.min(e,f,c),g=Math.max(e,c,f),a=g-b,h=0,d=0,b=(b+g)/2;0<b&&1>b&&(d=a/(0.5>b?2*b:2-2*b));0<a&&(g==e&&g!=c&&(h+=(c-f)/a),g==c&&g!=f&&(h+=2+(f-e)/a),g==f&&g!=e&&(h+=4+(e-c)/a),h*=60);return{h:h,s:Math.round(100*d),l:Math.round(100*b)}},toHsv:function(){var e=this.r/255,c=this.g/255,f=this.b/255,b=Math.min(e,f,c),g=Math.max(e,c,f),b=g-b,a=null,h=0==g?0:b/g;0==h?a=0:(a=e==g?60*(c-f)/b:c==g?120+
+60*(f-e)/b:240+60*(e-c)/b,0>a&&(a+=360));return{h:a,s:Math.round(100*h),v:Math.round(100*g)}}});return f})},"dojox/main":function(){define(["dojo/_base/kernel"],function(f){return f.dojox})},"dojo/colors":function(){define("dojo/colors",["./_base/kernel","./_base/lang","./_base/Color","./_base/array"],function(f,k,h,j){var e={};k.setObject("dojo.colors",e);var c=function(b,c,a){0>a&&++a;1<a&&--a;var e=6*a;return 1>e?b+(c-b)*e:1>2*a?c:2>3*a?b+6*(c-b)*(2/3-a):b};f.colorFromRgb=h.fromRgb=function(b,
+e){var a=b.toLowerCase().match(/^(rgba?|hsla?)\(([\s\.\-,%0-9]+)\)/);if(a){var f=a[2].split(/\s*,\s*/),d=f.length,a=a[1];if("rgb"==a&&3==d||"rgba"==a&&4==d){a=f[0];return"%"==a.charAt(a.length-1)?(a=j.map(f,function(a){return 2.56*parseFloat(a)}),4==d&&(a[3]=f[3]),h.fromArray(a,e)):h.fromArray(f,e)}if("hsl"==a&&3==d||"hsla"==a&&4==d){var a=(parseFloat(f[0])%360+360)%360/360,i=parseFloat(f[1])/100,k=parseFloat(f[2])/100,i=0.5>=k?k*(i+1):k+i-k*i,k=2*k-i,a=[256*c(k,i,a+1/3),256*c(k,i,a),256*c(k,i,a-
+1/3),1];4==d&&(a[3]=f[3]);return h.fromArray(a,e)}}return null};var i=function(b,c,a){b=Number(b);return isNaN(b)?a:b<c?c:b>a?a:b};h.prototype.sanitize=function(){this.r=Math.round(i(this.r,0,255));this.g=Math.round(i(this.g,0,255));this.b=Math.round(i(this.b,0,255));this.a=i(this.a,0,1);return this};e.makeGrey=h.makeGrey=function(b,c){return h.fromArray([b,b,b,c])};k.mixin(h.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],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],whitesmoke:[245,245,245],yellowgreen:[154,205,50]});return i})},"url:dojox/widget/ColorPicker/ColorPicker.html":'<table class="dojoxColorPicker" dojoAttachEvent="onkeypress: _handleKey" cellpadding="0" cellspacing="0" role="presentation">\n\t<tr>\n\t\t<td valign="top" class="dojoxColorPickerRightPad">\n\t\t\t<div class="dojoxColorPickerBox">\n\t\t\t\t<\!-- Forcing ABS in style attr due to dojo DND issue with not picking it up form the class. --\>\n\t\t\t\t<img title="${saturationPickerTitle}" alt="${saturationPickerTitle}" class="dojoxColorPickerPoint" src="${_pickerPointer}" tabIndex="0" dojoAttachPoint="cursorNode" style="position: absolute; top: 0px; left: 0px;">\n\t\t\t\t<img role="presentation" alt="" dojoAttachPoint="colorUnderlay" dojoAttachEvent="onclick: _setPoint, onmousedown: _stopDrag" class="dojoxColorPickerUnderlay" src="${_underlay}" ondragstart="return false">\n\t\t\t</div>\n\t\t</td>\n\t\t<td valign="top" class="dojoxColorPickerRightPad">\n\t\t\t<div class="dojoxHuePicker">\n\t\t\t\t<\!-- Forcing ABS in style attr due to dojo DND issue with not picking it up form the class. --\>\n\t\t\t\t<img dojoAttachPoint="hueCursorNode" tabIndex="0" class="dojoxHuePickerPoint" title="${huePickerTitle}" alt="${huePickerTitle}" src="${_huePickerPointer}" style="position: absolute; top: 0px; left: 0px;">\n\t\t\t\t<div class="dojoxHuePickerUnderlay" dojoAttachPoint="hueNode">\n\t\t\t\t <img role="presentation" alt="" dojoAttachEvent="onclick: _setHuePoint, onmousedown: _stopDrag" src="${_hueUnderlay}">\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</td>\n\t\t<td valign="top">\n\t\t\t<table cellpadding="0" cellspacing="0" role="presentation">\n\t\t\t\t<tr>\n\t\t\t\t\t<td valign="top" class="dojoxColorPickerPreviewContainer">\n\t\t\t\t\t\t<table cellpadding="0" cellspacing="0" role="presentation">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td valign="top" class="dojoxColorPickerRightPad">\n\t\t\t\t\t\t\t\t\t<div dojoAttachPoint="previewNode" class="dojoxColorPickerPreview"></div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<td valign="top">\n\t\t\t\t\t\t\t\t\t<div dojoAttachPoint="safePreviewNode" class="dojoxColorPickerWebSafePreview"></div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td valign="bottom">\n\t\t\t\t\t\t<table class="dojoxColorPickerOptional" cellpadding="0" cellspacing="0" role="presentation">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<div class="dijitInline dojoxColorPickerRgb" dojoAttachPoint="rgbNode">\n\t\t\t\t\t\t\t\t\t\t<table cellpadding="1" cellspacing="1" role="presentation">\n\t\t\t\t\t\t\t\t\t\t<tr><td><label for="${_uId}_r">${redLabel}</label></td><td><input id="${_uId}_r" dojoAttachPoint="Rval" size="1" dojoAttachEvent="onchange: _colorInputChange"></td></tr>\n\t\t\t\t\t\t\t\t\t\t<tr><td><label for="${_uId}_g">${greenLabel}</label></td><td><input id="${_uId}_g" dojoAttachPoint="Gval" size="1" dojoAttachEvent="onchange: _colorInputChange"></td></tr>\n\t\t\t\t\t\t\t\t\t\t<tr><td><label for="${_uId}_b">${blueLabel}</label></td><td><input id="${_uId}_b" dojoAttachPoint="Bval" size="1" dojoAttachEvent="onchange: _colorInputChange"></td></tr>\n\t\t\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<div class="dijitInline dojoxColorPickerHsv" dojoAttachPoint="hsvNode">\n\t\t\t\t\t\t\t\t\t\t<table cellpadding="1" cellspacing="1" role="presentation">\n\t\t\t\t\t\t\t\t\t\t<tr><td><label for="${_uId}_h">${hueLabel}</label></td><td><input id="${_uId}_h" dojoAttachPoint="Hval"size="1" dojoAttachEvent="onchange: _colorInputChange"> ${degLabel}</td></tr>\n\t\t\t\t\t\t\t\t\t\t<tr><td><label for="${_uId}_s">${saturationLabel}</label></td><td><input id="${_uId}_s" dojoAttachPoint="Sval" size="1" dojoAttachEvent="onchange: _colorInputChange"> ${percentSign}</td></tr>\n\t\t\t\t\t\t\t\t\t\t<tr><td><label for="${_uId}_v">${valueLabel}</label></td><td><input id="${_uId}_v" dojoAttachPoint="Vval" size="1" dojoAttachEvent="onchange: _colorInputChange"> ${percentSign}</td></tr>\n\t\t\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td colspan="2">\n\t\t\t\t\t\t\t\t\t<div class="dojoxColorPickerHex" dojoAttachPoint="hexNode" aria-live="polite">\t\n\t\t\t\t\t\t\t\t\t\t<label for="${_uId}_hex">&nbsp;${hexLabel}&nbsp;</label><input id="${_uId}_hex" dojoAttachPoint="hexCode, focusNode, valueNode" size="6" class="dojoxColorPickerHexCode" dojoAttachEvent="onchange: _colorInputChange">\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</td>\n\t</tr>\n</table>\n\n',
-"dijit/form/DropDownButton":function(){define("dojo/_base/declare,dojo/_base/lang,dojo/query,../registry,../popup,./Button,../_Container,../_HasDropDown,dojo/text!./templates/DropDownButton.html".split(","),function(e,j,i,l,c,g,h,b,f){return e("dijit.form.DropDownButton",[g,h,b],{baseClass:"dijitDropDownButton",templateString:f,_fillContent:function(){if(this.srcNodeRef){var a=i("*",this.srcNodeRef);this.inherited(arguments,[a[0]]);this.dropDownContainer=this.srcNodeRef}},startup:function(){if(!this._started){if(!this.dropDown&&
-this.dropDownContainer){var a=i("[widgetId]",this.dropDownContainer)[0];this.dropDown=l.byNode(a);delete this.dropDownContainer}this.dropDown&&c.hide(this.dropDown);this.inherited(arguments)}},isLoaded:function(){var a=this.dropDown;return!!a&&(!a.href||a.isLoaded)},loadDropDown:function(a){var b=this.dropDown,c=b.on("load",j.hitch(this,function(){c.remove();a()}));b.refresh()},isFocusable:function(){return this.inherited(arguments)&&!this._mouseDown}})})},"url:dijit/form/templates/DropDownButton.html":'<span class="dijit dijitReset dijitInline"\n\t><span class=\'dijitReset dijitInline dijitButtonNode\'\n\t\tdata-dojo-attach-event="ondijitclick:_onClick" data-dojo-attach-point="_buttonNode"\n\t\t><span class="dijitReset dijitStretch dijitButtonContents"\n\t\t\tdata-dojo-attach-point="focusNode,titleNode,_arrowWrapperNode"\n\t\t\trole="button" aria-haspopup="true" aria-labelledby="${id}_label"\n\t\t\t><span class="dijitReset dijitInline dijitIcon"\n\t\t\t\tdata-dojo-attach-point="iconNode"\n\t\t\t></span\n\t\t\t><span class="dijitReset dijitInline dijitButtonText"\n\t\t\t\tdata-dojo-attach-point="containerNode,_popupStateNode"\n\t\t\t\tid="${id}_label"\n\t\t\t></span\n\t\t\t><span class="dijitReset dijitInline dijitArrowButtonInner"></span\n\t\t\t><span class="dijitReset dijitInline dijitArrowButtonChar">&#9660;</span\n\t\t></span\n\t></span\n\t><input ${!nameAttrSetting} type="${type}" value="${value}" class="dijitOffScreen" tabIndex="-1"\n\t\tdata-dojo-attach-point="valueNode"\n/></span>\n',
-"dijit/TooltipDialog":function(){define("dojo/_base/declare,dojo/dom-class,dojo/_base/event,dojo/keys,dojo/_base/lang,./focus,./layout/ContentPane,./_DialogMixin,./form/_FormMixin,./_TemplatedMixin,dojo/text!./templates/TooltipDialog.html,./main".split(","),function(e,j,i,l,c,g,h,b,f,a,k){return e("dijit.TooltipDialog",[h,a,f,b],{title:"",doLayout:!1,autofocus:!0,baseClass:"dijitTooltipDialog",_firstFocusItem:null,_lastFocusItem:null,templateString:k,_setTitleAttr:function(a){this.containerNode.title=
+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],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],whitesmoke:[245,245,245],yellowgreen:[154,205,50]});return h})},"url:dojox/widget/ColorPicker/ColorPicker.html":'<table class="dojoxColorPicker" dojoAttachEvent="onkeypress: _handleKey" cellpadding="0" cellspacing="0" role="presentation">\n\t<tr>\n\t\t<td valign="top" class="dojoxColorPickerRightPad">\n\t\t\t<div class="dojoxColorPickerBox">\n\t\t\t\t<\!-- Forcing ABS in style attr due to dojo DND issue with not picking it up form the class. --\>\n\t\t\t\t<img title="${saturationPickerTitle}" alt="${saturationPickerTitle}" class="dojoxColorPickerPoint" src="${_pickerPointer}" tabIndex="0" dojoAttachPoint="cursorNode" style="position: absolute; top: 0px; left: 0px;">\n\t\t\t\t<img role="presentation" alt="" dojoAttachPoint="colorUnderlay" dojoAttachEvent="onclick: _setPoint, onmousedown: _stopDrag" class="dojoxColorPickerUnderlay" src="${_underlay}" ondragstart="return false">\n\t\t\t</div>\n\t\t</td>\n\t\t<td valign="top" class="dojoxColorPickerRightPad">\n\t\t\t<div class="dojoxHuePicker">\n\t\t\t\t<\!-- Forcing ABS in style attr due to dojo DND issue with not picking it up form the class. --\>\n\t\t\t\t<img dojoAttachPoint="hueCursorNode" tabIndex="0" class="dojoxHuePickerPoint" title="${huePickerTitle}" alt="${huePickerTitle}" src="${_huePickerPointer}" style="position: absolute; top: 0px; left: 0px;">\n\t\t\t\t<div class="dojoxHuePickerUnderlay" dojoAttachPoint="hueNode">\n\t\t\t\t <img role="presentation" alt="" dojoAttachEvent="onclick: _setHuePoint, onmousedown: _stopDrag" src="${_hueUnderlay}">\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</td>\n\t\t<td valign="top">\n\t\t\t<table cellpadding="0" cellspacing="0" role="presentation">\n\t\t\t\t<tr>\n\t\t\t\t\t<td valign="top" class="dojoxColorPickerPreviewContainer">\n\t\t\t\t\t\t<table cellpadding="0" cellspacing="0" role="presentation">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td valign="top" class="dojoxColorPickerRightPad">\n\t\t\t\t\t\t\t\t\t<div dojoAttachPoint="previewNode" class="dojoxColorPickerPreview"></div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<td valign="top">\n\t\t\t\t\t\t\t\t\t<div dojoAttachPoint="safePreviewNode" class="dojoxColorPickerWebSafePreview"></div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td valign="bottom">\n\t\t\t\t\t\t<table class="dojoxColorPickerOptional" cellpadding="0" cellspacing="0" role="presentation">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<div class="dijitInline dojoxColorPickerRgb" dojoAttachPoint="rgbNode">\n\t\t\t\t\t\t\t\t\t\t<table cellpadding="1" cellspacing="1" role="presentation">\n\t\t\t\t\t\t\t\t\t\t<tr><td><label for="${_uId}_r">${redLabel}</label></td><td><input id="${_uId}_r" dojoAttachPoint="Rval" size="1" dojoAttachEvent="onchange: _colorInputChange"></td></tr>\n\t\t\t\t\t\t\t\t\t\t<tr><td><label for="${_uId}_g">${greenLabel}</label></td><td><input id="${_uId}_g" dojoAttachPoint="Gval" size="1" dojoAttachEvent="onchange: _colorInputChange"></td></tr>\n\t\t\t\t\t\t\t\t\t\t<tr><td><label for="${_uId}_b">${blueLabel}</label></td><td><input id="${_uId}_b" dojoAttachPoint="Bval" size="1" dojoAttachEvent="onchange: _colorInputChange"></td></tr>\n\t\t\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<div class="dijitInline dojoxColorPickerHsv" dojoAttachPoint="hsvNode">\n\t\t\t\t\t\t\t\t\t\t<table cellpadding="1" cellspacing="1" role="presentation">\n\t\t\t\t\t\t\t\t\t\t<tr><td><label for="${_uId}_h">${hueLabel}</label></td><td><input id="${_uId}_h" dojoAttachPoint="Hval"size="1" dojoAttachEvent="onchange: _colorInputChange"> ${degLabel}</td></tr>\n\t\t\t\t\t\t\t\t\t\t<tr><td><label for="${_uId}_s">${saturationLabel}</label></td><td><input id="${_uId}_s" dojoAttachPoint="Sval" size="1" dojoAttachEvent="onchange: _colorInputChange"> ${percentSign}</td></tr>\n\t\t\t\t\t\t\t\t\t\t<tr><td><label for="${_uId}_v">${valueLabel}</label></td><td><input id="${_uId}_v" dojoAttachPoint="Vval" size="1" dojoAttachEvent="onchange: _colorInputChange"> ${percentSign}</td></tr>\n\t\t\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td colspan="2">\n\t\t\t\t\t\t\t\t\t<div class="dojoxColorPickerHex" dojoAttachPoint="hexNode" aria-live="polite">\t\n\t\t\t\t\t\t\t\t\t\t<label for="${_uId}_hex">&nbsp;${hexLabel}&nbsp;</label><input id="${_uId}_hex" dojoAttachPoint="hexCode, focusNode, valueNode" size="6" class="dojoxColorPickerHexCode" dojoAttachEvent="onchange: _colorInputChange">\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</td>\n\t</tr>\n</table>\n\n',
+"dijit/form/DropDownButton":function(){define("dojo/_base/declare,dojo/_base/lang,dojo/query,../registry,../popup,./Button,../_Container,../_HasDropDown,dojo/text!./templates/DropDownButton.html".split(","),function(f,k,h,j,e,c,i,b,g){return f("dijit.form.DropDownButton",[c,i,b],{baseClass:"dijitDropDownButton",templateString:g,_fillContent:function(){if(this.srcNodeRef){var a=h("*",this.srcNodeRef);this.inherited(arguments,[a[0]]);this.dropDownContainer=this.srcNodeRef}},startup:function(){if(!this._started){if(!this.dropDown&&
+this.dropDownContainer){var a=h("[widgetId]",this.dropDownContainer)[0];this.dropDown=j.byNode(a);delete this.dropDownContainer}this.dropDown&&e.hide(this.dropDown);this.inherited(arguments)}},isLoaded:function(){var a=this.dropDown;return!!a&&(!a.href||a.isLoaded)},loadDropDown:function(a){var b=this.dropDown,c=b.on("load",k.hitch(this,function(){c.remove();a()}));b.refresh()},isFocusable:function(){return this.inherited(arguments)&&!this._mouseDown}})})},"url:dijit/form/templates/DropDownButton.html":'<span class="dijit dijitReset dijitInline"\n\t><span class=\'dijitReset dijitInline dijitButtonNode\'\n\t\tdata-dojo-attach-event="ondijitclick:_onClick" data-dojo-attach-point="_buttonNode"\n\t\t><span class="dijitReset dijitStretch dijitButtonContents"\n\t\t\tdata-dojo-attach-point="focusNode,titleNode,_arrowWrapperNode"\n\t\t\trole="button" aria-haspopup="true" aria-labelledby="${id}_label"\n\t\t\t><span class="dijitReset dijitInline dijitIcon"\n\t\t\t\tdata-dojo-attach-point="iconNode"\n\t\t\t></span\n\t\t\t><span class="dijitReset dijitInline dijitButtonText"\n\t\t\t\tdata-dojo-attach-point="containerNode,_popupStateNode"\n\t\t\t\tid="${id}_label"\n\t\t\t></span\n\t\t\t><span class="dijitReset dijitInline dijitArrowButtonInner"></span\n\t\t\t><span class="dijitReset dijitInline dijitArrowButtonChar">&#9660;</span\n\t\t></span\n\t></span\n\t><input ${!nameAttrSetting} type="${type}" value="${value}" class="dijitOffScreen" tabIndex="-1"\n\t\tdata-dojo-attach-point="valueNode"\n/></span>\n',
+"dijit/TooltipDialog":function(){define("dojo/_base/declare,dojo/dom-class,dojo/_base/event,dojo/keys,dojo/_base/lang,./focus,./layout/ContentPane,./_DialogMixin,./form/_FormMixin,./_TemplatedMixin,dojo/text!./templates/TooltipDialog.html,./main".split(","),function(f,k,h,j,e,c,i,b,g,a,l){return f("dijit.TooltipDialog",[i,a,g,b],{title:"",doLayout:!1,autofocus:!0,baseClass:"dijitTooltipDialog",_firstFocusItem:null,_lastFocusItem:null,templateString:l,_setTitleAttr:function(a){this.containerNode.title=
a;this._set("title",a)},postCreate:function(){this.inherited(arguments);this.connect(this.containerNode,"onkeypress","_onKey")},orient:function(a,b,c){a={"MR-ML":"dijitTooltipRight","ML-MR":"dijitTooltipLeft","TM-BM":"dijitTooltipAbove","BM-TM":"dijitTooltipBelow","BL-TL":"dijitTooltipBelow dijitTooltipABLeft","TL-BL":"dijitTooltipAbove dijitTooltipABLeft","BR-TR":"dijitTooltipBelow dijitTooltipABRight","TR-BR":"dijitTooltipAbove dijitTooltipABRight","BR-BL":"dijitTooltipRight","BL-BR":"dijitTooltipLeft"}[b+
-"-"+c];j.replace(this.domNode,a,this._currentOrientClass||"");this._currentOrientClass=a},focus:function(){this._getFocusItems(this.containerNode);g.focus(this._firstFocusItem)},onOpen:function(a){this.orient(this.domNode,a.aroundCorner,a.corner);var b=a.aroundNodePos;if("M"==a.corner.charAt(0)&&"M"==a.aroundCorner.charAt(0))this.connectorNode.style.top=b.y+(b.h-this.connectorNode.offsetHeight>>1)-a.y+"px",this.connectorNode.style.left="";else if("M"==a.corner.charAt(1)&&"M"==a.aroundCorner.charAt(1))this.connectorNode.style.left=
-b.x+(b.w-this.connectorNode.offsetWidth>>1)-a.x+"px";this._onShow()},onClose:function(){this.onHide()},_onKey:function(a){var b=a.target;a.charOrCode===l.TAB&&this._getFocusItems(this.containerNode);var c=this._firstFocusItem==this._lastFocusItem;a.charOrCode==l.ESCAPE?(this.defer("onCancel"),i.stop(a)):b==this._firstFocusItem&&a.shiftKey&&a.charOrCode===l.TAB?(c||g.focus(this._lastFocusItem),i.stop(a)):b==this._lastFocusItem&&a.charOrCode===l.TAB&&!a.shiftKey?(c||g.focus(this._firstFocusItem),i.stop(a)):
-a.charOrCode===l.TAB&&a.stopPropagation()}})})},"url:dijit/templates/TooltipDialog.html":'<div role="presentation" tabIndex="-1">\n\t<div class="dijitTooltipContainer" role="presentation">\n\t\t<div class ="dijitTooltipContents dijitTooltipFocusNode" data-dojo-attach-point="containerNode" role="dialog"></div>\n\t</div>\n\t<div class="dijitTooltipConnector" role="presentation" data-dojo-attach-point="connectorNode"></div>\n</div>\n',"*now":function(e){e(['dojo/i18n!*preload*dojo/nls/dojo*["ar","ca","cs","da","de","el","en-gb","en-us","es-es","fi-fi","fr-fr","he-il","hu","it-it","ja-jp","ko-kr","nl-nl","nb","pl","pt-br","pt-pt","ru","sk","sl","sv","th","tr","zh-tw","zh-cn","ROOT"]'])}}});
-// START OF dojobundle.js
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/_editor/nls/FontChoice.js] */
-//>>built
+"-"+c];k.replace(this.domNode,a,this._currentOrientClass||"");this._currentOrientClass=a},focus:function(){this._getFocusItems(this.containerNode);c.focus(this._firstFocusItem)},onOpen:function(a){this.orient(this.domNode,a.aroundCorner,a.corner);var b=a.aroundNodePos;if("M"==a.corner.charAt(0)&&"M"==a.aroundCorner.charAt(0))this.connectorNode.style.top=b.y+(b.h-this.connectorNode.offsetHeight>>1)-a.y+"px",this.connectorNode.style.left="";else if("M"==a.corner.charAt(1)&&"M"==a.aroundCorner.charAt(1))this.connectorNode.style.left=
+b.x+(b.w-this.connectorNode.offsetWidth>>1)-a.x+"px";this._onShow()},onClose:function(){this.onHide()},_onKey:function(a){var b=a.target;a.charOrCode===j.TAB&&this._getFocusItems(this.containerNode);var e=this._firstFocusItem==this._lastFocusItem;a.charOrCode==j.ESCAPE?(this.defer("onCancel"),h.stop(a)):b==this._firstFocusItem&&a.shiftKey&&a.charOrCode===j.TAB?(e||c.focus(this._lastFocusItem),h.stop(a)):b==this._lastFocusItem&&a.charOrCode===j.TAB&&!a.shiftKey?(e||c.focus(this._firstFocusItem),h.stop(a)):
+a.charOrCode===j.TAB&&a.stopPropagation()}})})},"url:dijit/templates/TooltipDialog.html":'<div role="presentation" tabIndex="-1">\n\t<div class="dijitTooltipContainer" role="presentation">\n\t\t<div class ="dijitTooltipContents dijitTooltipFocusNode" data-dojo-attach-point="containerNode" role="dialog"></div>\n\t</div>\n\t<div class="dijitTooltipConnector" role="presentation" data-dojo-attach-point="connectorNode"></div>\n</div>\n',"*now":function(f){f(['dojo/i18n!*preload*dojo/nls/dojo*["ar","ca","cs","da","de","el","en-gb","en-us","es-es","fi-fi","fr-fr","he-il","hu","it-it","ja-jp","ko-kr","nl-nl","nb","pl","pt-br","pt-pt","ru","sk","sl","sv","th","tr","zh-tw","zh-cn","ROOT"]'])}}});//>>built
define("dijit/_editor/nls/FontChoice",{root:{fontSize:"Size",fontName:"Font",formatBlock:"Format",serif:"serif","sans-serif":"sans-serif",monospace:"monospace",cursive:"cursive",fantasy:"fantasy",noFormat:"None",p:"Paragraph",h1:"Heading",h2:"Subheading",h3:"Sub-subheading",pre:"Pre-formatted",1:"xx-small",2:"x-small",3:"small",4:"medium",5:"large",6:"x-large",7:"xx-large"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,
-hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/_editor/nls/FontChoice.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/_editor/nls/LinkDialog.js] */
-//>>built
-define("dijit/_editor/nls/LinkDialog",{root:{createLinkTitle:"Link Properties",insertImageTitle:"Image Properties",url:"URL:",text:"Description:",target:"Target:",set:"Set",currentWindow:"Current Window",parentWindow:"Parent Window",topWindow:"Topmost Window",newWindow:"New Window"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/_editor/nls/LinkDialog.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/_editor/nls/commands.js] */
-//>>built
+hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});//>>built
+define("dijit/_editor/nls/LinkDialog",{root:{createLinkTitle:"Link Properties",insertImageTitle:"Image Properties",url:"URL:",text:"Description:",target:"Target:",set:"Set",currentWindow:"Current Window",parentWindow:"Parent Window",topWindow:"Topmost Window",newWindow:"New Window"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});//>>built
define("dijit/_editor/nls/commands",{root:{bold:"Bold",copy:"Copy",cut:"Cut","delete":"Delete",indent:"Indent",insertHorizontalRule:"Horizontal Rule",insertOrderedList:"Numbered List",insertUnorderedList:"Bullet List",italic:"Italic",justifyCenter:"Align Center",justifyFull:"Justify",justifyLeft:"Align Left",justifyRight:"Align Right",outdent:"Outdent",paste:"Paste",redo:"Redo",removeFormat:"Remove Format",selectAll:"Select All",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript",
underline:"Underline",undo:"Undo",unlink:"Remove Link",createLink:"Create Link",toggleDir:"Toggle Direction",insertImage:"Insert Image",insertTable:"Insert/Edit Table",toggleTableBorder:"Toggle Table Border",deleteTable:"Delete Table",tableProp:"Table Property",htmlToggle:"HTML Source",foreColor:"Foreground Color",hiliteColor:"Background Color",plainFormatBlock:"Paragraph Style",formatBlock:"Paragraph Style",fontSize:"Font Size",fontName:"Font Name",tabIndent:"Tab Indent",fullScreen:"Toggle Full Screen",
-viewSource:"View HTML Source",print:"Print",newPage:"New Page",systemShortcut:'The "${0}" action is only available in your browser using a keyboard shortcut. Use ${1}.',ctrlKey:"ctrl+${0}",appleKey:"\u2318${0}"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/_editor/nls/commands.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/_editor/nls/de/FontChoice.js] */
-//>>built
-define("dijit/_editor/nls/de/FontChoice",{fontSize:"Gr\u00f6\u00dfe",fontName:"Schriftart",formatBlock:"Format",serif:"Serife","sans-serif":"Serifenlos",monospace:"Monospaceschrift",cursive:"Kursiv",fantasy:"Fantasie",noFormat:"Keine Angabe",p:"Absatz",h1:"\u00dcberschrift",h2:"Unter\u00fcberschrift",h3:"Unterunter\u00fcberschrift",pre:"Vorformatiert",1:"XXS",2:"XS",3:"S",4:"M",5:"L",6:"XL",7:"XXL"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/_editor/nls/de/FontChoice.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/_editor/nls/de/LinkDialog.js] */
-//>>built
-define("dijit/_editor/nls/de/LinkDialog",{createLinkTitle:"Linkeigenschaften",insertImageTitle:"Grafikeigenschaften",url:"URL:",text:"Beschreibung:",target:"Ziel:",set:"Festlegen",currentWindow:"Aktuelles Fenster",parentWindow:"\u00dcbergeordnetes Fenster",topWindow:"Aktives Fenster",newWindow:"Neues Fenster"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/_editor/nls/de/LinkDialog.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/_editor/nls/de/commands.js] */
-//>>built
+viewSource:"View HTML Source",print:"Print",newPage:"New Page",systemShortcut:'The "${0}" action is only available in your browser using a keyboard shortcut. Use ${1}.',ctrlKey:"ctrl+${0}",appleKey:"\u2318${0}"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});//>>built
+define("dijit/_editor/nls/de/FontChoice",{fontSize:"Gr\u00f6\u00dfe",fontName:"Schriftart",formatBlock:"Format",serif:"Serife","sans-serif":"Serifenlos",monospace:"Monospaceschrift",cursive:"Kursiv",fantasy:"Fantasie",noFormat:"Keine Angabe",p:"Absatz",h1:"\u00dcberschrift",h2:"Unter\u00fcberschrift",h3:"Unterunter\u00fcberschrift",pre:"Vorformatiert",1:"XXS",2:"XS",3:"S",4:"M",5:"L",6:"XL",7:"XXL"});//>>built
+define("dijit/_editor/nls/de/LinkDialog",{createLinkTitle:"Linkeigenschaften",insertImageTitle:"Grafikeigenschaften",url:"URL:",text:"Beschreibung:",target:"Ziel:",set:"Festlegen",currentWindow:"Aktuelles Fenster",parentWindow:"\u00dcbergeordnetes Fenster",topWindow:"Aktives Fenster",newWindow:"Neues Fenster"});//>>built
define("dijit/_editor/nls/de/commands",{bold:"Fett",copy:"Kopieren",cut:"Ausschneiden","delete":"L\u00f6schen",indent:"Einr\u00fccken",insertHorizontalRule:"Horizontaler Strich",insertOrderedList:"Nummerierung",insertUnorderedList:"Aufz\u00e4hlungszeichen",italic:"Kursiv",justifyCenter:"Zentriert",justifyFull:"Blocksatz",justifyLeft:"Linksb\u00fcndig",justifyRight:"Rechtsb\u00fcndig",outdent:"Ausr\u00fccken",paste:"Einf\u00fcgen",redo:"Wiederholen",removeFormat:"Formatierung entfernen",selectAll:"Alles ausw\u00e4hlen",
strikethrough:"Durchgestrichen",subscript:"Tiefgestellt",superscript:"Hochgestellt",underline:"Unterstrichen",undo:"R\u00fcckg\u00e4ngig",unlink:"Link entfernen",createLink:"Link erstellen",toggleDir:"Richtung wechseln",insertImage:"Grafik einf\u00fcgen",insertTable:"Tabelle einf\u00fcgen/bearbeiten",toggleTableBorder:"Tabellenumrandung ein-/ausschalten",deleteTable:"Tabelle l\u00f6schen",tableProp:"Tabelleneigenschaft",htmlToggle:"HTML-Quelltext",foreColor:"Vordergrundfarbe",hiliteColor:"Hintergrundfarbe",
-plainFormatBlock:"Absatzstil",formatBlock:"Absatzstil",fontSize:"Schriftgr\u00f6\u00dfe",fontName:"Schriftartname",tabIndent:"Registerkarteneinr\u00fcckung",fullScreen:"Gesamtanzeige",viewSource:"HTML-Quelle",print:"Drucken",newPage:"Neue Seite",systemShortcut:'Die Aktion "${0}" ist im Browser nur \u00fcber einen Tastaturkurzbefehl verf\u00fcgbar. Verwenden Sie ${1}.',ctrlKey:"Strg+${0}",appleKey:"\u2318${0}"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/_editor/nls/de/commands.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/_editor/nls/ru/FontChoice.js] */
-//>>built
-define("dijit/_editor/nls/ru/FontChoice",{fontSize:"\u0420\u0430\u0437\u043c\u0435\u0440",fontName:"\u0428\u0440\u0438\u0444\u0442",formatBlock:"\u0424\u043e\u0440\u043c\u0430\u0442",serif:"\u0441 \u0437\u0430\u0441\u0435\u0447\u043a\u0430\u043c\u0438","sans-serif":"\u0431\u0435\u0437 \u0437\u0430\u0441\u0435\u0447\u0435\u043a",monospace:"\u043d\u0435\u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439",cursive:"\u043a\u0443\u0440\u0441\u0438\u0432",fantasy:"\u0430\u0440\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439",
-noFormat:"\u041d\u0435\u0442",p:"\u0410\u0431\u0437\u0430\u0446",h1:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",h2:"\u041f\u043e\u0434\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",h3:"\u0412\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",pre:"\u0417\u0430\u0440\u0430\u043d\u0435\u0435 \u043e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439",1:"\u0441\u0430\u043c\u044b\u0439 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439",
-2:"\u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439",3:"\u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439",4:"\u0441\u0440\u0435\u0434\u043d\u0438\u0439",5:"\u0431\u043e\u043b\u044c\u0448\u043e\u0439",6:"\u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0439",7:"\u0441\u0430\u043c\u044b\u0439 \u0431\u043e\u043b\u044c\u0448\u043e\u0439"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/_editor/nls/ru/FontChoice.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/_editor/nls/ru/LinkDialog.js] */
-//>>built
-define("dijit/_editor/nls/ru/LinkDialog",{createLinkTitle:"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u0441\u044b\u043b\u043a\u0438",insertImageTitle:"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",url:"URL:",text:"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435:",target:"\u0426\u0435\u043b\u0435\u0432\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442:",set:"\u0417\u0430\u0434\u0430\u0442\u044c",currentWindow:"\u0422\u0435\u043a\u0443\u0449\u0435\u0435 \u043e\u043a\u043d\u043e",
-parentWindow:"\u0420\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u043e\u043a\u043d\u043e",topWindow:"\u0412\u0435\u0440\u0445\u043d\u0435\u0435 \u043e\u043a\u043d\u043e",newWindow:"\u041d\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/_editor/nls/ru/LinkDialog.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/_editor/nls/ru/commands.js] */
-//>>built
-define("dijit/_editor/nls/ru/commands",{bold:"\u041f\u043e\u043b\u0443\u0436\u0438\u0440\u043d\u044b\u0439",copy:"\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c",cut:"\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c","delete":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c",indent:"\u041e\u0442\u0441\u0442\u0443\u043f",insertHorizontalRule:"\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043b\u0438\u043d\u0435\u0439\u043a\u0430",insertOrderedList:"\u041d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a",
-insertUnorderedList:"\u0421\u043f\u0438\u0441\u043e\u043a \u0441 \u043c\u0430\u0440\u043a\u0435\u0440\u0430\u043c\u0438",italic:"\u041a\u0443\u0440\u0441\u0438\u0432",justifyCenter:"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",justifyFull:"\u041f\u043e \u0448\u0438\u0440\u0438\u043d\u0435",justifyLeft:"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",justifyRight:"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",outdent:"\u0412\u0442\u044f\u0436\u043a\u0430",
-paste:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c",redo:"\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c",removeFormat:"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442",selectAll:"\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435",strikethrough:"\u041f\u0435\u0440\u0435\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435",subscript:"\u041d\u0438\u0436\u043d\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441",superscript:"\u0412\u0435\u0440\u0445\u043d\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441",
-underline:"\u041f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435",undo:"\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c",unlink:"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443",createLink:"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443",toggleDir:"\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435",insertImage:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
-insertTable:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c/\u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443",toggleTableBorder:"\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0430\u043c\u043a\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u044b",deleteTable:"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443",tableProp:"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b",
-htmlToggle:"\u041a\u043e\u0434 HTML",foreColor:"\u0426\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430",hiliteColor:"\u0426\u0432\u0435\u0442 \u0444\u043e\u043d\u0430",plainFormatBlock:"\u0421\u0442\u0438\u043b\u044c \u0430\u0431\u0437\u0430\u0446\u0430",formatBlock:"\u0421\u0442\u0438\u043b\u044c \u0430\u0431\u0437\u0430\u0446\u0430",fontSize:"\u0420\u0430\u0437\u043c\u0435\u0440 \u0448\u0440\u0438\u0444\u0442\u0430",fontName:"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0448\u0440\u0438\u0444\u0442\u0430",
-tabIndent:"\u0422\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u044f",fullScreen:"\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c",viewSource:"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 HTML",print:"\u041f\u0435\u0447\u0430\u0442\u044c",newPage:"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443",
-systemShortcut:'\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 "${0}" \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0443\u0442\u0435\u043c \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448 ${1}.',ctrlKey:"ctrl+${0}",appleKey:"\u2318${0}"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/_editor/nls/ru/commands.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/form/nls/ComboBox.js] */
-//>>built
-define("dijit/form/nls/ComboBox",{root:{previousMessage:"Previous choices",nextMessage:"More choices"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/form/nls/ComboBox.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/form/nls/Textarea.js] */
-//>>built
-define("dijit/form/nls/Textarea",{root:{iframeEditTitle:"edit area",iframeFocusTitle:"edit area frame"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/form/nls/Textarea.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/form/nls/de/ComboBox.js] */
-//>>built
-define("dijit/form/nls/de/ComboBox",{previousMessage:"Vorherige Auswahl",nextMessage:"Weitere Auswahlm\u00f6glichkeiten"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/form/nls/de/ComboBox.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/form/nls/de/Textarea.js] */
-//>>built
-define("dijit/form/nls/de/Textarea",{iframeEditTitle:"Editierbereich",iframeFocusTitle:"Rahmen f\u00fcr Editierbereich"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/form/nls/de/Textarea.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/form/nls/de/validate.js] */
-//>>built
-define("dijit/form/nls/de/validate",{invalidMessage:"Der eingegebene Wert ist ung\u00fcltig. ",missingMessage:"Dieser Wert ist erforderlich.",rangeMessage:"Dieser Wert liegt au\u00dferhalb des g\u00fcltigen Bereichs. "});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/form/nls/de/validate.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/form/nls/ru/ComboBox.js] */
-//>>built
-define("dijit/form/nls/ru/ComboBox",{previousMessage:"\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b",nextMessage:"\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/form/nls/ru/ComboBox.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/form/nls/ru/Textarea.js] */
-//>>built
-define("dijit/form/nls/ru/Textarea",{iframeEditTitle:"\u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f",iframeFocusTitle:"\u0444\u0440\u0435\u0439\u043c \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/form/nls/ru/Textarea.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/form/nls/ru/validate.js] */
-//>>built
-define("dijit/form/nls/ru/validate",{invalidMessage:"\u0423\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.",missingMessage:"\u042d\u0442\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.",rangeMessage:"\u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u043d\u0435 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430."});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/form/nls/ru/validate.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/form/nls/validate.js] */
-//>>built
-define("dijit/form/nls/validate",{root:{invalidMessage:"The value entered is not valid.",missingMessage:"This value is required.",rangeMessage:"This value is out of range."},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/form/nls/validate.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/nls/common.js] */
-//>>built
-define("dijit/nls/common",{root:{buttonOk:"OK",buttonCancel:"Cancel",buttonSave:"Save",itemClose:"Close"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/nls/common.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/nls/de/common.js] */
-//>>built
-define("dijit/nls/de/common",{buttonOk:"OK",buttonCancel:"Abbrechen",buttonSave:"Speichern",itemClose:"Schlie\u00dfen"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/nls/de/common.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/nls/de/loading.js] */
-//>>built
-define("dijit/nls/de/loading",{loadingState:"Wird geladen...",errorState:"Es ist ein Fehler aufgetreten."});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/nls/de/loading.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/nls/loading.js] */
-//>>built
-define("dijit/nls/loading",{root:{loadingState:"Loading...",errorState:"Sorry, an error occurred"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/nls/loading.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/nls/ru/common.js] */
-//>>built
-define("dijit/nls/ru/common",{buttonOk:"OK",buttonCancel:"\u041e\u0442\u043c\u0435\u043d\u0430",buttonSave:"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c",itemClose:"\u0417\u0430\u043a\u0440\u044b\u0442\u044c"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/nls/ru/common.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/nls/ru/loading.js] */
-//>>built
-define("dijit/nls/ru/loading",{loadingState:"\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430...",errorState:"\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dijit/nls/ru/loading.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/buddhist.js] */
-//>>built
+plainFormatBlock:"Absatzstil",formatBlock:"Absatzstil",fontSize:"Schriftgr\u00f6\u00dfe",fontName:"Schriftartname",tabIndent:"Registerkarteneinr\u00fcckung",fullScreen:"Gesamtanzeige",viewSource:"HTML-Quelle",print:"Drucken",newPage:"Neue Seite",systemShortcut:'Die Aktion "${0}" ist im Browser nur \u00fcber einen Tastaturkurzbefehl verf\u00fcgbar. Verwenden Sie ${1}.',ctrlKey:"Strg+${0}",appleKey:"\u2318${0}"});//>>built
+define("dijit/_editor/nls/fr/FontChoice",{fontSize:"Taille",fontName:"Police",formatBlock:"Mise en forme",serif:"serif","sans-serif":"sans serif",monospace:"espacement fixe",cursive:"cursive",fantasy:"fantaisie",noFormat:"N\u00e9ant",p:"Paragraphe",h1:"En-t\u00eate",h2:"Sous-en-t\u00eate",h3:"Sous-sous-en-t\u00eate",pre:"Pr\u00e9-mise en forme",1:"tr\u00e8s tr\u00e8s petite",2:"tr\u00e8s petite",3:"petite",4:"moyenne",5:"grande",6:"tr\u00e8s grande",7:"tr\u00e8s tr\u00e8s grande"});//>>built
+define("dijit/_editor/nls/fr/LinkDialog",{createLinkTitle:"Propri\u00e9t\u00e9s du lien",insertImageTitle:"Propri\u00e9t\u00e9s de l'image",url:"URL :",text:"Description :",target:"Cible :",set:"D\u00e9finir",currentWindow:"Fen\u00eatre actuelle",parentWindow:"Fen\u00eatre parent",topWindow:"Fen\u00eatre sup\u00e9rieure",newWindow:"Nouvelle fen\u00eatre"});//>>built
+define("dijit/_editor/nls/fr/commands",{bold:"Gras",copy:"Copier",cut:"Couper","delete":"Supprimer",indent:"Retrait",insertHorizontalRule:"R\u00e8gle horizontale",insertOrderedList:"Liste num\u00e9rot\u00e9e",insertUnorderedList:"Liste \u00e0 puces",italic:"Italique",justifyCenter:"Aligner au centre",justifyFull:"Justifier",justifyLeft:"Aligner \u00e0 gauche",justifyRight:"Aligner \u00e0 droite",outdent:"Retrait n\u00e9gatif",paste:"Coller",redo:"R\u00e9tablir",removeFormat:"Supprimer la mise en forme",
+selectAll:"S\u00e9lectionner tout",strikethrough:"Barrer",subscript:"Indice",superscript:"Exposant",underline:"Souligner",undo:"Annuler",unlink:"Supprimer le lien",createLink:"Cr\u00e9er un lien",toggleDir:"Changer de sens",insertImage:"Ins\u00e9rer une image",insertTable:"Ins\u00e9rer/Modifier un tableau",toggleTableBorder:"Afficher/Masquer la bordure du tableau",deleteTable:"Supprimer le tableau",tableProp:"Propri\u00e9t\u00e9 du tableau",htmlToggle:"Source HTML",foreColor:"Couleur d'avant-plan",
+hiliteColor:"Couleur d'arri\u00e8re-plan",plainFormatBlock:"Style de paragraphe",formatBlock:"Style de paragraphe",fontSize:"Taille de police",fontName:"Nom de police",tabIndent:"Retrait de tabulation",fullScreen:"Basculer en plein \u00e9cran",viewSource:"Afficher la source HTML",print:"Imprimer",newPage:"Nouvelle page",systemShortcut:"L'action \"${0}\" est disponible dans votre navigateur uniquement, par le biais d'un raccourci-clavier. Utilisez ${1}.",ctrlKey:"ctrl+${0}",appleKey:"\u2318${0}"});//>>built
+define("dijit/_editor/nls/it/FontChoice",{fontSize:"Dimensione",fontName:"Carattere",formatBlock:"Formato",serif:"serif","sans-serif":"sans-serif",monospace:"spaziatura fissa",cursive:"corsivo",fantasy:"fantasy",noFormat:"Nessuna",p:"Paragrafo",h1:"Intestazione",h2:"Sottointestazione",h3:"Sottointestazione secondaria",pre:"Preformattato",1:"piccolissimo",2:"molto piccolo",3:"piccolo",4:"medio",5:"grande",6:"molto grande",7:"grandissimo"});//>>built
+define("dijit/_editor/nls/it/LinkDialog",{createLinkTitle:"Propriet\u00e0 collegamento",insertImageTitle:"Propriet\u00e0 immagine",url:"URL:",text:"Descrizione:",target:"Destinazione:",set:"Imposta",currentWindow:"Finestra corrente",parentWindow:"Finestra padre",topWindow:"Finestra superiore",newWindow:"Nuova finestra"});//>>built
+define("dijit/_editor/nls/it/commands",{bold:"Grassetto",copy:"Copia",cut:"Taglia","delete":"Annulla",indent:"Rientra",insertHorizontalRule:"Righello orizzontale",insertOrderedList:"Elenco numerato",insertUnorderedList:"Elenco a punti",italic:"Corsivo",justifyCenter:"Allinea al centro",justifyFull:"Giustifica",justifyLeft:"Allinea a sinistra",justifyRight:"Allinea a destra",outdent:"Annulla rientro",paste:"Incolla",redo:"Ripeti",removeFormat:"Rimuovi formato",selectAll:"Seleziona tutto",strikethrough:"Barrato",
+subscript:"Pedice",superscript:"Apice",underline:"Sottolinea",undo:"Annulla",unlink:"Rimuovi collegamento",createLink:"Crea collegamento",toggleDir:"Attiva/Disattiva direzione",insertImage:"Inserisci immagine",insertTable:"Inserisci/Modifica tabella",toggleTableBorder:"Attiva/Disattiva bordo tabella",deleteTable:"Elimina tabella",tableProp:"Propriet\u00e0 tabella",htmlToggle:"Origine HTML",foreColor:"Colore in primo piano",hiliteColor:"Colore di sfondo",plainFormatBlock:"Stile paragrafo",formatBlock:"Stile paragrafo",
+fontSize:"Dimensione tipo di carattere",fontName:"Nome tipo di carattere",tabIndent:"Rientro tabulazione",fullScreen:"Attiva/Disattiva schermo intero",viewSource:"Visualizza origine HTML",print:"Stampa",newPage:"Nuova pagina",systemShortcut:'Azione "${0}" disponibile nel browser solo utilizzando una scelta rapida da tastiera. Utilizzare ${1}.',ctrlKey:"ctrl+${0}",appleKey:"\u2318${0}"});//>>built
+define("dijit/_editor/nls/nl/FontChoice",{fontSize:"Grootte",fontName:"Lettertype",formatBlock:"Opmaak",serif:"serif","sans-serif":"sans-serif",monospace:"monospace",cursive:"cursief",fantasy:"fantasy",noFormat:"Geen",p:"Alinea",h1:"Kop",h2:"Subkop",h3:"Sub-subkop",pre:"Vooraf opgemaakt",1:"xx-klein",2:"x-klein",3:"klein",4:"gemiddeld",5:"groot",6:"x-groot",7:"xx-groot"});//>>built
+define("dijit/_editor/nls/nl/LinkDialog",{createLinkTitle:"Linkeigenschappen",insertImageTitle:"Afbeeldingseigenschappen",url:"URL:",text:"Beschrijving:",target:"Doel:",set:"Instellen",currentWindow:"Huidig venster",parentWindow:"Hoofdvenster",topWindow:"Bovenste venster",newWindow:"Nieuw venster"});//>>built
+define("dijit/_editor/nls/nl/commands",{bold:"Vet",copy:"Kopi\u00ebren",cut:"Knippen","delete":"Wissen",indent:"Inspringen",insertHorizontalRule:"Horizontale liniaal",insertOrderedList:"Genummerde lijst",insertUnorderedList:"Lijst met opsommingstekens",italic:"Cursief",justifyCenter:"Centreren",justifyFull:"Uitvullen",justifyLeft:"Links uitlijnen",justifyRight:"Rechts uitlijnen",outdent:"Uitspringen",paste:"Plakken",redo:"Opnieuw",removeFormat:"Opmaak verwijderen",selectAll:"Alles selecteren",strikethrough:"Doorhalen",
+subscript:"Subscript",superscript:"Superscript",underline:"Onderstrepen",undo:"Ongedaan maken",unlink:"Link verwijderen",createLink:"Link maken",toggleDir:"Schrijfrichting wijzigen",insertImage:"Afbeelding invoegen",insertTable:"Tabel invoegen/bewerken",toggleTableBorder:"Tabelkader wijzigen",deleteTable:"Tabel wissen",tableProp:"Tabeleigenschap",htmlToggle:"HTML-bron",foreColor:"Voorgrondkleur",hiliteColor:"Achtergrondkleur",plainFormatBlock:"Alineastijl",formatBlock:"Alineastijl",fontSize:"Lettergrootte",
+fontName:"Lettertype",tabIndent:"Inspringen",fullScreen:"Volledig scherm in-/uitschakelen",viewSource:"HTML-bron bekijken",print:"Afdrukken",newPage:"Nieuwe pagina",systemShortcut:'De actie "${0}" is alleen beschikbaar in uw browser via een sneltoetscombinatie. Gebruik ${1}.',ctrlKey:"ctrl+${0}",appleKey:"\u2318${0}"});//>>built
+define("dijit/form/nls/ComboBox",{root:{previousMessage:"Previous choices",nextMessage:"More choices"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});//>>built
+define("dijit/form/nls/Textarea",{root:{iframeEditTitle:"edit area",iframeFocusTitle:"edit area frame"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});//>>built
+define("dijit/form/nls/de/ComboBox",{previousMessage:"Vorherige Auswahl",nextMessage:"Weitere Auswahlm\u00f6glichkeiten"});//>>built
+define("dijit/form/nls/de/Textarea",{iframeEditTitle:"Editierbereich",iframeFocusTitle:"Rahmen f\u00fcr Editierbereich"});//>>built
+define("dijit/form/nls/de/validate",{invalidMessage:"Der eingegebene Wert ist ung\u00fcltig. ",missingMessage:"Dieser Wert ist erforderlich.",rangeMessage:"Dieser Wert liegt au\u00dferhalb des g\u00fcltigen Bereichs. "});//>>built
+define("dijit/form/nls/fr/ComboBox",{previousMessage:"Choix pr\u00e9c\u00e9dents",nextMessage:"Plus de choix"});//>>built
+define("dijit/form/nls/fr/Textarea",{iframeEditTitle:"zone d'\u00e9dition",iframeFocusTitle:"cadre de la zone d'\u00e9dition"});//>>built
+define("dijit/form/nls/fr/validate",{invalidMessage:"La valeur indiqu\u00e9e n'est pas correcte.",missingMessage:"Cette valeur est requise.",rangeMessage:"Cette valeur n'est pas comprise dans la plage autoris\u00e9e."});//>>built
+define("dijit/form/nls/it/ComboBox",{previousMessage:"Scelte precedenti",nextMessage:"Scelte successive"});//>>built
+define("dijit/form/nls/it/Textarea",{iframeEditTitle:"modifica area",iframeFocusTitle:"modifica frame area"});//>>built
+define("dijit/form/nls/it/validate",{invalidMessage:"Il valore immesso non \u00e8 valido.",missingMessage:"Questo valore \u00e8 obbligatorio.",rangeMessage:"Questo valore \u00e8 fuori dall'intervallo consentito."});//>>built
+define("dijit/form/nls/nl/ComboBox",{previousMessage:"Eerdere opties",nextMessage:"Meer opties"});//>>built
+define("dijit/form/nls/nl/Textarea",{iframeEditTitle:"veld bewerken",iframeFocusTitle:"veldkader bewerken"});//>>built
+define("dijit/form/nls/nl/validate",{invalidMessage:"De opgegeven waarde is ongeldig.",missingMessage:"Deze waarde is verplicht.",rangeMessage:"Deze waarde is niet toegestaan."});//>>built
+define("dijit/form/nls/validate",{root:{invalidMessage:"The value entered is not valid.",missingMessage:"This value is required.",rangeMessage:"This value is out of range."},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});//>>built
+define("dijit/nls/common",{root:{buttonOk:"OK",buttonCancel:"Cancel",buttonSave:"Save",itemClose:"Close"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});//>>built
+define("dijit/nls/de/common",{buttonOk:"OK",buttonCancel:"Abbrechen",buttonSave:"Speichern",itemClose:"Schlie\u00dfen"});//>>built
+define("dijit/nls/de/loading",{loadingState:"Wird geladen...",errorState:"Es ist ein Fehler aufgetreten."});//>>built
+define("dijit/nls/fr/common",{buttonOk:"OK",buttonCancel:"Annuler",buttonSave:"Enregistrer",itemClose:"Fermer"});//>>built
+define("dijit/nls/fr/loading",{loadingState:"Chargement...",errorState:"Une erreur est survenue"});//>>built
+define("dijit/nls/it/common",{buttonOk:"Ok",buttonCancel:"Annulla",buttonSave:"Salva",itemClose:"Chiudi"});//>>built
+define("dijit/nls/it/loading",{loadingState:"Caricamento in corso...",errorState:"Si \u00e8 verificato un errore"});//>>built
+define("dijit/nls/loading",{root:{loadingState:"Loading...",errorState:"Sorry, an error occurred"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});//>>built
+define("dijit/nls/nl/common",{buttonOk:"OK",buttonCancel:"Annuleren",buttonSave:"Opslaan",itemClose:"Sluiten"});//>>built
+define("dijit/nls/nl/loading",{loadingState:"Bezig met laden...",errorState:"Er is een fout opgetreden"});//>>built
define("dojo/cldr/nls/buddhist",{root:{"months-format-abbr":"1,2,3,4,5,6,7,8,9,10,11,12".split(","),"months-format-narrow":"1,2,3,4,5,6,7,8,9,10,11,12".split(","),"months-format-wide":"1,2,3,4,5,6,7,8,9,10,11,12".split(","),"months-standAlone-abbr":"1,2,3,4,5,6,7,8,9,10,11,12".split(","),"months-standAlone-narrow":"1,2,3,4,5,6,7,8,9,10,11,12".split(","),"months-standAlone-wide":"1,2,3,4,5,6,7,8,9,10,11,12".split(","),"days-format-abbr":"1,2,3,4,5,6,7".split(","),"days-format-narrow":"1,2,3,4,5,6,7".split(","),
"days-format-wide":"1,2,3,4,5,6,7".split(","),"days-standAlone-abbr":"1,2,3,4,5,6,7".split(","),"days-standAlone-narrow":"1,2,3,4,5,6,7".split(","),"days-standAlone-wide":"1,2,3,4,5,6,7".split(","),"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-format-narrow":["1","2","3","4"],"quarters-format-wide":["Q1","Q2","Q3","Q4"],"quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-narrow":["1","2","3","4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dayPeriods-format-abbr-am":"AM",
"dayPeriods-format-abbr-pm":"PM","dayPeriods-format-narrow-am":"AM","dayPeriods-format-narrow-pm":"PM","dayPeriods-format-wide-am":"AM","dayPeriods-format-wide-pm":"PM",eraNames:["BE"],eraAbbr:["BE"],eraNarrow:["BE"],"dateFormat-full":"EEEE, G y MMMM dd","dateFormat-long":"G y MMMM d","dateFormat-medium":"G y MMM d","dateFormat-short":"GGGGG yyyy-MM-dd","timeFormat-full":"HH:mm:ss zzzz","timeFormat-long":"HH:mm:ss z","timeFormat-medium":"HH:mm:ss","timeFormat-short":"HH:mm",dateTimeFormat:"{1} {0}",
"dateFormatItem-d":"d","dateFormatItem-Ed":"d E","dateFormatItem-Gy":"G y","dateFormatItem-h":"h a","dateFormatItem-H":"HH","dateFormatItem-hm":"h:mm a","dateFormatItem-Hm":"HH:mm","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-M":"L","dateFormatItem-Md":"M-d","dateFormatItem-MEd":"E, M-d","dateFormatItem-MMM":"LLL","dateFormatItem-MMMd":"MMM d","dateFormatItem-MMMEd":"E MMM d","dateFormatItem-ms":"mm:ss","dateFormatItem-y":"G y","dateFormatItem-yM":"GGGGG yyyy-MM",
"dateFormatItem-yMd":"GGGGG yyyy-MM-dd","dateFormatItem-yMEd":"E, GGGGG yyyy-MM-dd","dateFormatItem-yMMM":"G y MMM","dateFormatItem-yMMMd":"G y MMM d","dateFormatItem-yMMMEd":"E, G y MMM d","dateFormatItem-yQ":"GGGGG yyyy Q","dateFormatItem-yQQQ":"G y QQQ","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})",
-"dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}"},ar:!0,cs:!0,da:!0,de:!0,el:!0,en:!0,"en-gb":!0,es:!0,fi:!0,fr:!0,hu:!0,it:!0,ja:!0,ko:!0,nb:!0,nl:!0,pl:!0,pt:!0,"pt-pt":!0,ro:!0,ru:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-hant":!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/buddhist.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/currency.js] */
-//>>built
-define("dojo/cldr/nls/currency",{root:{AUD_symbol:"AU$",CAD_symbol:"CA$",CNY_symbol:"CN\u00a5",EUR_symbol:"\u20ac",GBP_symbol:"\u00a3",HKD_symbol:"HK$",JPY_symbol:"JP\u00a5",USD_symbol:"US$"},ar:!0,ca:!0,cs:!0,da:!0,de:!0,el:!0,en:!0,"en-au":!0,"en-ca":!0,es:!0,fi:!0,fr:!0,he:!0,hu:!0,it:!0,ja:!0,ko:!0,nb:!0,nl:!0,pl:!0,pt:!0,"pt-pt":!0,ro:!0,ru:!0,sk:!0,sl:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-hant":!0,"zh-hk":!0,"zh-tw":!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/currency.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/de/buddhist.js] */
-//>>built
+"dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}"},ar:!0,cs:!0,da:!0,de:!0,el:!0,en:!0,"en-gb":!0,es:!0,fi:!0,fr:!0,hu:!0,it:!0,ja:!0,ko:!0,nb:!0,nl:!0,pl:!0,pt:!0,"pt-pt":!0,ro:!0,ru:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-hant":!0});//>>built
+define("dojo/cldr/nls/currency",{root:{AUD_symbol:"AU$",CAD_symbol:"CA$",CNY_symbol:"CN\u00a5",EUR_symbol:"\u20ac",GBP_symbol:"\u00a3",HKD_symbol:"HK$",JPY_symbol:"JP\u00a5",USD_symbol:"US$"},ar:!0,ca:!0,cs:!0,da:!0,de:!0,el:!0,en:!0,"en-au":!0,"en-ca":!0,es:!0,fi:!0,fr:!0,he:!0,hu:!0,it:!0,ja:!0,ko:!0,nb:!0,nl:!0,pl:!0,pt:!0,"pt-pt":!0,ro:!0,ru:!0,sk:!0,sl:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-hant":!0,"zh-hk":!0,"zh-tw":!0});//>>built
define("dojo/cldr/nls/de/buddhist",{"dateFormat-full":"EEEE d. MMMM y G","dateFormat-long":"d. MMMM y G","dateFormat-medium":"d. MMM y G","dateFormat-short":"d.M.yyyy","dateFormatItem-d":"d","dateFormatItem-Ed":"E d.","dateFormatItem-Gy":"y G","dateFormatItem-H":"HH 'Uhr'","dateFormatItem-Hm":"HH:mm","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-M":"L","dateFormatItem-Md":"d.M.","dateFormatItem-MEd":"E, d.M.","dateFormatItem-MMd":"d.MM.","dateFormatItem-MMdd":"dd.MM.","dateFormatItem-MMM":"LLL",
"dateFormatItem-MMMd":"d. MMM","dateFormatItem-MMMEd":"E, d. MMM","dateFormatItem-MMMMdd":"dd. MMMM","dateFormatItem-ms":"mm:ss","dateFormatItem-y":"y G","dateFormatItem-yM":"M.y G","dateFormatItem-yMd":"d.M.y G","dateFormatItem-yMEd":"E, d.M.y G","dateFormatItem-yMMM":"MMM y G","dateFormatItem-yMMMd":"d. MMM y G","dateFormatItem-yMMMEd":"E, d. MMM y G","dateFormatItem-yQ":"Q y G","dateFormatItem-yQQQ":"QQQ y G","dateFormatItem-yyMM":"MM.y G","dateFormatItem-yyMMdd":"dd.MM.y G","dateFormatItem-yyMMM":"MMM y G",
"dateFormatItem-yyQ":"Q y G","dateFormatItem-yyQQQQ":"QQQQ y G","dateFormatItem-yyyy":"y G","dateFormatItem-yyyyMMMM":"MMMM y G","days-format-abbr":"So.,Mo.,Di.,Mi.,Do.,Fr.,Sa.".split(","),"days-format-wide":"Sonntag,Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag".split(","),"days-standAlone-abbr":"So,Mo,Di,Mi,Do,Fr,Sa".split(","),"days-standAlone-narrow":"S,M,D,M,D,F,S".split(","),"quarters-format-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"dayPeriods-format-wide-am":"vorm.",
-"dayPeriods-format-wide-pm":"nachm.","months-format-abbr":"Jan,Feb,M\u00e4r,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez".split(","),"months-format-wide":"Januar,Februar,M\u00e4rz,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember".split(","),"months-standAlone-abbr":"Jan,Feb,M\u00e4r,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez".split(","),"months-standAlone-narrow":"J,F,M,A,M,J,J,A,S,O,N,D".split(",")});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/de/buddhist.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/de/currency.js] */
-//>>built
-define("dojo/cldr/nls/de/currency",{AUD_displayName:"Australischer Dollar",CAD_displayName:"Kanadischer Dollar",CHF_displayName:"Schweizer Franken",CNY_displayName:"Renminbi Yuan",EUR_displayName:"Euro",GBP_displayName:"Pfund Sterling",HKD_displayName:"Hongkong-Dollar",JPY_displayName:"Japanische Yen",JPY_symbol:"\u00a5",USD_displayName:"US-Dollar",USD_symbol:"$"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/de/currency.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/de/gregorian.js] */
-//>>built
+"dayPeriods-format-wide-pm":"nachm.","months-format-abbr":"Jan,Feb,M\u00e4r,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez".split(","),"months-format-wide":"Januar,Februar,M\u00e4rz,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember".split(","),"months-standAlone-abbr":"Jan,Feb,M\u00e4r,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez".split(","),"months-standAlone-narrow":"J,F,M,A,M,J,J,A,S,O,N,D".split(",")});//>>built
+define("dojo/cldr/nls/de/currency",{AUD_displayName:"Australischer Dollar",CAD_displayName:"Kanadischer Dollar",CHF_displayName:"Schweizer Franken",CNY_displayName:"Renminbi Yuan",EUR_displayName:"Euro",GBP_displayName:"Pfund Sterling",HKD_displayName:"Hongkong-Dollar",JPY_displayName:"Japanische Yen",JPY_symbol:"\u00a5",USD_displayName:"US-Dollar",USD_symbol:"$"});//>>built
define("dojo/cldr/nls/de/gregorian",{"months-format-abbr":"Jan,Feb,M\u00e4r,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez".split(","),"months-format-wide":"Januar,Februar,M\u00e4rz,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember".split(","),"months-standAlone-abbr":"Jan,Feb,M\u00e4r,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez".split(","),"months-standAlone-narrow":"J,F,M,A,M,J,J,A,S,O,N,D".split(","),"days-format-abbr":"So.,Mo.,Di.,Mi.,Do.,Fr.,Sa.".split(","),"days-format-wide":"Sonntag,Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag".split(","),
"days-standAlone-abbr":"So,Mo,Di,Mi,Do,Fr,Sa".split(","),"days-standAlone-narrow":"S,M,D,M,D,F,S".split(","),"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-format-narrow":["1","2","3","4"],"quarters-format-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"dayPeriods-format-wide-afternoon":"nachmittags","dayPeriods-format-wide-am":"vorm.","dayPeriods-format-wide-earlyMorning":"morgens","dayPeriods-format-wide-evening":"abends","dayPeriods-format-wide-morning":"vormittags","dayPeriods-format-wide-night":"nachts",
"dayPeriods-format-wide-noon":"Mittag","dayPeriods-format-wide-pm":"nachm.",eraNames:["v. Chr.","n. Chr."],eraAbbr:["v. Chr.","n. Chr."],"dateFormat-full":"EEEE, d. MMMM y","dateFormat-long":"d. MMMM y","dateFormat-medium":"dd.MM.yyyy","dateFormat-short":"dd.MM.yy","timeFormat-full":"HH:mm:ss zzzz","timeFormat-long":"HH:mm:ss z","timeFormat-medium":"HH:mm:ss","timeFormat-short":"HH:mm","dateFormatItem-d":"d","dateFormatItem-Ed":"E, d.","dateFormatItem-H":"HH 'Uhr'","dateFormatItem-hm":"h:mm a","dateFormatItem-Hm":"HH:mm",
@@ -806,128 +744,105 @@ define("dojo/cldr/nls/de/gregorian",{"months-format-abbr":"Jan,Feb,M\u00e4r,Apr,
"dateFormatItem-yMMM":"MMM y","dateFormatItem-yMMMd":"d. MMM y","dateFormatItem-yMMMEd":"E, d. MMM y","dateFormatItem-yQ":"Q y","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yyMM":"MM.yy","dateFormatItem-yyMMdd":"dd.MM.yy","dateFormatItem-yyMMM":"MMM yy","dateFormatItem-yyQ":"Q yy","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yyyy":"y","dateFormatItem-yyyyMMMM":"MMMM y","field-era":"Epoche","field-year":"Jahr","field-year-relative+-1":"Letztes Jahr","field-year-relative+0":"Dieses Jahr","field-year-relative+1":"N\u00e4chstes Jahr",
"field-month":"Monat","field-month-relative+-1":"Letzter Monat","field-month-relative+0":"Dieser Monat","field-month-relative+1":"N\u00e4chster Monat","field-week":"Woche","field-week-relative+-1":"Letzte Woche","field-week-relative+0":"Diese Woche","field-week-relative+1":"N\u00e4chste Woche","field-day":"Tag","field-day-relative+-2":"Vorgestern","field-day-relative+-1":"Gestern","field-day-relative+0":"Heute","field-day-relative+1":"Morgen","field-day-relative+2":"\u00dcbermorgen","field-weekday":"Wochentag",
"field-dayperiod":"Tagesh\u00e4lfte","field-hour":"Stunde","field-minute":"Minute","field-second":"Sekunde","field-zone":"Zone","months-format-narrow":"J,F,M,A,M,J,J,A,S,O,N,D".split(","),"months-standAlone-wide":"Januar,Februar,M\u00e4rz,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember".split(","),"days-format-narrow":"S,M,D,M,D,F,S".split(","),"days-standAlone-wide":"Sonntag,Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag".split(","),"quarters-standAlone-wide":["1. Quartal","2. Quartal",
-"3. Quartal","4. Quartal"],eraNarrow:["v. Chr.","n. Chr."]});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/de/gregorian.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/de/islamic.js] */
-//>>built
+"3. Quartal","4. Quartal"],eraNarrow:["v. Chr.","n. Chr."]});//>>built
define("dojo/cldr/nls/de/islamic",{"dateFormat-full":"EEEE d. MMMM y G","dateFormat-long":"d. MMMM y G","dateFormat-medium":"d. MMM y G","dateFormat-short":"d.M.y G","dateFormatItem-d":"d","dateFormatItem-Ed":"E d.","dateFormatItem-H":"HH 'Uhr'","dateFormatItem-Hm":"HH:mm","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-M":"L","dateFormatItem-Md":"d.M.","dateFormatItem-MEd":"E, d.M.","dateFormatItem-MMd":"d.MM.","dateFormatItem-MMdd":"dd.MM.","dateFormatItem-MMM":"LLL","dateFormatItem-MMMd":"d. MMM",
"dateFormatItem-MMMEd":"E, d. MMM","dateFormatItem-MMMMdd":"dd. MMMM","dateFormatItem-ms":"mm:ss","dateFormatItem-yyMM":"MM.y G","dateFormatItem-yyMMdd":"dd.MM.y G","dateFormatItem-yyMMM":"MMM y G","dateFormatItem-yyQ":"Q y G","dateFormatItem-yyQQQQ":"QQQQ y G","dateFormatItem-yyyy":"y G","dateFormatItem-yyyyM":"M.y G","dateFormatItem-yyyyMd":"d.M.y G","dateFormatItem-yyyyMEd":"E, d.M.y G","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d. MMM y G","dateFormatItem-yyyyMMMEd":"E, d. MMM y G",
"dateFormatItem-yyyyMMMM":"MMMM y G","dateFormatItem-yyyyQ":"Q y G","dateFormatItem-yyyyQQQ":"QQQ y G","days-format-abbr":"So.,Mo.,Di.,Mi.,Do.,Fr.,Sa.".split(","),"days-format-wide":"Sonntag,Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag".split(","),"days-standAlone-abbr":"So,Mo,Di,Mi,Do,Fr,Sa".split(","),"days-standAlone-narrow":"S,M,D,M,D,F,S".split(","),"quarters-format-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"dayPeriods-format-wide-am":"vorm.","dayPeriods-format-wide-pm":"nachm.",
-"dateFormatItem-yM":"M.y","dateFormatItem-yMd":"d.M.y","dateFormatItem-yMEd":"E, d.M.y","dateFormatItem-yMMM":"MMM y","dateFormatItem-yMMMd":"d. MMM y","dateFormatItem-yMMMEd":"E, d. MMM y","dateFormatItem-yQ":"Q y","dateFormatItem-yQQQ":"QQQ y"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/de/islamic.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/de/number.js] */
-//>>built
-define("dojo/cldr/nls/de/number",{decimal:",",group:".",list:";",percentSign:"%",plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0B",scientificFormat:"#E0",percentFormat:"#,##0\u00a0%",currencyFormat:"#,##0.00\u00a0\u00a4"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/de/number.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/gregorian.js] */
-//>>built
+"dateFormatItem-yM":"M.y","dateFormatItem-yMd":"d.M.y","dateFormatItem-yMEd":"E, d.M.y","dateFormatItem-yMMM":"MMM y","dateFormatItem-yMMMd":"d. MMM y","dateFormatItem-yMMMEd":"E, d. MMM y","dateFormatItem-yQ":"Q y","dateFormatItem-yQQQ":"QQQ y"});//>>built
+define("dojo/cldr/nls/de/number",{decimal:",",group:".",list:";",percentSign:"%",plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0B",scientificFormat:"#E0",percentFormat:"#,##0\u00a0%",currencyFormat:"#,##0.00\u00a0\u00a4"});//>>built
+define("dojo/cldr/nls/fr/buddhist",{eraNames:["\u00e8re bouddhiste"],eraAbbr:["\u00e8re b."],eraNarrow:"E.B.","dateFormat-full":"EEEE d MMMM y G","dateFormat-long":"d MMMM y G","dateFormat-medium":"d MMM, y G","dateFormat-short":"d/M/yyyy","dateFormatItem-d":"d","dateFormatItem-Ed":"E d","dateFormatItem-Gy":"y G","dateFormatItem-Hm":"HH:mm","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-M":"L","dateFormatItem-Md":"d/M","dateFormatItem-MEd":"E d/M","dateFormatItem-MMd":"d/MM","dateFormatItem-MMdd":"dd/MM",
+"dateFormatItem-MMM":"LLL","dateFormatItem-MMMd":"d MMM","dateFormatItem-MMMdd":"dd MMM","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-MMMMEd":"E d MMMM","dateFormatItem-ms":"mm:ss","dateFormatItem-y":"y G","dateFormatItem-yM":"M/y G","dateFormatItem-yMd":"d/M/y G","dateFormatItem-yMEd":"E d/M/y G","dateFormatItem-yMMM":"MMM y G","dateFormatItem-yMMMEd":"E d MMM y G","dateFormatItem-yQ":"'T'Q y G","dateFormatItem-yQQQ":"QQQ y G","dateFormatItem-yyMM":"MM/y G","dateFormatItem-yyMMM":"MMM y G","dateFormatItem-yyMMMd":"d MMM y G",
+"dateFormatItem-yyMMMEd":"E d MMM y G","dateFormatItem-yyQ":"'T'Q y G","dateFormatItem-yyQQQQ":"QQQQ y G","dateFormatItem-yyyyMMMM":"MMMM y G","days-format-abbr":"dim.,lun.,mar.,mer.,jeu.,ven.,sam.".split(","),"days-format-wide":"dimanche,lundi,mardi,mercredi,jeudi,vendredi,samedi".split(","),"days-standAlone-abbr":"dim.,lun.,mar.,mer.,jeu.,ven.,sam.".split(","),"days-standAlone-narrow":"D,L,M,M,J,V,S".split(","),"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-format-narrow":["T1","T2","T3",
+"T4"],"quarters-format-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"dayPeriods-format-narrow-pm":"p","dateFormatItem-yMMMd":"d MMM y","months-format-abbr":"janv.,f\u00e9vr.,mars,avr.,mai,juin,juil.,ao\u00fbt,sept.,oct.,nov.,d\u00e9c.".split(","),"months-format-wide":"janvier,f\u00e9vrier,mars,avril,mai,juin,juillet,ao\u00fbt,septembre,octobre,novembre,d\u00e9cembre".split(","),"months-standAlone-abbr":"janv.,f\u00e9vr.,mars,avr.,mai,juin,juil.,ao\u00fbt,sept.,oct.,nov.,d\u00e9c.".split(","),
+"months-standAlone-narrow":"J,F,M,A,M,J,J,A,S,O,N,D".split(",")});//>>built
+define("dojo/cldr/nls/fr/currency",{AUD_displayName:"dollar australien",AUD_symbol:"$AU",CAD_displayName:"dollar canadien",CAD_symbol:"$CA",CHF_displayName:"franc suisse",CNY_displayName:"yuan renminbi chinois",CNY_symbol:"\u04b0",EUR_displayName:"euro",GBP_displayName:"livre sterling",GBP_symbol:"\u00a3UK",HKD_displayName:"dollar de Hong Kong",HKD_symbol:"$HK",JPY_displayName:"yen japonais",JPY_symbol:"\u00a5JP",USD_displayName:"dollar des \u00c9tats-Unis",USD_symbol:"$US"});//>>built
+define("dojo/cldr/nls/fr/gregorian",{"months-format-abbr":"janv.,f\u00e9vr.,mars,avr.,mai,juin,juil.,ao\u00fbt,sept.,oct.,nov.,d\u00e9c.".split(","),"months-format-wide":"janvier,f\u00e9vrier,mars,avril,mai,juin,juillet,ao\u00fbt,septembre,octobre,novembre,d\u00e9cembre".split(","),"months-standAlone-abbr":"janv.,f\u00e9vr.,mars,avr.,mai,juin,juil.,ao\u00fbt,sept.,oct.,nov.,d\u00e9c.".split(","),"months-standAlone-narrow":"J,F,M,A,M,J,J,A,S,O,N,D".split(","),"days-format-abbr":"dim.,lun.,mar.,mer.,jeu.,ven.,sam.".split(","),
+"days-format-wide":"dimanche,lundi,mardi,mercredi,jeudi,vendredi,samedi".split(","),"days-standAlone-abbr":"dim.,lun.,mar.,mer.,jeu.,ven.,sam.".split(","),"days-standAlone-narrow":"D,L,M,M,J,V,S".split(","),"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-format-narrow":["T1","T2","T3","T4"],"quarters-format-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"dayPeriods-format-abbr-am":"AM","dayPeriods-format-abbr-pm":"PM","dayPeriods-format-narrow-pm":"p","dayPeriods-format-wide-afternoon":"apr\u00e8s-midi",
+"dayPeriods-format-wide-am":"AM","dayPeriods-format-wide-morning":"matin","dayPeriods-format-wide-night":"soir","dayPeriods-format-wide-noon":"midi","dayPeriods-format-wide-pm":"PM",eraNames:["avant J\u00e9sus-Christ","apr\u00e8s J\u00e9sus-Christ"],eraAbbr:["av. J.-C.","ap. J.-C."],"dateFormat-full":"EEEE d MMMM y","dateFormat-long":"d MMMM y","dateFormat-medium":"d MMM y","dateFormat-short":"dd/MM/yy","timeFormat-full":"HH:mm:ss zzzz","timeFormat-long":"HH:mm:ss z","timeFormat-medium":"HH:mm:ss",
+"timeFormat-short":"HH:mm","dateFormatItem-d":"d","dateFormatItem-Ed":"E d","dateFormatItem-hm":"h:mm a","dateFormatItem-Hm":"HH:mm","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-M":"L","dateFormatItem-Md":"d/M","dateFormatItem-MEd":"E d/M","dateFormatItem-MMd":"d/MM","dateFormatItem-MMdd":"dd/MM","dateFormatItem-MMM":"LLL","dateFormatItem-MMMd":"d MMM","dateFormatItem-MMMdd":"dd MMM","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-MMMMEd":"E d MMMM","dateFormatItem-ms":"mm:ss",
+"dateFormatItem-y":"y","dateFormatItem-yM":"M/yyyy","dateFormatItem-yMd":"d/M/yyyy","dateFormatItem-yMEd":"E d/M/yyyy","dateFormatItem-yMMM":"MMM y","dateFormatItem-yMMMd":"d MMM y","dateFormatItem-yMMMEd":"E d MMM y","dateFormatItem-yQ":"'T'Q y","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yyMM":"MM/yy","dateFormatItem-yyMMM":"MMM yy","dateFormatItem-yyMMMd":"d MMM yy","dateFormatItem-yyMMMEd":"E d MMM yy","dateFormatItem-yyQ":"'T'Q yy","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yyyyMMMM":"MMMM y",
+"field-era":"\u00e8re","field-year":"ann\u00e9e","field-year-relative+-1":"l\u2019ann\u00e9e derni\u00e8re","field-year-relative+0":"cette ann\u00e9e","field-year-relative+1":"l\u2019ann\u00e9e prochaine","field-month":"mois","field-month-relative+-1":"le mois dernier","field-month-relative+0":"ce mois-ci","field-month-relative+1":"le mois prochain","field-week":"semaine","field-week-relative+-1":"la semaine derni\u00e8re","field-week-relative+0":"cette semaine","field-week-relative+1":"la semaine prochaine",
+"field-day":"jour","field-day-relative+-2":"avant-hier","field-day-relative+-1":"hier","field-day-relative+0":"aujourd\u2019hui","field-day-relative+1":"demain","field-day-relative+2":"apr\u00e8s-demain","field-weekday":"jour de la semaine","field-dayperiod":"cadran","field-hour":"heure","field-minute":"minute","field-second":"seconde","field-zone":"fuseau horaire","months-format-narrow":"J,F,M,A,M,J,J,A,S,O,N,D".split(","),"months-standAlone-wide":"janvier,f\u00e9vrier,mars,avril,mai,juin,juillet,ao\u00fbt,septembre,octobre,novembre,d\u00e9cembre".split(","),
+"days-format-narrow":"D,L,M,M,J,V,S".split(","),"days-standAlone-wide":"dimanche,lundi,mardi,mercredi,jeudi,vendredi,samedi".split(","),"quarters-standAlone-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],eraNarrow:["av. J.-C.","ap. J.-C."]});//>>built
+define("dojo/cldr/nls/fr/hebrew",{"months-format-wide":"Tisseri,Hesvan,Kislev,T\u00e9beth,Sch\u00e9bat,Adar I,Adar,Nissan,Iyar,Sivan,Tamouz,Ab,Elloul".split(","),"months-format-wide-leap":"Adar II","months-format-abbr":"Tisseri,Hesvan,Kislev,T\u00e9beth,Sch\u00e9bat,Adar I,Adar,Nissan,Iyar,Sivan,Tamouz,Ab,Elloul".split(","),"months-standAlone-abbr":"Tisseri,Hesvan,Kislev,T\u00e9beth,Sch\u00e9bat,Adar I,Adar,Nissan,Iyar,Sivan,Tamouz,Ab,Elloul".split(","),"months-standAlone-wide":"Tisseri,Hesvan,Kislev,T\u00e9beth,Sch\u00e9bat,Adar I,Adar,Nissan,Iyar,Sivan,Tamouz,Ab,Elloul".split(","),
+"days-format-abbr":"dim.,lun.,mar.,mer.,jeu.,ven.,sam.".split(","),"days-format-wide":"dimanche,lundi,mardi,mercredi,jeudi,vendredi,samedi".split(","),"days-standAlone-abbr":"dim.,lun.,mar.,mer.,jeu.,ven.,sam.".split(","),"days-standAlone-narrow":"D,L,M,M,J,V,S".split(","),"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-format-narrow":["T1","T2","T3","T4"],"quarters-format-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"dayPeriods-format-narrow-pm":"p","dateFormat-full":"EEEE d MMMM y",
+"dateFormat-long":"d MMMM y","dateFormat-medium":"d MMM y","dateFormat-short":"dd/MM/yy","dateFormatItem-Ed":"E d","dateFormatItem-Md":"d/M","dateFormatItem-MEd":"E d/M","dateFormatItem-MMMd":"d MMM","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-yM":"M/yyyy","dateFormatItem-yMd":"d/M/yyyy","dateFormatItem-yMEd":"E d/M/yyyy","dateFormatItem-yMMM":"MMM y","dateFormatItem-yMMMd":"d MMM y","dateFormatItem-yMMMEd":"E d MMM y","dateFormatItem-yQ":"'T'Q y","dateFormatItem-yQQQ":"QQQ y"});//>>built
+define("dojo/cldr/nls/fr/islamic",{"months-format-abbr":"Mouh.,Saf.,Rabi\u02bb-oul-A.,Rabi\u02bb-out-T.,Djoum.-l-O.,Djoum.-t-T.,Radj.,Cha.,Ram.,Chaou.,Dou-l-Q.,Dou-l-H.".split(","),"months-format-wide":["Mouharram",null,"Rabi\u02bb-oul-Aououal","Rabi\u02bb-out-Tani","Djoumada-l-Oula","Djoumada-t-Tania","Radjab","Cha\u02bbban",null,"Chaououal","Dou-l-Qa\u02bbda","Dou-l-Hidjja"],"months-standAlone-narrow":"1,2,3,4,5,6,7,8,9,10,11,12".split(","),eraAbbr:["AH"],"dateFormat-full":"EEEE d MMMM y G","dateFormat-long":"d MMMM y G",
+"dateFormat-medium":"d MMM, y G","dateFormat-short":"d/M/y G","dateFormatItem-d":"d","dateFormatItem-Ed":"E d","dateFormatItem-Hm":"HH:mm","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-M":"L","dateFormatItem-Md":"d/M","dateFormatItem-MEd":"E d/M","dateFormatItem-MMd":"d/MM","dateFormatItem-MMdd":"dd/MM","dateFormatItem-MMM":"LLL","dateFormatItem-MMMd":"d MMM","dateFormatItem-MMMdd":"dd MMM","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-MMMMEd":"E d MMMM","dateFormatItem-ms":"mm:ss","dateFormatItem-yyMM":"MM/y G",
+"dateFormatItem-yyMMM":"MMM y G","dateFormatItem-yyMMMd":"d MMM y G","dateFormatItem-yyMMMEd":"E d MMM y G","dateFormatItem-yyQ":"'T'Q y G","dateFormatItem-yyQQQQ":"QQQQ y G","dateFormatItem-yyyy":"y G","dateFormatItem-yyyyM":"M/y G","dateFormatItem-yyyyMd":"d/M/y G","dateFormatItem-yyyyMEd":"E d/M/y G","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-yyyyMMMEd":"E d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","dateFormatItem-yyyyQ":"'T'Q y G","dateFormatItem-yyyyQQQ":"QQQ y G",
+"months-standAlone-abbr":"Mouh.,Saf.,Rabi\u02bb-oul-A.,Rabi\u02bb-out-T.,Djoum.-l-O.,Djoum.-t-T.,Radj.,Cha.,Ram.,Chaou.,Dou-l-Q.,Dou-l-H.".split(","),"months-standAlone-wide":["Mouharram",null,"Rabi\u02bb-oul-Aououal","Rabi\u02bb-out-Tani","Djoumada-l-Oula","Djoumada-t-Tania","Radjab","Cha\u02bbban",null,"Chaououal","Dou-l-Qa\u02bbda","Dou-l-Hidjja"],"days-format-abbr":"dim.,lun.,mar.,mer.,jeu.,ven.,sam.".split(","),"days-format-wide":"dimanche,lundi,mardi,mercredi,jeudi,vendredi,samedi".split(","),
+"days-standAlone-abbr":"dim.,lun.,mar.,mer.,jeu.,ven.,sam.".split(","),"days-standAlone-narrow":"D,L,M,M,J,V,S".split(","),"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-format-narrow":["T1","T2","T3","T4"],"quarters-format-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"dayPeriods-format-narrow-pm":"p","dateFormatItem-yM":"M/yyyy","dateFormatItem-yMd":"d/M/yyyy","dateFormatItem-yMEd":"E d/M/yyyy","dateFormatItem-yMMM":"MMM y","dateFormatItem-yMMMd":"d MMM y","dateFormatItem-yMMMEd":"E d MMM y",
+"dateFormatItem-yQ":"'T'Q y","dateFormatItem-yQQQ":"QQQ y"});//>>built
+define("dojo/cldr/nls/fr/number",{decimal:",",group:"\u00a0",list:";",percentSign:"%",plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0Bn",scientificFormat:"#E0",percentFormat:"#,##0\u00a0%",currencyFormat:"#,##0.00\u00a0\u00a4"});//>>built
define("dojo/cldr/nls/gregorian",{root:{"months-format-abbr":"1,2,3,4,5,6,7,8,9,10,11,12".split(","),"months-format-narrow":"1,2,3,4,5,6,7,8,9,10,11,12".split(","),"months-format-wide":"1,2,3,4,5,6,7,8,9,10,11,12".split(","),"months-standAlone-abbr":"1,2,3,4,5,6,7,8,9,10,11,12".split(","),"months-standAlone-narrow":"1,2,3,4,5,6,7,8,9,10,11,12".split(","),"months-standAlone-wide":"1,2,3,4,5,6,7,8,9,10,11,12".split(","),"days-format-abbr":"1,2,3,4,5,6,7".split(","),"days-format-narrow":"1,2,3,4,5,6,7".split(","),
"days-format-wide":"1,2,3,4,5,6,7".split(","),"days-standAlone-abbr":"1,2,3,4,5,6,7".split(","),"days-standAlone-narrow":"1,2,3,4,5,6,7".split(","),"days-standAlone-wide":"1,2,3,4,5,6,7".split(","),"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-format-narrow":["1","2","3","4"],"quarters-format-wide":["Q1","Q2","Q3","Q4"],"quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-narrow":["1","2","3","4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dayPeriods-format-abbr-am":"AM",
"dayPeriods-format-abbr-pm":"PM","dayPeriods-format-narrow-am":"AM","dayPeriods-format-narrow-pm":"PM","dayPeriods-format-wide-am":"AM","dayPeriods-format-wide-pm":"PM",eraNames:["BCE","CE"],eraAbbr:["BCE","CE"],eraNarrow:["BCE","CE"],"dateFormat-full":"EEEE, y MMMM dd","dateFormat-long":"y MMMM d","dateFormat-medium":"y MMM d","dateFormat-short":"yyyy-MM-dd","timeFormat-full":"HH:mm:ss zzzz","timeFormat-long":"HH:mm:ss z","timeFormat-medium":"HH:mm:ss","timeFormat-short":"HH:mm","dateTimeFormat-full":"{1} {0}",
"dateTimeFormat-long":"{1} {0}","dateTimeFormat-medium":"{1} {0}","dateTimeFormat-short":"{1} {0}","dateFormatItem-d":"d","dateFormatItem-Ed":"d E","dateFormatItem-h":"h a","dateFormatItem-H":"HH","dateFormatItem-hm":"h:mm a","dateFormatItem-Hm":"HH:mm","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-M":"L","dateFormatItem-Md":"M-d","dateFormatItem-MEd":"E, M-d","dateFormatItem-MMM":"LLL","dateFormatItem-MMMd":"MMM d","dateFormatItem-MMMEd":"E MMM d","dateFormatItem-ms":"mm:ss",
"dateFormatItem-y":"y","dateFormatItem-yM":"y-M","dateFormatItem-yMd":"y-M-d","dateFormatItem-yMEd":"E, y-M-d","dateFormatItem-yMMM":"y MMM","dateFormatItem-yMMMd":"y MMM d","dateFormatItem-yMMMEd":"E, y MMM d","dateFormatItem-yQ":"y Q","dateFormatItem-yQQQ":"y QQQ","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})",
"dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","field-era":"Era","field-year":"Year","field-month":"Month","field-week":"Week","field-day":"Day","field-day-relative+-1":"Yesterday","field-day-relative+0":"Today","field-day-relative+1":"Tomorrow",
-"field-weekday":"Day of the Week","field-dayperiod":"Dayperiod","field-hour":"Hour","field-minute":"Minute","field-second":"Second","field-zone":"Zone"},ar:!0,ca:!0,cs:!0,da:!0,de:!0,el:!0,en:!0,"en-au":!0,"en-ca":!0,"en-gb":!0,es:!0,fi:!0,fr:!0,"fr-ch":!0,he:!0,hu:!0,it:!0,ja:!0,ko:!0,nb:!0,nl:!0,pl:!0,pt:!0,"pt-pt":!0,ro:!0,ru:!0,sk:!0,sl:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-hant":!0,"zh-hk":!0,"zh-tw":!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/gregorian.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/hebrew.js] */
-//>>built
+"field-weekday":"Day of the Week","field-dayperiod":"Dayperiod","field-hour":"Hour","field-minute":"Minute","field-second":"Second","field-zone":"Zone"},ar:!0,ca:!0,cs:!0,da:!0,de:!0,el:!0,en:!0,"en-au":!0,"en-ca":!0,"en-gb":!0,es:!0,fi:!0,fr:!0,"fr-ch":!0,he:!0,hu:!0,it:!0,ja:!0,ko:!0,nb:!0,nl:!0,pl:!0,pt:!0,"pt-pt":!0,ro:!0,ru:!0,sk:!0,sl:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-hant":!0,"zh-hk":!0,"zh-tw":!0});//>>built
define("dojo/cldr/nls/hebrew",{root:{"months-format-abbr":"Tishri,Heshvan,Kislev,Tevet,Shevat,Adar I,Adar,Nisan,Iyar,Sivan,Tamuz,Av,Elul".split(","),"months-format-abbr-leap":"Adar II","months-format-narrow":"1,2,3,4,5,6,7,8,9,10,11,12,13".split(","),"months-format-wide":"Tishri,Heshvan,Kislev,Tevet,Shevat,Adar I,Adar,Nisan,Iyar,Sivan,Tamuz,Av,Elul".split(","),"months-format-wide-leap":"Adar II","months-standAlone-abbr":"Tishri,Heshvan,Kislev,Tevet,Shevat,Adar I,Adar,Nisan,Iyar,Sivan,Tamuz,Av,Elul".split(","),
"months-standAlone-abbr-leap":"Adar II","months-standAlone-narrow":"1,2,3,4,5,6,7,8,9,10,11,12,13".split(","),"months-standAlone-wide":"Tishri,Heshvan,Kislev,Tevet,Shevat,Adar I,Adar,Nisan,Iyar,Sivan,Tamuz,Av,Elul".split(","),"months-standAlone-wide-leap":"Adar II","days-format-abbr":"1,2,3,4,5,6,7".split(","),"days-format-narrow":"1,2,3,4,5,6,7".split(","),"days-format-wide":"1,2,3,4,5,6,7".split(","),"days-standAlone-abbr":"1,2,3,4,5,6,7".split(","),"days-standAlone-narrow":"1,2,3,4,5,6,7".split(","),
"days-standAlone-wide":"1,2,3,4,5,6,7".split(","),"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-format-narrow":["1","2","3","4"],"quarters-format-wide":["Q1","Q2","Q3","Q4"],"quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-narrow":["1","2","3","4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dayPeriods-format-abbr-am":"AM","dayPeriods-format-abbr-pm":"PM","dayPeriods-format-narrow-am":"AM","dayPeriods-format-narrow-pm":"PM","dayPeriods-format-wide-am":"AM","dayPeriods-format-wide-pm":"PM",
eraNames:["AM"],eraAbbr:["AM"],eraNarrow:["AM"],"dateFormat-full":"EEEE, y MMMM dd","dateFormat-long":"y MMMM d","dateFormat-medium":"y MMM d","dateFormat-short":"yyyy-MM-dd","timeFormat-full":"HH:mm:ss zzzz","timeFormat-long":"HH:mm:ss z","timeFormat-medium":"HH:mm:ss","timeFormat-short":"HH:mm","dateTimeFormat-full":"{1} {0}","dateTimeFormat-long":"{1} {0}","dateTimeFormat-medium":"{1} {0}","dateTimeFormat-short":"{1} {0}","dateFormatItem-d":"d","dateFormatItem-Ed":"d E","dateFormatItem-h":"h a",
"dateFormatItem-H":"HH","dateFormatItem-hm":"h:mm a","dateFormatItem-Hm":"HH:mm","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-M":"L","dateFormatItem-Md":"M-d","dateFormatItem-MEd":"E, M-d","dateFormatItem-MMM":"LLL","dateFormatItem-MMMd":"MMM d","dateFormatItem-MMMEd":"E MMM d","dateFormatItem-ms":"mm:ss","dateFormatItem-y":"y","dateFormatItem-yM":"y-M","dateFormatItem-yMd":"y-M-d","dateFormatItem-yMEd":"E, y-M-d","dateFormatItem-yMMM":"y MMM","dateFormatItem-yMMMd":"y MMM d",
"dateFormatItem-yMMMEd":"E, y MMM d","dateFormatItem-yQ":"y Q","dateFormatItem-yQQQ":"y QQQ","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}",
-"dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}"},ar:!0,el:!0,fi:!0,fr:!0,he:!0,hu:!0,ja:!0,nl:!0,pl:!0,pt:!0,ro:!0,ru:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-hant":!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/hebrew.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/islamic.js] */
-//>>built
+"dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}"},ar:!0,el:!0,fi:!0,fr:!0,he:!0,hu:!0,ja:!0,nl:!0,pl:!0,pt:!0,ro:!0,ru:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-hant":!0});//>>built
define("dojo/cldr/nls/islamic",{root:{"months-format-abbr":"Muh.,Saf.,Rab. I,Rab. II,Jum. I,Jum. II,Raj.,Sha.,Ram.,Shaw.,Dhu\u02bbl-Q.,Dhu\u02bbl-H.".split(","),"months-format-narrow":"1,2,3,4,5,6,7,8,9,10,11,12".split(","),"months-format-wide":"Muharram,Safar,Rabi\u02bb I,Rabi\u02bb II,Jumada I,Jumada II,Rajab,Sha\u02bbban,Ramadan,Shawwal,Dhu\u02bbl-Qi\u02bbdah,Dhu\u02bbl-Hijjah".split(","),"months-standAlone-abbr":"Muh.,Saf.,Rab. I,Rab. II,Jum. I,Jum. II,Raj.,Sha.,Ram.,Shaw.,Dhu\u02bbl-Q.,Dhu\u02bbl-H.".split(","),
"months-standAlone-narrow":"1,2,3,4,5,6,7,8,9,10,11,12".split(","),"months-standAlone-wide":"Muharram,Safar,Rabi\u02bb I,Rabi\u02bb II,Jumada I,Jumada II,Rajab,Sha\u02bbban,Ramadan,Shawwal,Dhu\u02bbl-Qi\u02bbdah,Dhu\u02bbl-Hijjah".split(","),"days-format-abbr":"1,2,3,4,5,6,7".split(","),"days-format-narrow":"1,2,3,4,5,6,7".split(","),"days-format-wide":"1,2,3,4,5,6,7".split(","),"days-standAlone-abbr":"1,2,3,4,5,6,7".split(","),"days-standAlone-narrow":"1,2,3,4,5,6,7".split(","),"days-standAlone-wide":"1,2,3,4,5,6,7".split(","),
"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-format-narrow":["1","2","3","4"],"quarters-format-wide":["Q1","Q2","Q3","Q4"],"quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-narrow":["1","2","3","4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dayPeriods-format-abbr-am":"AM","dayPeriods-format-abbr-pm":"PM","dayPeriods-format-narrow-am":"AM","dayPeriods-format-narrow-pm":"PM","dayPeriods-format-wide-am":"AM","dayPeriods-format-wide-pm":"PM",eraNames:["AH"],eraAbbr:["AH"],
eraNarrow:["AH"],"dateFormat-full":"EEEE, y MMMM dd","dateFormat-long":"y MMMM d","dateFormat-medium":"y MMM d","dateFormat-short":"yyyy-MM-dd","timeFormat-full":"HH:mm:ss zzzz","timeFormat-long":"HH:mm:ss z","timeFormat-medium":"HH:mm:ss","timeFormat-short":"HH:mm","dateTimeFormat-full":"{1} {0}","dateTimeFormat-long":"{1} {0}","dateTimeFormat-medium":"{1} {0}","dateTimeFormat-short":"{1} {0}","dateFormatItem-d":"d","dateFormatItem-Ed":"d E","dateFormatItem-h":"h a","dateFormatItem-H":"HH","dateFormatItem-hm":"h:mm a",
"dateFormatItem-Hm":"HH:mm","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-M":"L","dateFormatItem-Md":"M-d","dateFormatItem-MEd":"E, M-d","dateFormatItem-MMM":"LLL","dateFormatItem-MMMd":"MMM d","dateFormatItem-MMMEd":"E MMM d","dateFormatItem-ms":"mm:ss","dateFormatItem-y":"y","dateFormatItem-yM":"y-M","dateFormatItem-yMd":"y-M-d","dateFormatItem-yMEd":"E, y-M-d","dateFormatItem-yMMM":"y MMM","dateFormatItem-yMMMd":"y MMM d","dateFormatItem-yMMMEd":"E, y MMM d",
"dateFormatItem-yQ":"y Q","dateFormatItem-yQQQ":"y QQQ","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}",
-"dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}"},ar:!0,cs:!0,da:!0,de:!0,en:!0,"en-gb":!0,es:!0,fi:!0,fr:!0,he:!0,hu:!0,it:!0,ja:!0,nb:!0,nl:!0,pl:!0,pt:!0,"pt-pt":!0,ro:!0,ru:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-hant":!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/islamic.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/number.js] */
-//>>built
+"dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}"},ar:!0,cs:!0,da:!0,de:!0,en:!0,"en-gb":!0,es:!0,fi:!0,fr:!0,he:!0,hu:!0,it:!0,ja:!0,nb:!0,nl:!0,pl:!0,pt:!0,"pt-pt":!0,ro:!0,ru:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-hant":!0});//>>built
+define("dojo/cldr/nls/it/buddhist",{eraAbbr:["EB"],"dateFormat-full":"EEEE d MMMM y G","dateFormat-long":"dd MMMM y G","dateFormat-medium":"dd/MMM/y G","dateFormat-short":"dd/MM/y G","dateFormatItem-d":"d","dateFormatItem-Ed":"E d","dateFormatItem-Gy":"y G","dateFormatItem-h":"hh a","dateFormatItem-hm":"hh:mm a","dateFormatItem-Hm":"HH:mm","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-M":"L","dateFormatItem-Md":"d/M","dateFormatItem-MEd":"E d/M","dateFormatItem-MMdd":"dd/MM",
+"dateFormatItem-MMM":"LLL","dateFormatItem-MMMd":"d MMM","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-MMMMdd":"dd MMMM","dateFormatItem-ms":"mm:ss","dateFormatItem-y":"y G","dateFormatItem-yM":"M/y G","dateFormatItem-yMd":"d/M/y G","dateFormatItem-yMEd":"E, d/M/y G","dateFormatItem-yMMM":"MMM y G","dateFormatItem-yMMMd":"d MMM y G","dateFormatItem-yMMMEd":"E d MMM y G","dateFormatItem-yQ":"Q-y G","dateFormatItem-yQQQ":"QQQ y G","dateFormatItem-yyMM":"MM/y G","dateFormatItem-yyQ":"Q y G","dateFormatItem-yyQQQQ":"QQQQ y G",
+"dateFormatItem-yyyyMMMM":"MMMM y G",eraNames:["EB"],eraNarrow:["EB"],"days-format-abbr":"dom,lun,mar,mer,gio,ven,sab".split(","),"days-format-wide":"domenica,luned\u00ec,marted\u00ec,mercoled\u00ec,gioved\u00ec,venerd\u00ec,sabato".split(","),"days-standAlone-narrow":"D,L,M,M,G,V,S".split(","),"days-standAlone-wide":"Domenica,Luned\u00ec,Marted\u00ec,Mercoled\u00ec,Gioved\u00ec,Venerd\u00ec,Sabato".split(","),"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-format-wide":["1o trimestre","2o trimestre",
+"3o trimestre","4o trimestre"],"quarters-standAlone-abbr":["T1"],"quarters-standAlone-wide":["1\u00ba trimestre","2\u00ba trimestre","3\u00ba trimestre","4\u00ba trimestre"],"dayPeriods-format-wide-am":"m.","dayPeriods-format-wide-pm":"p.","months-format-abbr":"gen,feb,mar,apr,mag,giu,lug,ago,set,ott,nov,dic".split(","),"months-format-narrow":"G,F,M,A,M,G,L,A,S,O,N,D".split(","),"months-format-wide":"gennaio,febbraio,marzo,aprile,maggio,giugno,luglio,agosto,settembre,ottobre,novembre,dicembre".split(","),
+"months-standAlone-abbr":"gen,feb,mar,apr,mag,giu,lug,ago,set,ott,nov,dic".split(","),"months-standAlone-narrow":"G,F,M,A,M,G,L,A,S,O,N,D".split(","),"months-standAlone-wide":"Gennaio,Febbraio,Marzo,Aprile,Maggio,Giugno,Luglio,Agosto,Settembre,Ottobre,Novembre,Dicembre".split(",")});//>>built
+define("dojo/cldr/nls/it/currency",{AUD_displayName:"Dollaro Australiano",CAD_displayName:"Dollaro Canadese",CHF_displayName:"Franco Svizzero",CNY_displayName:"Renmimbi Cinese",EUR_displayName:"Euro",GBP_displayName:"Sterlina Inglese",HKD_displayName:"Dollaro di Hong Kong",JPY_displayName:"Yen Giapponese",USD_displayName:"Dollaro Statunitense"});//>>built
+define("dojo/cldr/nls/it/gregorian",{"months-format-abbr":"gen,feb,mar,apr,mag,giu,lug,ago,set,ott,nov,dic".split(","),"months-format-narrow":"G,F,M,A,M,G,L,A,S,O,N,D".split(","),"months-format-wide":"gennaio,febbraio,marzo,aprile,maggio,giugno,luglio,agosto,settembre,ottobre,novembre,dicembre".split(","),"months-standAlone-abbr":"gen,feb,mar,apr,mag,giu,lug,ago,set,ott,nov,dic".split(","),"months-standAlone-narrow":"G,F,M,A,M,G,L,A,S,O,N,D".split(","),"months-standAlone-wide":"Gennaio,Febbraio,Marzo,Aprile,Maggio,Giugno,Luglio,Agosto,Settembre,Ottobre,Novembre,Dicembre".split(","),
+"days-format-abbr":"dom,lun,mar,mer,gio,ven,sab".split(","),"days-format-wide":"domenica,luned\u00ec,marted\u00ec,mercoled\u00ec,gioved\u00ec,venerd\u00ec,sabato".split(","),"days-standAlone-narrow":"D,L,M,M,G,V,S".split(","),"days-standAlone-wide":"Domenica,Luned\u00ec,Marted\u00ec,Mercoled\u00ec,Gioved\u00ec,Venerd\u00ec,Sabato".split(","),"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-format-narrow":["1","2","3","4"],"quarters-format-wide":["1o trimestre","2o trimestre","3o trimestre",
+"4o trimestre"],"quarters-standAlone-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1\u00ba trimestre","2\u00ba trimestre","3\u00ba trimestre","4\u00ba trimestre"],"dayPeriods-format-wide-am":"m.","dayPeriods-format-wide-pm":"p.",eraNames:["a.C.","d.C"],eraAbbr:["aC","dC"],"dateFormat-full":"EEEE d MMMM y","dateFormat-long":"dd MMMM y","dateFormat-medium":"dd/MMM/y","dateFormat-short":"dd/MM/yy","timeFormat-full":"HH:mm:ss zzzz","timeFormat-long":"HH:mm:ss z","timeFormat-medium":"HH:mm:ss",
+"timeFormat-short":"HH:mm","dateFormatItem-d":"d","dateFormatItem-Ed":"E d","dateFormatItem-h":"hh a","dateFormatItem-hm":"hh:mm a","dateFormatItem-Hm":"HH:mm","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-M":"L","dateFormatItem-Md":"d/M","dateFormatItem-MEd":"E d/M","dateFormatItem-MMdd":"dd/MM","dateFormatItem-MMM":"LLL","dateFormatItem-MMMd":"d MMM","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-MMMMdd":"dd MMMM","dateFormatItem-ms":"mm:ss","dateFormatItem-y":"y",
+"dateFormatItem-yM":"M/y","dateFormatItem-yMd":"d/M/y","dateFormatItem-yMEd":"E, d/M/y","dateFormatItem-yMMM":"MMM y","dateFormatItem-yMMMd":"d MMM y","dateFormatItem-yMMMEd":"E d MMM y","dateFormatItem-yQ":"Q-yyyy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yyMM":"MM/yy","dateFormatItem-yyQ":"Q yy","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yyyyMMMM":"MMMM y","field-era":"era","field-year":"anno","field-year-relative+-1":"Anno scorso","field-year-relative+0":"Questo anno","field-year-relative+1":"Anno prossimo",
+"field-month":"mese","field-month-relative+-1":"Mese scorso","field-month-relative+0":"Questo mese","field-month-relative+1":"Mese prossimo","field-week":"settimana","field-week-relative+-1":"Settimana scorsa","field-week-relative+0":"Questa settimana","field-week-relative+1":"Settimana prossima","field-day":"giorno","field-day-relative+-2":"l'altro ieri","field-day-relative+-1":"ieri","field-day-relative+0":"oggi","field-day-relative+1":"domani","field-day-relative+2":"dopodomani","field-weekday":"giorno della settimana",
+"field-dayperiod":"periodo del giorno","field-hour":"ora","field-minute":"minuto","field-second":"secondo","field-zone":"zona","days-format-narrow":"D,L,M,M,G,V,S".split(","),"days-standAlone-abbr":"dom,lun,mar,mer,gio,ven,sab".split(","),eraNarrow:["aC","dC"]});//>>built
+define("dojo/cldr/nls/it/islamic",{"dateFormat-full":"EEEE d MMMM y G","dateFormat-long":"dd MMMM y G","dateFormat-medium":"dd/MMM/y G","dateFormat-short":"dd/MM/y G","dateFormatItem-d":"d","dateFormatItem-Ed":"E d","dateFormatItem-h":"hh a","dateFormatItem-hm":"hh:mm a","dateFormatItem-Hm":"HH:mm","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-M":"L","dateFormatItem-Md":"d/M","dateFormatItem-MEd":"E d/M","dateFormatItem-MMdd":"dd/MM","dateFormatItem-MMM":"LLL",
+"dateFormatItem-MMMd":"d MMM","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-MMMMdd":"dd MMMM","dateFormatItem-ms":"mm:ss","dateFormatItem-yQ":"Q-y G","dateFormatItem-yQQQ":"QQQ y G","dateFormatItem-yyMM":"MM/y G","dateFormatItem-yyQ":"Q y G","dateFormatItem-yyQQQQ":"QQQQ y G","dateFormatItem-yyyy":"y G","dateFormatItem-yyyyM":"M/y G","dateFormatItem-yyyyMd":"d/M/y G","dateFormatItem-yyyyMEd":"E, d/M/y G","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-yyyyMMMEd":"E d MMM y G",
+"dateFormatItem-yyyyMMMM":"MMMM y G","days-format-abbr":"dom,lun,mar,mer,gio,ven,sab".split(","),"days-format-wide":"domenica,luned\u00ec,marted\u00ec,mercoled\u00ec,gioved\u00ec,venerd\u00ec,sabato".split(","),"days-standAlone-narrow":"D,L,M,M,G,V,S".split(","),"days-standAlone-wide":"Domenica,Luned\u00ec,Marted\u00ec,Mercoled\u00ec,Gioved\u00ec,Venerd\u00ec,Sabato".split(","),"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-format-wide":["1o trimestre","2o trimestre","3o trimestre","4o trimestre"],
+"quarters-standAlone-abbr":["T1"],"quarters-standAlone-wide":["1\u00ba trimestre","2\u00ba trimestre","3\u00ba trimestre","4\u00ba trimestre"],"dayPeriods-format-wide-am":"m.","dayPeriods-format-wide-pm":"p.","dateFormatItem-yM":"M/y","dateFormatItem-yMd":"d/M/y","dateFormatItem-yMEd":"E, d/M/y","dateFormatItem-yMMM":"MMM y","dateFormatItem-yMMMd":"d MMM y","dateFormatItem-yMMMEd":"E d MMM y"});//>>built
+define("dojo/cldr/nls/it/number",{decimal:",",group:".",percentSign:"%",plusSign:"+",minusSign:"-",perMille:"\u2030",infinity:"\u221e",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0B",scientificFormat:"#E0",percentFormat:"#,##0%",currencyFormat:"\u00a4\u00a0#,##0.00"});//>>built
+define("dojo/cldr/nls/nl/buddhist",{"dateFormat-full":"EEEE d MMMM y G","dateFormat-long":"d MMMM y G","dateFormat-medium":"d MMM y G","dateFormat-short":"dd-MM-yy G","dateFormatItem-d":"d","dateFormatItem-Ed":"E d","dateFormatItem-Gy":"y G","dateFormatItem-Hm":"HH:mm","dateFormatItem-M":"L","dateFormatItem-Md":"d-M","dateFormatItem-MEd":"E d-M","dateFormatItem-MMd":"d-MM","dateFormatItem-MMdd":"dd-MM","dateFormatItem-MMM":"LLL","dateFormatItem-MMMd":"d MMM","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-MMMMd":"d MMMM",
+"dateFormatItem-ms":"mm:ss","dateFormatItem-y":"y G","dateFormatItem-yM":"M-y G","dateFormatItem-yMd":"d-M-y G","dateFormatItem-yMEd":"E d-M-y G","dateFormatItem-yMMM":"MMM y G","dateFormatItem-yMMMd":"d MMM y G","dateFormatItem-yMMMEd":"E d MMM y G","dateFormatItem-yQ":"Q y G","dateFormatItem-yQQQ":"QQQ y G","dateFormatItem-yyMM":"MM-yy G","dateFormatItem-yyMMM":"MMM yy G","dateFormatItem-yyQ":"Q yy G","dateFormatItem-yyQQQQ":"QQQQ yy G","dateFormatItem-yyyyMMMM":"MMMM y G","days-format-abbr":"zo,ma,di,wo,do,vr,za".split(","),
+"days-format-wide":"zondag,maandag,dinsdag,woensdag,donderdag,vrijdag,zaterdag".split(","),"days-standAlone-narrow":"Z,M,D,W,D,V,Z".split(","),"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-format-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"months-format-abbr":"jan.,feb.,mrt.,apr.,mei,jun.,jul.,aug.,sep.,okt.,nov.,dec.".split(","),"months-format-wide":"januari,februari,maart,april,mei,juni,juli,augustus,september,oktober,november,december".split(","),"months-standAlone-abbr":"jan,feb,mrt,apr,mei,jun,jul,aug,sep,okt,nov,dec".split(","),
+"months-standAlone-narrow":"J,F,M,A,M,J,J,A,S,O,N,D".split(",")});//>>built
+define("dojo/cldr/nls/nl/currency",{AUD_displayName:"Australische dollar",CAD_displayName:"Canadese dollar",CHF_displayName:"Zwitserse franc",CNY_displayName:"Chinese yuan renminbi",EUR_displayName:"Euro",GBP_displayName:"Brits pond sterling",HKD_displayName:"Hongkongse dollar",JPY_displayName:"Japanse yen",USD_displayName:"Amerikaanse dollar"});//>>built
+define("dojo/cldr/nls/nl/gregorian",{"months-format-abbr":"jan.,feb.,mrt.,apr.,mei,jun.,jul.,aug.,sep.,okt.,nov.,dec.".split(","),"months-format-wide":"januari,februari,maart,april,mei,juni,juli,augustus,september,oktober,november,december".split(","),"months-standAlone-abbr":"jan,feb,mrt,apr,mei,jun,jul,aug,sep,okt,nov,dec".split(","),"months-standAlone-narrow":"J,F,M,A,M,J,J,A,S,O,N,D".split(","),"days-format-abbr":"zo,ma,di,wo,do,vr,za".split(","),"days-format-wide":"zondag,maandag,dinsdag,woensdag,donderdag,vrijdag,zaterdag".split(","),
+"days-standAlone-narrow":"Z,M,D,W,D,V,Z".split(","),"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-format-narrow":["1","2","3","4"],"quarters-format-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"dayPeriods-format-abbr-noon":"12 uur 's middags","dayPeriods-format-narrow-noon":"n","dayPeriods-format-wide-am":"AM","dayPeriods-format-wide-noon":"12 uur 's middags","dayPeriods-format-wide-pm":"PM",eraNames:["Voor Christus","na Christus"],eraAbbr:["v. Chr.","n. Chr."],"dateFormat-full":"EEEE d MMMM y",
+"dateFormat-long":"d MMMM y","dateFormat-medium":"d MMM y","dateFormat-short":"dd-MM-yy","timeFormat-full":"HH:mm:ss zzzz","timeFormat-long":"HH:mm:ss z","timeFormat-medium":"HH:mm:ss","timeFormat-short":"HH:mm","dateFormatItem-d":"d","dateFormatItem-Ed":"E d","dateFormatItem-Hm":"HH:mm","dateFormatItem-M":"L","dateFormatItem-Md":"d-M","dateFormatItem-MEd":"E d-M","dateFormatItem-MMd":"d-MM","dateFormatItem-MMdd":"dd-MM","dateFormatItem-MMM":"LLL","dateFormatItem-MMMd":"d-MMM","dateFormatItem-MMMEd":"E d MMM",
+"dateFormatItem-MMMMd":"d MMMM","dateFormatItem-ms":"mm:ss","dateFormatItem-y":"y","dateFormatItem-yM":"M-y","dateFormatItem-yMd":"d-M-y","dateFormatItem-yMEd":"E d-M-y","dateFormatItem-yMMM":"MMM y","dateFormatItem-yMMMd":"d MMM y","dateFormatItem-yMMMEd":"E d MMM y","dateFormatItem-yQ":"Q yyyy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yyMM":"MM-yy","dateFormatItem-yyMMM":"MMM yy","dateFormatItem-yyQ":"Q yy","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yyyyMMMM":"MMMM y","field-era":"Tijdperk",
+"field-year":"Jaar","field-year-relative+-1":"Vorig jaar","field-year-relative+0":"Dit jaar","field-year-relative+1":"Volgend jaar","field-month":"Maand","field-month-relative+-1":"Vorige maand","field-month-relative+0":"Deze maand","field-month-relative+1":"Volgende maand","field-week":"week","field-week-relative+-1":"Vorige week","field-week-relative+0":"Deze week","field-week-relative+1":"Volgende week","field-day":"Dag","field-day-relative+-2":"Eergisteren","field-day-relative+-1":"Gisteren",
+"field-day-relative+0":"Vandaag","field-day-relative+1":"Morgen","field-day-relative+2":"Overmorgen","field-weekday":"Dag van de week","field-dayperiod":"AM/PM","field-hour":"Uur","field-minute":"Minuut","field-second":"Seconde","field-zone":"Zone","months-format-narrow":"J,F,M,A,M,J,J,A,S,O,N,D".split(","),"months-standAlone-wide":"januari,februari,maart,april,mei,juni,juli,augustus,september,oktober,november,december".split(","),"days-format-narrow":"Z,M,D,W,D,V,Z".split(","),"days-standAlone-abbr":"zo,ma,di,wo,do,vr,za".split(","),
+"days-standAlone-wide":"zondag,maandag,dinsdag,woensdag,donderdag,vrijdag,zaterdag".split(","),"quarters-standAlone-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],eraNarrow:["v. Chr.","n. Chr."]});//>>built
+define("dojo/cldr/nls/nl/hebrew",{"months-format-wide":"Tisjrie,Chesjwan,Kislev,Tevet,Sjevat,Adar A,Adar,Nisan,Ijar,Sivan,Tammoez,Av,Elloel".split(","),"months-format-wide-leap":"Adar B","months-format-abbr":"Tisjrie,Chesjwan,Kislev,Tevet,Sjevat,Adar A,Adar,Nisan,Ijar,Sivan,Tammoez,Av,Elloel".split(","),"months-standAlone-abbr":"Tisjrie,Chesjwan,Kislev,Tevet,Sjevat,Adar A,Adar,Nisan,Ijar,Sivan,Tammoez,Av,Elloel".split(","),"months-standAlone-wide":"Tisjrie,Chesjwan,Kislev,Tevet,Sjevat,Adar A,Adar,Nisan,Ijar,Sivan,Tammoez,Av,Elloel".split(","),
+"days-format-abbr":"zo,ma,di,wo,do,vr,za".split(","),"days-format-wide":"zondag,maandag,dinsdag,woensdag,donderdag,vrijdag,zaterdag".split(","),"days-standAlone-narrow":"Z,M,D,W,D,V,Z".split(","),"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-format-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"dateFormat-full":"EEEE d MMMM y","dateFormat-long":"d MMMM y","dateFormat-medium":"d MMM y","dateFormat-short":"dd-MM-yy","dateFormatItem-Ed":"E d","dateFormatItem-Md":"d-M","dateFormatItem-MEd":"E d-M",
+"dateFormatItem-MMMd":"d-MMM","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-yM":"M-y","dateFormatItem-yMd":"d-M-y","dateFormatItem-yMEd":"E d-M-y","dateFormatItem-yMMM":"MMM y","dateFormatItem-yMMMd":"d MMM y","dateFormatItem-yMMMEd":"E d MMM y","dateFormatItem-yQ":"Q yyyy","dateFormatItem-yQQQ":"QQQ y"});//>>built
+define("dojo/cldr/nls/nl/islamic",{"months-format-abbr":"Moeh.,Saf.,Rab. I,Rab. II,Joem. I,Joem. II,Raj.,Sja.,Ram.,Sjaw.,Doe al k.,Doe al h.".split(","),"months-format-wide":"Moeharram,Safar,Rabi\u02bba al awal,Rabi\u02bba al thani,Joemad\u02bbal awal,Joemad\u02bbal thani,Rajab,Sja\u02bbaban,Ramadan,Sjawal,Doe al ka\u02bbaba,Doe al hizja".split(","),"months-standAlone-narrow":"1,2,3,4,5,6,7,8,9,10,11,12".split(","),eraAbbr:["Sa\u02bbna Hizjria"],"dateFormat-full":"EEEE d MMMM y G","dateFormat-long":"d MMMM y G",
+"dateFormat-medium":"d MMM y G","dateFormat-short":"dd-MM-yy G","dateFormatItem-d":"d","dateFormatItem-Ed":"E d","dateFormatItem-Hm":"HH:mm","dateFormatItem-M":"L","dateFormatItem-Md":"d-M","dateFormatItem-MEd":"E d-M","dateFormatItem-MMd":"d-MM","dateFormatItem-MMdd":"dd-MM","dateFormatItem-MMM":"LLL","dateFormatItem-MMMd":"d MMM","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-MMMMd":"d MMMM","dateFormatItem-ms":"mm:ss","dateFormatItem-yyMM":"MM-yy G","dateFormatItem-yyMMM":"MMM yy G","dateFormatItem-yyQ":"Q yy G",
+"dateFormatItem-yyQQQQ":"QQQQ yy G","dateFormatItem-yyyy":"y G","dateFormatItem-yyyyM":"M-y G","dateFormatItem-yyyyMd":"d-M-y G","dateFormatItem-yyyyMEd":"E d-M-y G","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-yyyyMMMEd":"E d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","dateFormatItem-yyyyQ":"Q y G","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-abbr":"Moeh.,Saf.,Rab. I,Rab. II,Joem. I,Joem. II,Raj.,Sja.,Ram.,Sjaw.,Doe al k.,Doe al h.".split(","),
+"months-standAlone-wide":"Moeharram,Safar,Rabi\u02bba al awal,Rabi\u02bba al thani,Joemad\u02bbal awal,Joemad\u02bbal thani,Rajab,Sja\u02bbaban,Ramadan,Sjawal,Doe al ka\u02bbaba,Doe al hizja".split(","),eraNames:["Sa\u02bbna Hizjria"],eraNarrow:["Sa\u02bbna Hizjria"],"days-format-abbr":"zo,ma,di,wo,do,vr,za".split(","),"days-format-wide":"zondag,maandag,dinsdag,woensdag,donderdag,vrijdag,zaterdag".split(","),"days-standAlone-narrow":"Z,M,D,W,D,V,Z".split(","),"quarters-format-abbr":["K1","K2","K3",
+"K4"],"quarters-format-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"dateFormatItem-yM":"M-y","dateFormatItem-yMd":"d-M-y","dateFormatItem-yMEd":"E d-M-y","dateFormatItem-yMMM":"MMM y","dateFormatItem-yMMMd":"d MMM y","dateFormatItem-yMMMEd":"E d MMM y","dateFormatItem-yQ":"Q yyyy","dateFormatItem-yQQQ":"QQQ y"});//>>built
+define("dojo/cldr/nls/nl/number",{decimal:",",group:".",list:";",percentSign:"%",plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0bilj",scientificFormat:"#E0",percentFormat:"#,##0%",currencyFormat:"\u00a4\u00a0#,##0.00;\u00a4\u00a0#,##0.00-"});//>>built
define("dojo/cldr/nls/number",{root:{decimal:".",group:",",list:";",percentSign:"%",plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000T",scientificFormat:"#E0",percentFormat:"#,##0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]",
-"currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"\u00a4\u00a0#,##0.00"},ar:!0,ca:!0,cs:!0,da:!0,de:!0,el:!0,en:!0,"en-gb":!0,es:!0,fi:!0,fr:!0,"fr-ch":!0,he:!0,hu:!0,it:!0,ja:!0,ko:!0,nb:!0,nl:!0,pl:!0,pt:!0,"pt-pt":!0,ro:!0,ru:!0,sk:!0,sl:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-hant":!0,"zh-hk":!0,"zh-tw":!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/number.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/ru/buddhist.js] */
-//>>built
-define("dojo/cldr/nls/ru/buddhist",{"dateFormat-full":"EEEE, d MMMM y\u00a0'\u0433'. G","dateFormat-long":"d MMMM y\u00a0'\u0433'. G","dateFormat-medium":"dd.MM.yyyy G","dateFormat-short":"dd.MM.yy G","dateFormatItem-d":"d","dateFormatItem-E":"ccc","dateFormatItem-Ed":"E, d","dateFormatItem-Gy":"y G","dateFormatItem-H":"H","dateFormatItem-Hm":"H:mm","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-M":"L","dateFormatItem-Md":"dd.MM","dateFormatItem-MEd":"E, dd.MM","dateFormatItem-MMdd":"dd.MM","dateFormatItem-MMM":"LLL",
-"dateFormatItem-MMMd":"d MMM","dateFormatItem-MMMEd":"ccc, d MMM","dateFormatItem-ms":"mm:ss","dateFormatItem-y":"y G","dateFormatItem-yM":"MM.y G","dateFormatItem-yMd":"dd.MM.y G","dateFormatItem-yMEd":"E, dd.MM.y G","dateFormatItem-yMMM":"LLL y G","dateFormatItem-yMMMd":"d MMM y G","dateFormatItem-yMMMEd":"E, d MMM y G","dateFormatItem-yQQQ":"QQQ y G","dateFormatItem-yyMM":"MM.yy G","dateFormatItem-yyMMM":"LLL yy G","dateFormatItem-yyMMMEd":"E, d MMM yy G","dateFormatItem-yyQ":"Q yy G","dateFormatItem-yyyy":"y G",
-"dateFormatItem-yyyyLLLL":"LLLL y G","dateFormatItem-yyyyMM":"MM.yyyy G","dateFormatItem-yyyyMMMM":"LLLL y G","dateFormatItem-yyyyQQQQ":"QQQQ y\u00a0'\u0433'. G","days-format-abbr":"\u0432\u0441,\u043f\u043d,\u0432\u0442,\u0441\u0440,\u0447\u0442,\u043f\u0442,\u0441\u0431".split(","),"days-format-narrow":"\u0412,\u041f\u043d,\u0412\u0442,\u0421,\u0427,\u041f,\u0421".split(","),"days-format-wide":"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435,\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a,\u0432\u0442\u043e\u0440\u043d\u0438\u043a,\u0441\u0440\u0435\u0434\u0430,\u0447\u0435\u0442\u0432\u0435\u0440\u0433,\u043f\u044f\u0442\u043d\u0438\u0446\u0430,\u0441\u0443\u0431\u0431\u043e\u0442\u0430".split(","),
-"days-standAlone-abbr":"\u0412\u0441,\u041f\u043d,\u0412\u0442,\u0421\u0440,\u0427\u0442,\u041f\u0442,\u0421\u0431".split(","),"days-standAlone-narrow":"\u0412,\u041f,\u0412,\u0421,\u0427,\u041f,\u0421".split(","),"days-standAlone-wide":"\u0412\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435,\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a,\u0412\u0442\u043e\u0440\u043d\u0438\u043a,\u0421\u0440\u0435\u0434\u0430,\u0427\u0435\u0442\u0432\u0435\u0440\u0433,\u041f\u044f\u0442\u043d\u0438\u0446\u0430,\u0421\u0443\u0431\u0431\u043e\u0442\u0430".split(","),
-"quarters-format-abbr":["1-\u0439 \u043a\u0432.","2-\u0439 \u043a\u0432.","3-\u0439 \u043a\u0432.","4-\u0439 \u043a\u0432."],"quarters-format-wide":["1-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b","2-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b","3-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b","4-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b"],"dayPeriods-format-abbr-am":"\u0434\u043e \u043f\u043e\u043b\u0443\u0434\u043d\u044f","dayPeriods-format-abbr-pm":"\u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0434\u043d\u044f",
-"dayPeriods-format-narrow-am":"\u0434\u043f","dayPeriods-format-narrow-pm":"\u043f\u043f","dayPeriods-format-wide-am":"\u0434\u043e \u043f\u043e\u043b\u0443\u0434\u043d\u044f","dayPeriods-format-wide-pm":"\u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0434\u043d\u044f","dateFormatItem-yQ":"QQQ y '\u0433'.","timeFormat-full":"H:mm:ss zzzz","timeFormat-long":"H:mm:ss z","timeFormat-medium":"H:mm:ss","timeFormat-short":"H:mm","months-format-abbr":"\u044f\u043d\u0432.,\u0444\u0435\u0432\u0440.,\u043c\u0430\u0440\u0442\u0430,\u0430\u043f\u0440.,\u043c\u0430\u044f,\u0438\u044e\u043d\u044f,\u0438\u044e\u043b\u044f,\u0430\u0432\u0433.,\u0441\u0435\u043d\u0442.,\u043e\u043a\u0442.,\u043d\u043e\u044f\u0431.,\u0434\u0435\u043a.".split(","),
-"months-format-narrow":"\u042f,\u0424,\u041c,\u0410,\u041c,\u0418,\u0418,\u0410,\u0421,\u041e,\u041d,\u0414".split(","),"months-format-wide":"\u044f\u043d\u0432\u0430\u0440\u044f,\u0444\u0435\u0432\u0440\u0430\u043b\u044f,\u043c\u0430\u0440\u0442\u0430,\u0430\u043f\u0440\u0435\u043b\u044f,\u043c\u0430\u044f,\u0438\u044e\u043d\u044f,\u0438\u044e\u043b\u044f,\u0430\u0432\u0433\u0443\u0441\u0442\u0430,\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f,\u043e\u043a\u0442\u044f\u0431\u0440\u044f,\u043d\u043e\u044f\u0431\u0440\u044f,\u0434\u0435\u043a\u0430\u0431\u0440\u044f".split(","),
-"months-standAlone-abbr":"\u042f\u043d\u0432.,\u0424\u0435\u0432\u0440.,\u041c\u0430\u0440\u0442,\u0410\u043f\u0440.,\u041c\u0430\u0439,\u0418\u044e\u043d\u044c,\u0418\u044e\u043b\u044c,\u0410\u0432\u0433.,\u0421\u0435\u043d\u0442.,\u041e\u043a\u0442.,\u041d\u043e\u044f\u0431.,\u0414\u0435\u043a.".split(","),"months-standAlone-narrow":"\u042f,\u0424,\u041c,\u0410,\u041c,\u0418,\u0418,\u0410,\u0421,\u041e,\u041d,\u0414".split(","),"months-standAlone-wide":"\u042f\u043d\u0432\u0430\u0440\u044c,\u0424\u0435\u0432\u0440\u0430\u043b\u044c,\u041c\u0430\u0440\u0442,\u0410\u043f\u0440\u0435\u043b\u044c,\u041c\u0430\u0439,\u0418\u044e\u043d\u044c,\u0418\u044e\u043b\u044c,\u0410\u0432\u0433\u0443\u0441\u0442,\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c,\u041e\u043a\u0442\u044f\u0431\u0440\u044c,\u041d\u043e\u044f\u0431\u0440\u044c,\u0414\u0435\u043a\u0430\u0431\u0440\u044c".split(",")});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/ru/buddhist.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/ru/currency.js] */
-//>>built
-define("dojo/cldr/nls/ru/currency",{AUD_displayName:"\u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u0434\u043e\u043b\u043b\u0430\u0440",CAD_displayName:"\u041a\u0430\u043d\u0430\u0434\u0441\u043a\u0438\u0439 \u0434\u043e\u043b\u043b\u0430\u0440",CHF_displayName:"\u0428\u0432\u0435\u0439\u0446\u0430\u0440\u0441\u043a\u0438\u0439 \u0444\u0440\u0430\u043d\u043a",CNY_displayName:"\u042e\u0430\u043d\u044c \u0420\u0435\u043d\u043c\u0438\u043d\u0431\u0438",EUR_displayName:"\u0415\u0432\u0440\u043e",
-GBP_displayName:"\u0410\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u0444\u0443\u043d\u0442 \u0441\u0442\u0435\u0440\u043b\u0438\u043d\u0433\u043e\u0432",HKD_displayName:"\u0413\u043e\u043d\u043a\u043e\u043d\u0433\u0441\u043a\u0438\u0439 \u0434\u043e\u043b\u043b\u0430\u0440",JPY_displayName:"\u042f\u043f\u043e\u043d\u0441\u043a\u0430\u044f \u0438\u0435\u043d\u0430",JPY_symbol:"\u00a5",USD_displayName:"\u0414\u043e\u043b\u043b\u0430\u0440 \u0421\u0428\u0410",USD_symbol:"$"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/ru/currency.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/ru/gregorian.js] */
-//>>built
-define("dojo/cldr/nls/ru/gregorian",{"months-format-abbr":"\u044f\u043d\u0432.,\u0444\u0435\u0432\u0440.,\u043c\u0430\u0440\u0442\u0430,\u0430\u043f\u0440.,\u043c\u0430\u044f,\u0438\u044e\u043d\u044f,\u0438\u044e\u043b\u044f,\u0430\u0432\u0433.,\u0441\u0435\u043d\u0442.,\u043e\u043a\u0442.,\u043d\u043e\u044f\u0431.,\u0434\u0435\u043a.".split(","),"months-format-narrow":"\u042f,\u0424,\u041c,\u0410,\u041c,\u0418,\u0418,\u0410,\u0421,\u041e,\u041d,\u0414".split(","),"months-format-wide":"\u044f\u043d\u0432\u0430\u0440\u044f,\u0444\u0435\u0432\u0440\u0430\u043b\u044f,\u043c\u0430\u0440\u0442\u0430,\u0430\u043f\u0440\u0435\u043b\u044f,\u043c\u0430\u044f,\u0438\u044e\u043d\u044f,\u0438\u044e\u043b\u044f,\u0430\u0432\u0433\u0443\u0441\u0442\u0430,\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f,\u043e\u043a\u0442\u044f\u0431\u0440\u044f,\u043d\u043e\u044f\u0431\u0440\u044f,\u0434\u0435\u043a\u0430\u0431\u0440\u044f".split(","),
-"months-standAlone-abbr":"\u042f\u043d\u0432.,\u0424\u0435\u0432\u0440.,\u041c\u0430\u0440\u0442,\u0410\u043f\u0440.,\u041c\u0430\u0439,\u0418\u044e\u043d\u044c,\u0418\u044e\u043b\u044c,\u0410\u0432\u0433.,\u0421\u0435\u043d\u0442.,\u041e\u043a\u0442.,\u041d\u043e\u044f\u0431.,\u0414\u0435\u043a.".split(","),"months-standAlone-narrow":"\u042f,\u0424,\u041c,\u0410,\u041c,\u0418,\u0418,\u0410,\u0421,\u041e,\u041d,\u0414".split(","),"months-standAlone-wide":"\u042f\u043d\u0432\u0430\u0440\u044c,\u0424\u0435\u0432\u0440\u0430\u043b\u044c,\u041c\u0430\u0440\u0442,\u0410\u043f\u0440\u0435\u043b\u044c,\u041c\u0430\u0439,\u0418\u044e\u043d\u044c,\u0418\u044e\u043b\u044c,\u0410\u0432\u0433\u0443\u0441\u0442,\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c,\u041e\u043a\u0442\u044f\u0431\u0440\u044c,\u041d\u043e\u044f\u0431\u0440\u044c,\u0414\u0435\u043a\u0430\u0431\u0440\u044c".split(","),
-"days-format-abbr":"\u0432\u0441,\u043f\u043d,\u0432\u0442,\u0441\u0440,\u0447\u0442,\u043f\u0442,\u0441\u0431".split(","),"days-format-narrow":"\u0412,\u041f\u043d,\u0412\u0442,\u0421,\u0427,\u041f,\u0421".split(","),"days-format-wide":"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435,\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a,\u0432\u0442\u043e\u0440\u043d\u0438\u043a,\u0441\u0440\u0435\u0434\u0430,\u0447\u0435\u0442\u0432\u0435\u0440\u0433,\u043f\u044f\u0442\u043d\u0438\u0446\u0430,\u0441\u0443\u0431\u0431\u043e\u0442\u0430".split(","),
-"days-standAlone-abbr":"\u0412\u0441,\u041f\u043d,\u0412\u0442,\u0421\u0440,\u0427\u0442,\u041f\u0442,\u0421\u0431".split(","),"days-standAlone-narrow":"\u0412,\u041f,\u0412,\u0421,\u0427,\u041f,\u0421".split(","),"days-standAlone-wide":"\u0412\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435,\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a,\u0412\u0442\u043e\u0440\u043d\u0438\u043a,\u0421\u0440\u0435\u0434\u0430,\u0427\u0435\u0442\u0432\u0435\u0440\u0433,\u041f\u044f\u0442\u043d\u0438\u0446\u0430,\u0421\u0443\u0431\u0431\u043e\u0442\u0430".split(","),
-"quarters-format-abbr":["1-\u0439 \u043a\u0432.","2-\u0439 \u043a\u0432.","3-\u0439 \u043a\u0432.","4-\u0439 \u043a\u0432."],"quarters-format-narrow":["1","2","3","4"],"quarters-format-wide":["1-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b","2-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b","3-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b","4-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b"],"dayPeriods-format-abbr-am":"\u0434\u043e \u043f\u043e\u043b\u0443\u0434\u043d\u044f","dayPeriods-format-abbr-pm":"\u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0434\u043d\u044f",
-"dayPeriods-format-narrow-am":"\u0434\u043f","dayPeriods-format-narrow-pm":"\u043f\u043f","dayPeriods-format-wide-am":"\u0434\u043e \u043f\u043e\u043b\u0443\u0434\u043d\u044f","dayPeriods-format-wide-pm":"\u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0434\u043d\u044f",eraNames:["\u0434\u043e \u043d.\u044d.","\u043d.\u044d."],eraAbbr:["\u0434\u043e \u043d.\u044d.","\u043d.\u044d."],eraNarrow:["\u0434\u043e \u043d.\u044d.","\u043d.\u044d."],"dateFormat-full":"EEEE, d MMMM y\u00a0'\u0433'.",
-"dateFormat-long":"d MMMM y\u00a0'\u0433'.","dateFormat-medium":"dd.MM.yyyy","dateFormat-short":"dd.MM.yy","timeFormat-full":"H:mm:ss zzzz","timeFormat-long":"H:mm:ss z","timeFormat-medium":"H:mm:ss","timeFormat-short":"H:mm","dateTimeFormat-full":"{1}, {0}","dateTimeFormat-long":"{1}, {0}","dateTimeFormat-medium":"{1}, {0}","dateTimeFormat-short":"{1}, {0}","dateFormatItem-d":"d","dateFormatItem-E":"ccc","dateFormatItem-Ed":"ccc, d","dateFormatItem-H":"H","dateFormatItem-Hm":"H:mm","dateFormatItem-Hms":"H:mm:ss",
-"dateFormatItem-M":"L","dateFormatItem-Md":"dd.MM","dateFormatItem-MEd":"E, dd.MM","dateFormatItem-MMdd":"dd.MM","dateFormatItem-MMM":"LLL","dateFormatItem-MMMd":"d MMM","dateFormatItem-MMMEd":"ccc, d MMM","dateFormatItem-ms":"mm:ss","dateFormatItem-y":"y","dateFormatItem-yM":"MM.y","dateFormatItem-yMd":"dd.MM.y","dateFormatItem-yMEd":"E, dd.MM.y","dateFormatItem-yMMM":"LLL y","dateFormatItem-yMMMd":"d MMM y\u00a0'\u0433'.","dateFormatItem-yMMMEd":"E, d MMM y","dateFormatItem-yQ":"QQQ y '\u0433'.",
-"dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yyMM":"MM.yy","dateFormatItem-yyMMM":"LLL yy","dateFormatItem-yyMMMEd":"E, d MMM yy","dateFormatItem-yyQ":"Q yy","dateFormatItem-yyyy":"y","dateFormatItem-yyyyLLLL":"LLLL y","dateFormatItem-yyyyMM":"MM.yyyy","dateFormatItem-yyyyMMMM":"LLLL y","dateFormatItem-yyyyQQQQ":"QQQQ y\u00a0'\u0433'.","field-era":"\u042d\u0440\u0430","field-year":"\u0413\u043e\u0434","field-year-relative+-1":"\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u0433\u043e\u0434\u0443",
-"field-year-relative+0":"\u0412 \u044d\u0442\u043e\u043c \u0433\u043e\u0434\u0443","field-year-relative+1":"\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0433\u043e\u0434\u0443","field-month":"\u041c\u0435\u0441\u044f\u0446","field-month-relative+-1":"\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u043c\u0435\u0441\u044f\u0446\u0435","field-month-relative+0":"\u0412 \u044d\u0442\u043e\u043c \u043c\u0435\u0441\u044f\u0446\u0435","field-month-relative+1":"\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043c\u0435\u0441\u044f\u0446\u0435",
-"field-week":"\u041d\u0435\u0434\u0435\u043b\u044f","field-week-relative+-1":"\u041d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u043d\u0435\u0434\u0435\u043b\u0435","field-week-relative+0":"\u041d\u0430 \u044d\u0442\u043e\u0439 \u043d\u0435\u0434\u0435\u043b\u0435","field-week-relative+1":"\u041d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043d\u0435\u0434\u0435\u043b\u0435","field-day":"\u0414\u0435\u043d\u044c","field-day-relative+-2":"\u041f\u043e\u0437\u0430\u0432\u0447\u0435\u0440\u0430",
-"field-day-relative+-1":"\u0412\u0447\u0435\u0440\u0430","field-day-relative+0":"\u0421\u0435\u0433\u043e\u0434\u043d\u044f","field-day-relative+1":"\u0417\u0430\u0432\u0442\u0440\u0430","field-day-relative+2":"\u041f\u043e\u0441\u043b\u0435\u0437\u0430\u0432\u0442\u0440\u0430","field-weekday":"\u0414\u0435\u043d\u044c \u043d\u0435\u0434\u0435\u043b\u0438","field-dayperiod":"\u0414\u041f/\u041f\u041f","field-hour":"\u0427\u0430\u0441","field-minute":"\u041c\u0438\u043d\u0443\u0442\u0430","field-second":"\u0421\u0435\u043a\u0443\u043d\u0434\u0430",
-"field-zone":"\u0427\u0430\u0441\u043e\u0432\u043e\u0439 \u043f\u043e\u044f\u0441","quarters-standAlone-abbr":["1-\u0439 \u043a\u0432.","2-\u0439 \u043a\u0432.","3-\u0439 \u043a\u0432.","4-\u0439 \u043a\u0432."],"quarters-standAlone-wide":["1-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b","2-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b","3-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b","4-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b"]});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/ru/gregorian.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/ru/hebrew.js] */
-//>>built
-define("dojo/cldr/nls/ru/hebrew",{"months-format-abbr":"\u0422\u0438\u0448\u0440\u0435\u0439,\u0425\u0435\u0448\u0432\u0430\u043d,\u041a\u0438\u0441\u043b\u0435\u0432,\u0422\u0435\u0432\u0435\u0442,\u0428\u0435\u0432\u0430\u0442,\u0410\u0434\u0430\u0440 I,\u0410\u0434\u0430\u0440,\u041d\u0438\u0441\u0430\u043d,\u0418\u044f\u0440,\u0421\u0438\u0432\u0430\u043d,\u0422\u0430\u043c\u043c\u0443\u0437,\u0410\u0432,\u042d\u043b\u0443\u043b".split(","),"months-format-abbr-leap":"\u0410\u0434\u0430\u0440 II",
-"months-format-wide":"\u0422\u0438\u0448\u0440\u0435\u0439,\u0425\u0435\u0448\u0432\u0430\u043d,\u041a\u0438\u0441\u043b\u0435\u0432,\u0422\u0435\u0432\u0435\u0442,\u0428\u0435\u0432\u0430\u0442,\u0410\u0434\u0430\u0440 I,\u0410\u0434\u0430\u0440,\u041d\u0438\u0441\u0430\u043d,\u0418\u044f\u0440,\u0421\u0438\u0432\u0430\u043d,\u0422\u0430\u043c\u043c\u0443\u0437,\u0410\u0432,\u042d\u043b\u0443\u043b".split(","),"months-format-wide-leap":"\u0410\u0434\u0430\u0440 II","months-standAlone-abbr":"\u0422\u0438\u0448\u0440\u0435\u0439,\u0425\u0435\u0448\u0432\u0430\u043d,\u041a\u0438\u0441\u043b\u0435\u0432,\u0422\u0435\u0432\u0435\u0442,\u0428\u0435\u0432\u0430\u0442,\u0410\u0434\u0430\u0440 I,\u0410\u0434\u0430\u0440,\u041d\u0438\u0441\u0430\u043d,\u0418\u044f\u0440,\u0421\u0438\u0432\u0430\u043d,\u0422\u0430\u043c\u043c\u0443\u0437,\u0410\u0432,\u042d\u043b\u0443\u043b".split(","),
-"months-standAlone-abbr-leap":"\u0410\u0434\u0430\u0440 II","months-standAlone-wide":"\u0422\u0438\u0448\u0440\u0435\u0439,\u0425\u0435\u0448\u0432\u0430\u043d,\u041a\u0438\u0441\u043b\u0435\u0432,\u0422\u0435\u0432\u0435\u0442,\u0428\u0435\u0432\u0430\u0442,\u0410\u0434\u0430\u0440 I,\u0410\u0434\u0430\u0440,\u041d\u0438\u0441\u0430\u043d,\u0418\u044f\u0440,\u0421\u0438\u0432\u0430\u043d,\u0422\u0430\u043c\u043c\u0443\u0437,\u0410\u0432,\u042d\u043b\u0443\u043b".split(","),"months-standAlone-wide-leap":"\u0410\u0434\u0430\u0440 II",
-"days-format-abbr":"\u0432\u0441,\u043f\u043d,\u0432\u0442,\u0441\u0440,\u0447\u0442,\u043f\u0442,\u0441\u0431".split(","),"days-format-narrow":"\u0412,\u041f\u043d,\u0412\u0442,\u0421,\u0427,\u041f,\u0421".split(","),"days-format-wide":"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435,\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a,\u0432\u0442\u043e\u0440\u043d\u0438\u043a,\u0441\u0440\u0435\u0434\u0430,\u0447\u0435\u0442\u0432\u0435\u0440\u0433,\u043f\u044f\u0442\u043d\u0438\u0446\u0430,\u0441\u0443\u0431\u0431\u043e\u0442\u0430".split(","),
-"days-standAlone-abbr":"\u0412\u0441,\u041f\u043d,\u0412\u0442,\u0421\u0440,\u0427\u0442,\u041f\u0442,\u0421\u0431".split(","),"days-standAlone-narrow":"\u0412,\u041f,\u0412,\u0421,\u0427,\u041f,\u0421".split(","),"days-standAlone-wide":"\u0412\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435,\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a,\u0412\u0442\u043e\u0440\u043d\u0438\u043a,\u0421\u0440\u0435\u0434\u0430,\u0427\u0435\u0442\u0432\u0435\u0440\u0433,\u041f\u044f\u0442\u043d\u0438\u0446\u0430,\u0421\u0443\u0431\u0431\u043e\u0442\u0430".split(","),
-"quarters-format-abbr":["1-\u0439 \u043a\u0432.","2-\u0439 \u043a\u0432.","3-\u0439 \u043a\u0432.","4-\u0439 \u043a\u0432."],"quarters-format-wide":["1-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b","2-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b","3-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b","4-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b"],"dayPeriods-format-abbr-am":"\u0434\u043e \u043f\u043e\u043b\u0443\u0434\u043d\u044f","dayPeriods-format-abbr-pm":"\u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0434\u043d\u044f",
-"dayPeriods-format-narrow-am":"\u0434\u043f","dayPeriods-format-narrow-pm":"\u043f\u043f","dayPeriods-format-wide-am":"\u0434\u043e \u043f\u043e\u043b\u0443\u0434\u043d\u044f","dayPeriods-format-wide-pm":"\u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0434\u043d\u044f","dateFormat-full":"EEEE, d MMMM y\u00a0'\u0433'.","dateFormat-long":"d MMMM y\u00a0'\u0433'.","dateFormat-medium":"dd.MM.yyyy","dateFormat-short":"dd.MM.yy","dateFormatItem-Ed":"ccc, d","dateFormatItem-H":"H","dateFormatItem-Hm":"H:mm",
-"dateFormatItem-Hms":"H:mm:ss","dateFormatItem-Md":"dd.MM","dateFormatItem-MEd":"E, dd.MM","dateFormatItem-MMMd":"d MMM","dateFormatItem-MMMEd":"ccc, d MMM","dateFormatItem-yM":"MM.y","dateFormatItem-yMd":"dd.MM.y","dateFormatItem-yMEd":"E, dd.MM.y","dateFormatItem-yMMM":"LLL y","dateFormatItem-yMMMd":"d MMM y\u00a0'\u0433'.","dateFormatItem-yMMMEd":"E, d MMM y","dateFormatItem-yQ":"QQQ y '\u0433'.","timeFormat-full":"H:mm:ss zzzz","timeFormat-long":"H:mm:ss z","timeFormat-medium":"H:mm:ss","timeFormat-short":"H:mm",
-"dateTimeFormat-full":"{1}, {0}","dateTimeFormat-long":"{1}, {0}","dateTimeFormat-medium":"{1}, {0}","dateTimeFormat-short":"{1}, {0}"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/ru/hebrew.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/ru/islamic.js] */
-//>>built
-define("dojo/cldr/nls/ru/islamic",{"months-format-abbr":"\u041c\u0443\u0445\u0430\u0440\u0440\u0430\u043c,\u0421\u0430\u0444\u0430\u0440,\u0420\u0430\u0431\u0438-\u0443\u043b\u044c-\u0430\u0432\u0432\u0430\u043b\u044c,\u0420\u0430\u0431\u0438-\u0443\u043b\u044c-\u0430\u0445\u0438\u0440,\u0414\u0436\u0443\u043c\u0430\u0434-\u0443\u043b\u044c-\u0430\u0432\u0432\u0430\u043b\u044c,\u0414\u0436\u0443\u043c\u0430\u0434-\u0443\u043b\u044c-\u0430\u0445\u0438\u0440,\u0420\u0430\u0434\u0436\u0430\u0431,\u0428\u0430\u0430\u0431\u0430\u043d,\u0420\u0430\u043c\u0430\u0434\u0430\u043d,\u0428\u0430\u0432\u0432\u0430\u043b\u044c,\u0417\u0443\u043b\u044c-\u041a\u0430\u0430\u0434\u0430,\u0417\u0443\u043b\u044c-\u0425\u0438\u0434\u0436\u0436\u0430".split(","),
-"months-format-narrow":"1,2,3,4,5,6,7,8,9,10,11,12".split(","),"months-format-wide":"\u041c\u0443\u0445\u0430\u0440\u0440\u0430\u043c,\u0421\u0430\u0444\u0430\u0440,\u0420\u0430\u0431\u0438-\u0443\u043b\u044c-\u0430\u0432\u0432\u0430\u043b\u044c,\u0420\u0430\u0431\u0438-\u0443\u043b\u044c-\u0430\u0445\u0438\u0440,\u0414\u0436\u0443\u043c\u0430\u0434-\u0443\u043b\u044c-\u0430\u0432\u0432\u0430\u043b\u044c,\u0414\u0436\u0443\u043c\u0430\u0434-\u0443\u043b\u044c-\u0430\u0445\u0438\u0440,\u0420\u0430\u0434\u0436\u0430\u0431,\u0428\u0430\u0430\u0431\u0430\u043d,\u0420\u0430\u043c\u0430\u0434\u0430\u043d,\u0428\u0430\u0432\u0432\u0430\u043b\u044c,\u0417\u0443\u043b\u044c-\u041a\u0430\u0430\u0434\u0430,\u0417\u0443\u043b\u044c-\u0425\u0438\u0434\u0436\u0436\u0430".split(","),
-"months-standAlone-abbr":"\u041c\u0443\u0445\u0430\u0440\u0440\u0430\u043c,\u0421\u0430\u0444\u0430\u0440,\u0420\u0430\u0431\u0438-\u0443\u043b\u044c-\u0430\u0432\u0432\u0430\u043b\u044c,\u0420\u0430\u0431\u0438-\u0443\u043b\u044c-\u0430\u0445\u0438\u0440,\u0414\u0436\u0443\u043c\u0430\u0434-\u0443\u043b\u044c-\u0430\u0432\u0432\u0430\u043b\u044c,\u0414\u0436\u0443\u043c\u0430\u0434-\u0443\u043b\u044c-\u0430\u0445\u0438\u0440,\u0420\u0430\u0434\u0436\u0430\u0431,\u0428\u0430\u0430\u0431\u0430\u043d,\u0420\u0430\u043c\u0430\u0434\u0430\u043d,\u0428\u0430\u0432\u0432\u0430\u043b\u044c,\u0417\u0443\u043b\u044c-\u041a\u0430\u0430\u0434\u0430,\u0417\u0443\u043b\u044c-\u0425\u0438\u0434\u0436\u0436\u0430".split(","),
-"months-standAlone-wide":"\u041c\u0443\u0445\u0430\u0440\u0440\u0430\u043c,\u0421\u0430\u0444\u0430\u0440,\u0420\u0430\u0431\u0438-\u0443\u043b\u044c-\u0430\u0432\u0432\u0430\u043b\u044c,\u0420\u0430\u0431\u0438-\u0443\u043b\u044c-\u0430\u0445\u0438\u0440,\u0414\u0436\u0443\u043c\u0430\u0434-\u0443\u043b\u044c-\u0430\u0432\u0432\u0430\u043b\u044c,\u0414\u0436\u0443\u043c\u0430\u0434-\u0443\u043b\u044c-\u0430\u0445\u0438\u0440,\u0420\u0430\u0434\u0436\u0430\u0431,\u0428\u0430\u0430\u0431\u0430\u043d,\u0420\u0430\u043c\u0430\u0434\u0430\u043d,\u0428\u0430\u0432\u0432\u0430\u043b\u044c,\u0417\u0443\u043b\u044c-\u041a\u0430\u0430\u0434\u0430,\u0417\u0443\u043b\u044c-\u0425\u0438\u0434\u0436\u0436\u0430".split(","),
-"dateFormat-full":"EEEE, d MMMM y\u00a0'\u0433'. G","dateFormat-long":"d MMMM y\u00a0'\u0433'. G","dateFormat-medium":"dd.MM.yyyy G","dateFormat-short":"dd.MM.yy G","dateFormatItem-d":"d","dateFormatItem-E":"ccc","dateFormatItem-Ed":"E, d","dateFormatItem-H":"H","dateFormatItem-Hm":"H:mm","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-M":"L","dateFormatItem-Md":"dd.MM","dateFormatItem-MEd":"E, dd.MM","dateFormatItem-MMdd":"dd.MM","dateFormatItem-MMM":"LLL","dateFormatItem-MMMd":"d MMM","dateFormatItem-MMMEd":"ccc, d MMM",
-"dateFormatItem-ms":"mm:ss","dateFormatItem-yyMM":"MM.yy G","dateFormatItem-yyMMM":"LLL yy G","dateFormatItem-yyMMMEd":"E, d MMM yy G","dateFormatItem-yyQ":"Q yy G","dateFormatItem-yyyy":"y G","dateFormatItem-yyyyLLLL":"LLLL y G","dateFormatItem-yyyyM":"MM.y G","dateFormatItem-yyyyMd":"dd.MM.y G","dateFormatItem-yyyyMEd":"E, dd.MM.y G","dateFormatItem-yyyyMM":"MM.yyyy G","dateFormatItem-yyyyMMM":"LLL y G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-yyyyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMMMM":"LLLL y G",
-"dateFormatItem-yyyyQQQ":"QQQ y G","dateFormatItem-yyyyQQQQ":"QQQQ y\u00a0'\u0433'. G","days-format-abbr":"\u0432\u0441,\u043f\u043d,\u0432\u0442,\u0441\u0440,\u0447\u0442,\u043f\u0442,\u0441\u0431".split(","),"days-format-narrow":"\u0412,\u041f\u043d,\u0412\u0442,\u0421,\u0427,\u041f,\u0421".split(","),"days-format-wide":"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435,\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a,\u0432\u0442\u043e\u0440\u043d\u0438\u043a,\u0441\u0440\u0435\u0434\u0430,\u0447\u0435\u0442\u0432\u0435\u0440\u0433,\u043f\u044f\u0442\u043d\u0438\u0446\u0430,\u0441\u0443\u0431\u0431\u043e\u0442\u0430".split(","),
-"days-standAlone-abbr":"\u0412\u0441,\u041f\u043d,\u0412\u0442,\u0421\u0440,\u0427\u0442,\u041f\u0442,\u0421\u0431".split(","),"days-standAlone-narrow":"\u0412,\u041f,\u0412,\u0421,\u0427,\u041f,\u0421".split(","),"days-standAlone-wide":"\u0412\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435,\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a,\u0412\u0442\u043e\u0440\u043d\u0438\u043a,\u0421\u0440\u0435\u0434\u0430,\u0427\u0435\u0442\u0432\u0435\u0440\u0433,\u041f\u044f\u0442\u043d\u0438\u0446\u0430,\u0421\u0443\u0431\u0431\u043e\u0442\u0430".split(","),
-"quarters-format-abbr":["1-\u0439 \u043a\u0432.","2-\u0439 \u043a\u0432.","3-\u0439 \u043a\u0432.","4-\u0439 \u043a\u0432."],"quarters-format-wide":["1-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b","2-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b","3-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b","4-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b"],"dayPeriods-format-abbr-am":"\u0434\u043e \u043f\u043e\u043b\u0443\u0434\u043d\u044f","dayPeriods-format-abbr-pm":"\u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0434\u043d\u044f",
-"dayPeriods-format-narrow-am":"\u0434\u043f","dayPeriods-format-narrow-pm":"\u043f\u043f","dayPeriods-format-wide-am":"\u0434\u043e \u043f\u043e\u043b\u0443\u0434\u043d\u044f","dayPeriods-format-wide-pm":"\u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0434\u043d\u044f","dateFormatItem-yM":"MM.y","dateFormatItem-yMd":"dd.MM.y","dateFormatItem-yMEd":"E, dd.MM.y","dateFormatItem-yMMM":"LLL y","dateFormatItem-yMMMd":"d MMM y\u00a0'\u0433'.","dateFormatItem-yMMMEd":"E, d MMM y","dateFormatItem-yQ":"QQQ y '\u0433'.",
-"timeFormat-full":"H:mm:ss zzzz","timeFormat-long":"H:mm:ss z","timeFormat-medium":"H:mm:ss","timeFormat-short":"H:mm","dateTimeFormat-full":"{1}, {0}","dateTimeFormat-long":"{1}, {0}","dateTimeFormat-medium":"{1}, {0}","dateTimeFormat-short":"{1}, {0}"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/ru/islamic.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/ru/number.js] */
-//>>built
-define("dojo/cldr/nls/ru/number",{decimal:",",group:"\u00a0",list:";",percentSign:"%",plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"\u043d\u0435 \u0447\u0438\u0441\u043b\u043e",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0\u0442\u0440\u043b\u043d",scientificFormat:"#E0",percentFormat:"#,##0\u00a0%",currencyFormat:"#,##0.00\u00a0\u00a4"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/cldr/nls/ru/number.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/colors.js] */
-//>>built
+"currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"\u00a4\u00a0#,##0.00"},ar:!0,ca:!0,cs:!0,da:!0,de:!0,el:!0,en:!0,"en-gb":!0,es:!0,fi:!0,fr:!0,"fr-ch":!0,he:!0,hu:!0,it:!0,ja:!0,ko:!0,nb:!0,nl:!0,pl:!0,pt:!0,"pt-pt":!0,ro:!0,ru:!0,sk:!0,sl:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-hant":!0,"zh-hk":!0,"zh-tw":!0});//>>built
define("dojo/nls/colors",{root:{aliceblue:"alice blue",antiquewhite:"antique white",aqua:"aqua",aquamarine:"aquamarine",azure:"azure",beige:"beige",bisque:"bisque",black:"black",blanchedalmond:"blanched almond",blue:"blue",blueviolet:"blue-violet",brown:"brown",burlywood:"burlywood",cadetblue:"cadet blue",chartreuse:"chartreuse",chocolate:"chocolate",coral:"coral",cornflowerblue:"cornflower blue",cornsilk:"cornsilk",crimson:"crimson",cyan:"cyan",darkblue:"dark blue",darkcyan:"dark cyan",darkgoldenrod:"dark goldenrod",
darkgray:"dark gray",darkgreen:"dark green",darkgrey:"dark gray",darkkhaki:"dark khaki",darkmagenta:"dark magenta",darkolivegreen:"dark olive green",darkorange:"dark orange",darkorchid:"dark orchid",darkred:"dark red",darksalmon:"dark salmon",darkseagreen:"dark sea green",darkslateblue:"dark slate blue",darkslategray:"dark slate gray",darkslategrey:"dark slate gray",darkturquoise:"dark turquoise",darkviolet:"dark violet",deeppink:"deep pink",deepskyblue:"deep sky blue",dimgray:"dim gray",dimgrey:"dim gray",
dodgerblue:"dodger blue",firebrick:"fire brick",floralwhite:"floral white",forestgreen:"forest green",fuchsia:"fuchsia",gainsboro:"gainsboro",ghostwhite:"ghost white",gold:"gold",goldenrod:"goldenrod",gray:"gray",green:"green",greenyellow:"green-yellow",grey:"gray",honeydew:"honeydew",hotpink:"hot pink",indianred:"indian red",indigo:"indigo",ivory:"ivory",khaki:"khaki",lavender:"lavender",lavenderblush:"lavender blush",lawngreen:"lawn green",lemonchiffon:"lemon chiffon",lightblue:"light blue",lightcoral:"light coral",
lightcyan:"light cyan",lightgoldenrodyellow:"light goldenrod yellow",lightgray:"light gray",lightgreen:"light green",lightgrey:"light gray",lightpink:"light pink",lightsalmon:"light salmon",lightseagreen:"light sea green",lightskyblue:"light sky blue",lightslategray:"light slate gray",lightslategrey:"light slate gray",lightsteelblue:"light steel blue",lightyellow:"light yellow",lime:"lime",limegreen:"lime green",linen:"linen",magenta:"magenta",maroon:"maroon",mediumaquamarine:"medium aquamarine",
mediumblue:"medium blue",mediumorchid:"medium orchid",mediumpurple:"medium purple",mediumseagreen:"medium sea green",mediumslateblue:"medium slate blue",mediumspringgreen:"medium spring green",mediumturquoise:"medium turquoise",mediumvioletred:"medium violet-red",midnightblue:"midnight blue",mintcream:"mint cream",mistyrose:"misty rose",moccasin:"moccasin",navajowhite:"navajo white",navy:"navy",oldlace:"old lace",olive:"olive",olivedrab:"olive drab",orange:"orange",orangered:"orange red",orchid:"orchid",
palegoldenrod:"pale goldenrod",palegreen:"pale green",paleturquoise:"pale turquoise",palevioletred:"pale violet-red",papayawhip:"papaya whip",peachpuff:"peach puff",peru:"peru",pink:"pink",plum:"plum",powderblue:"powder blue",purple:"purple",red:"red",rosybrown:"rosy brown",royalblue:"royal blue",saddlebrown:"saddle brown",salmon:"salmon",sandybrown:"sandy brown",seagreen:"sea green",seashell:"seashell",sienna:"sienna",silver:"silver",skyblue:"sky blue",slateblue:"slate blue",slategray:"slate gray",
-slategrey:"slate gray",snow:"snow",springgreen:"spring green",steelblue:"steel blue",tan:"tan",teal:"teal",thistle:"thistle",tomato:"tomato",transparent:"transparent",turquoise:"turquoise",violet:"violet",wheat:"wheat",white:"white",whitesmoke:"white smoke",yellow:"yellow",yellowgreen:"yellow green"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/colors.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/de/colors.js] */
-//>>built
+slategrey:"slate gray",snow:"snow",springgreen:"spring green",steelblue:"steel blue",tan:"tan",teal:"teal",thistle:"thistle",tomato:"tomato",transparent:"transparent",turquoise:"turquoise",violet:"violet",wheat:"wheat",white:"white",whitesmoke:"white smoke",yellow:"yellow",yellowgreen:"yellow green"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});//>>built
define("dojo/nls/de/colors",{aliceblue:"Alice-blau",antiquewhite:"Antikwei\u00df",aqua:"Wasserblau",aquamarine:"Aquamarin",azure:"Azur",beige:"Beige",bisque:"Bisquit",black:"Schwarz",blanchedalmond:"Mandelwei\u00df",blue:"Blau",blueviolet:"Blauviolett",brown:"Braun",burlywood:"Burlywood",cadetblue:"Kadettenblau",chartreuse:"Helles Gelbgr\u00fcn",chocolate:"Schokoladenbraun",coral:"Koralle",cornflowerblue:"Kornblumenblau",cornsilk:"Kornseide",crimson:"Karmesinrot",cyan:"Zyan",darkblue:"Dunkelblau",
darkcyan:"Dunkelzyan",darkgoldenrod:"Dunkelgoldgelb",darkgray:"Dunkelgrau",darkgreen:"Dunkelgr\u00fcn",darkgrey:"Dunkelgrau",darkkhaki:"Dunkelkhaki",darkmagenta:"Dunkelmagenta",darkolivegreen:"Dunkelolivgr\u00fcn",darkorange:"Dunkelorange",darkorchid:"Dunkelorchidee",darkred:"Dunkelrot",darksalmon:"Dunkellachs",darkseagreen:"Dunkles Meergr\u00fcn",darkslateblue:"Dunkelschieferblau",darkslategray:"Dunkelschiefergrau",darkslategrey:"Dunkelschiefergrau",darkturquoise:"Dunkelt\u00fcrkis",darkviolet:"Dunkelviolett",
deeppink:"Tiefrosa",deepskyblue:"Dunkles Himmelblau",dimgray:"Blassgrau",dimgrey:"Blassgrau",dodgerblue:"Dodger-blau",firebrick:"Schamottestein",floralwhite:"Bl\u00fctenwei\u00df",forestgreen:"Forstgr\u00fcn",fuchsia:"Fuchsia",gainsboro:"Gainsboro",ghostwhite:"Geisterwei\u00df",gold:"Gold",goldenrod:"Goldgelb",gray:"Grau",green:"Gr\u00fcn",greenyellow:"Gr\u00fcngelb",grey:"Grau",honeydew:"Honigtau",hotpink:"Knallrosa",indianred:"Indischrot",indigo:"Indigoblau",ivory:"Elfenbein",khaki:"Khaki",lavender:"Lavendelblau",
@@ -935,438 +850,195 @@ lavenderblush:"Lavendelhauch",lawngreen:"Grasgr\u00fcn",lemonchiffon:"Zitronench
lime:"Limone",limegreen:"Limonengr\u00fcn",linen:"Leinen",magenta:"Magenta",maroon:"Kastanienbraun",mediumaquamarine:"Mittelaquamarin",mediumblue:"Mittelblau",mediumorchid:"Mittelorchidee",mediumpurple:"Mittelpurpur",mediumseagreen:"Mittelmeeresgr\u00fcn",mediumslateblue:"Mittelschieferblau ",mediumspringgreen:"Mittelfr\u00fchlingsgr\u00fcn",mediumturquoise:"Mittelt\u00fcrkis ",mediumvioletred:"Mittelviolettrot ",midnightblue:"Mitternachtblau",mintcream:"Mintcreme",mistyrose:"Blassrose",moccasin:"Mokassin",
navajowhite:"Navajo-wei\u00df",navy:"Marineblau",oldlace:"Alte Spitze",olive:"Oliv",olivedrab:"Olivgrau",orange:"Orange",orangered:"Orangerot",orchid:"Orchidee",palegoldenrod:"Blassgoldgelb",palegreen:"Blassgr\u00fcn",paleturquoise:"Blasst\u00fcrkis",palevioletred:"Blassviolettrot ",papayawhip:"Papayacreme",peachpuff:"Pfirsich",peru:"Peru",pink:"Rosa",plum:"Pflaume",powderblue:"Pulverblau",purple:"Purpurrot",red:"Rot",rosybrown:"Rosigbraun",royalblue:"K\u00f6nigsblau",saddlebrown:"Sattelbraun",salmon:"Lachs",
sandybrown:"Sandbraun",seagreen:"Meeresgr\u00fcn",seashell:"Muschelwei\u00df",sienna:"Sienna",silver:"Silbergrau",skyblue:"Himmelblau",slateblue:"Schieferblau",slategray:"Schiefergrau",slategrey:"Schiefergrau",snow:"Schneewei\u00df",springgreen:"Fr\u00fchlingsgr\u00fcn",steelblue:"Stahlblau",tan:"Hautfarben",teal:"Smaragdgr\u00fcn",thistle:"Distel",tomato:"Tomatenrot",transparent:"Transparent",turquoise:"T\u00fcrkis",violet:"Violett",wheat:"Weizen",white:"Wei\u00df",whitesmoke:"Rauchwei\u00df",yellow:"Gelb",
-yellowgreen:"Gelbgr\u00fcn"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/de/colors.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_ROOT.js] */
-//>>built
+yellowgreen:"Gelbgr\u00fcn"});//>>built
define("dojo/nls/dojo_ROOT",{"dijit/nls/loading":{loadingState:"Loading...",errorState:"Sorry, an error occurred"},"dijit/nls/common":{buttonOk:"OK",buttonCancel:"Cancel",buttonSave:"Save",itemClose:"Close"},"dijit/form/nls/validate":{invalidMessage:"The value entered is not valid.",missingMessage:"This value is required.",rangeMessage:"This value is out of range."},"dojo/cldr/nls/number":{decimal:".",group:",",list:";",percentSign:"%",plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",
infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000T",scientificFormat:"#E0",percentFormat:"#,##0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"\u00a4\u00a0#,##0.00"},
-"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Hue Selector",saturationPickerTitle:"Saturation Selector"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_ROOT.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_ar.js] */
-//>>built
+"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Hue Selector",saturationPickerTitle:"Saturation Selector"}});//>>built
define("dojo/nls/dojo_ar",{"dijit/nls/loading":{loadingState:"\u062c\u0627\u0631\u064a \u0627\u0644\u062a\u062d\u0645\u064a\u0644...",errorState:"\u0639\u0641\u0648\u0627\u060c \u062d\u062f\u062b \u062e\u0637\u0623"},"dijit/nls/common":{buttonOk:"\u062d\u0633\u0646\u0627",buttonCancel:"\u0627\u0644\u063a\u0627\u0621",buttonSave:"\u062d\u0641\u0638",itemClose:"\u0627\u063a\u0644\u0627\u0642"},"dijit/form/nls/validate":{invalidMessage:"\u0627\u0644\u0642\u064a\u0645\u0629 \u0627\u0644\u062a\u064a \u062a\u0645 \u0627\u062f\u062e\u0627\u0644\u0647\u0627 \u063a\u064a\u0631 \u0635\u062d\u064a\u062d\u0629.",
missingMessage:"\u064a\u062c\u0628 \u0627\u062f\u062e\u0627\u0644 \u0647\u0630\u0647 \u0627\u0644\u0642\u064a\u0645\u0629.",rangeMessage:"\u0647\u0630\u0647 \u0627\u0644\u0642\u064a\u0645\u0629 \u0644\u064a\u0633 \u0628\u0627\u0644\u0645\u062f\u0649 \u0627\u0644\u0635\u062d\u064a\u062d."},"dojo/cldr/nls/number":{decimal:",",group:".",list:";",percentSign:"%",plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###;#,##0.###-","decimalFormat-short":"000T",
scientificFormat:"#E0",percentFormat:"#,##0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"\u00a4\u00a0#,##0.00;\u00a4\u00a0#,##0.00-"},"dojox/widget/nls/ColorPicker":{redLabel:"r",
-greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"\u0645\u062d\u062f\u062f \u062a\u062f\u0631\u062c \u0627\u0644\u0644\u0648\u0646",saturationPickerTitle:"\u0645\u062d\u062f\u062f \u062f\u0631\u062c\u0629 \u0627\u0644\u062a\u0634\u0628\u0639"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_ar.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_ca.js] */
-//>>built
+greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"\u0645\u062d\u062f\u062f \u062a\u062f\u0631\u062c \u0627\u0644\u0644\u0648\u0646",saturationPickerTitle:"\u0645\u062d\u062f\u062f \u062f\u0631\u062c\u0629 \u0627\u0644\u062a\u0634\u0628\u0639"}});//>>built
define("dojo/nls/dojo_ca",{"dijit/nls/loading":{loadingState:"S'est\u00e0 carregant...",errorState:"Ens sap greu. S'ha produ\u00eft un error."},"dijit/nls/common":{buttonOk:"D'acord",buttonCancel:"Cancel\u00b7la",buttonSave:"Desa",itemClose:"Tanca"},"dijit/form/nls/validate":{invalidMessage:"El valor introdu\u00eft no \u00e9s v\u00e0lid",missingMessage:"Aquest valor \u00e9s necessari",rangeMessage:"Aquest valor \u00e9s fora de l'interval"},"dojo/cldr/nls/number":{decimal:",",group:".",list:";",percentSign:"%",
plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0B",scientificFormat:"#E0",percentFormat:"#,##0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",
-currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"v",greenLabel:"e",blueLabel:"b",hueLabel:"m",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Selector de mat\u00eds",saturationPickerTitle:"Selector de saturaci\u00f3"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_ca.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_cs.js] */
-//>>built
+currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"v",greenLabel:"e",blueLabel:"b",hueLabel:"m",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Selector de mat\u00eds",saturationPickerTitle:"Selector de saturaci\u00f3"}});//>>built
define("dojo/nls/dojo_cs",{"dijit/nls/loading":{loadingState:"Prob\u00edh\u00e1 na\u010d\u00edt\u00e1n\u00ed...",errorState:"Omlouv\u00e1me se, do\u0161lo k chyb\u011b"},"dijit/nls/common":{buttonOk:"OK",buttonCancel:"Storno",buttonSave:"Ulo\u017eit",itemClose:"Zav\u0159\u00edt"},"dijit/form/nls/validate":{invalidMessage:"Zadan\u00e1 hodnota nen\u00ed platn\u00e1.",missingMessage:"Tato hodnota je vy\u017eadov\u00e1na.",rangeMessage:"Tato hodnota je mimo rozsah."},"dojo/cldr/nls/number":{decimal:",",
group:"\u00a0",list:";",percentSign:"%",plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0bil'.'",scientificFormat:"#E0",percentFormat:"#,##0\u00a0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]",
-"currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"\u010d",greenLabel:"z",blueLabel:"m",hueLabel:"o",saturationLabel:"n",valueLabel:"j",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Selektor odst\u00ednu",saturationPickerTitle:"Selektor sytosti"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_cs.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_da.js] */
-//>>built
+"currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"\u010d",greenLabel:"z",blueLabel:"m",hueLabel:"o",saturationLabel:"n",valueLabel:"j",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Selektor odst\u00ednu",saturationPickerTitle:"Selektor sytosti"}});//>>built
define("dojo/nls/dojo_da",{"dijit/nls/loading":{loadingState:"Indl\u00e6ser...",errorState:"Der er opst\u00e5et en fejl"},"dijit/nls/common":{buttonOk:"OK",buttonCancel:"Annull\u00e9r",buttonSave:"Gem",itemClose:"Luk"},"dijit/form/nls/validate":{invalidMessage:"Den angivne v\u00e6rdi er ugyldig.",missingMessage:"V\u00e6rdien er p\u00e5kr\u00e6vet.",rangeMessage:"V\u00e6rdien er uden for intervallet."},"dojo/cldr/nls/number":{decimal:",",group:".",list:",",percentSign:"%",plusSign:"+",minusSign:"-",
exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0bill",scientificFormat:"#E0",percentFormat:"#,##0\u00a0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",
-currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"n",saturationLabel:"m",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"V\u00e6lg nuance",saturationPickerTitle:"V\u00e6lg m\u00e6tning"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_da.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_de.js] */
-//>>built
+currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"n",saturationLabel:"m",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"V\u00e6lg nuance",saturationPickerTitle:"V\u00e6lg m\u00e6tning"}});//>>built
define("dojo/nls/dojo_de",{"dijit/nls/loading":{loadingState:"Wird geladen...",errorState:"Es ist ein Fehler aufgetreten."},"dijit/nls/common":{buttonOk:"OK",buttonCancel:"Abbrechen",buttonSave:"Speichern",itemClose:"Schlie\u00dfen"},"dijit/form/nls/validate":{invalidMessage:"Der eingegebene Wert ist ung\u00fcltig. ",missingMessage:"Dieser Wert ist erforderlich.",rangeMessage:"Dieser Wert liegt au\u00dferhalb des g\u00fcltigen Bereichs. "},"dojo/cldr/nls/number":{decimal:",",group:".",list:";",percentSign:"%",
plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0B",scientificFormat:"#E0",percentFormat:"#,##0\u00a0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",
-currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Farbtonauswahl",saturationPickerTitle:"S\u00e4ttigungsauswahl"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_de.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_el.js] */
-//>>built
+currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Farbtonauswahl",saturationPickerTitle:"S\u00e4ttigungsauswahl"}});//>>built
define("dojo/nls/dojo_el",{"dijit/nls/loading":{loadingState:"\u03a6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7...",errorState:"\u03a3\u03b1\u03c2 \u03b6\u03b7\u03c4\u03bf\u03cd\u03bc\u03b5 \u03c3\u03c5\u03b3\u03bd\u03ce\u03bc\u03b7, \u03c0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1"},"dijit/nls/common":{buttonOk:"\u039f\u039a",buttonCancel:"\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7",buttonSave:"\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7",
itemClose:"\u039a\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf"},"dijit/form/nls/validate":{invalidMessage:"\u0397 \u03c4\u03b9\u03bc\u03ae \u03c0\u03bf\u03c5 \u03ba\u03b1\u03c4\u03b1\u03c7\u03c9\u03c1\u03ae\u03c3\u03b1\u03c4\u03b5 \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7.",missingMessage:"\u0397 \u03c4\u03b9\u03bc\u03ae \u03b1\u03c5\u03c4\u03ae \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03b1\u03c0\u03b1\u03c1\u03b1\u03af\u03c4\u03b7\u03c4\u03b1 \u03bd\u03b1 \u03ba\u03b1\u03b8\u03bf\u03c1\u03b9\u03c3\u03c4\u03b5\u03af.",
rangeMessage:"\u0397 \u03c4\u03b9\u03bc\u03ae \u03b1\u03c5\u03c4\u03ae \u03b4\u03b5\u03bd \u03b1\u03bd\u03ae\u03ba\u03b5\u03b9 \u03c3\u03c4\u03bf \u03b5\u03cd\u03c1\u03bf\u03c2 \u03ad\u03b3\u03ba\u03c5\u03c1\u03c9\u03bd \u03c4\u03b9\u03bc\u03ce\u03bd."},"dojo/cldr/nls/number":{decimal:",",group:".",list:",",percentSign:"%",plusSign:"+",minusSign:"-",exponential:"e",perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0\u03c4\u03c1\u03b9\u03c2",scientificFormat:"#E0",
percentFormat:"#,##0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"\u03ba",greenLabel:"\u03c0",blueLabel:"\u03bc",
-hueLabel:"\u03b1",saturationLabel:"\u03ba",valueLabel:"\u03c4",degLabel:"\u00b0",hexLabel:"16-\u03b1\u03b4\u03b9\u03ba\u03cc",huePickerTitle:"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03b1\u03c0\u03cc\u03c7\u03c1\u03c9\u03c3\u03b7\u03c2",saturationPickerTitle:"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03ba\u03bf\u03c1\u03b5\u03c3\u03bc\u03bf\u03cd"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_el.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_en-gb.js] */
-//>>built
+hueLabel:"\u03b1",saturationLabel:"\u03ba",valueLabel:"\u03c4",degLabel:"\u00b0",hexLabel:"16-\u03b1\u03b4\u03b9\u03ba\u03cc",huePickerTitle:"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03b1\u03c0\u03cc\u03c7\u03c1\u03c9\u03c3\u03b7\u03c2",saturationPickerTitle:"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03ba\u03bf\u03c1\u03b5\u03c3\u03bc\u03bf\u03cd"}});//>>built
define("dojo/nls/dojo_en-gb",{"dijit/nls/loading":{loadingState:"Loading...",errorState:"Sorry, an error occurred"},"dijit/nls/common":{buttonOk:"OK",buttonCancel:"Cancel",buttonSave:"Save",itemClose:"Close"},"dijit/form/nls/validate":{invalidMessage:"The value entered is not valid.",missingMessage:"This value is required.",rangeMessage:"This value is out of range."},"dojo/cldr/nls/number":{decimal:".",group:",",list:";",percentSign:"%",plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",
infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000T",scientificFormat:"#E0",percentFormat:"#,##0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"\u00a4#,##0.00"},
-"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Hue Selector",saturationPickerTitle:"Saturation Selector"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_en-gb.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_en-us.js] */
-//>>built
+"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Hue Selector",saturationPickerTitle:"Saturation Selector"}});//>>built
define("dojo/nls/dojo_en-us",{"dijit/nls/loading":{loadingState:"Loading...",errorState:"Sorry, an error occurred"},"dijit/nls/common":{buttonOk:"OK",buttonCancel:"Cancel",buttonSave:"Save",itemClose:"Close"},"dijit/form/nls/validate":{invalidMessage:"The value entered is not valid.",missingMessage:"This value is required.",rangeMessage:"This value is out of range."},"dojo/cldr/nls/number":{decimal:".",group:",",list:";",percentSign:"%",plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",
infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000T",scientificFormat:"#E0",percentFormat:"#,##0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"\u00a4#,##0.00;(\u00a4#,##0.00)"},
-"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Hue Selector",saturationPickerTitle:"Saturation Selector"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_en-us.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_es-es.js] */
-//>>built
+"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Hue Selector",saturationPickerTitle:"Saturation Selector"}});//>>built
define("dojo/nls/dojo_es-es",{"dijit/nls/loading":{loadingState:"Cargando...",errorState:"Lo siento, se ha producido un error"},"dijit/nls/common":{buttonOk:"Aceptar",buttonCancel:"Cancelar",buttonSave:"Guardar",itemClose:"Cerrar"},"dijit/form/nls/validate":{invalidMessage:"El valor especificado no es v\u00e1lido.",missingMessage:"Este valor es necesario.",rangeMessage:"Este valor est\u00e1 fuera del intervalo."},"dojo/cldr/nls/number":{decimal:",",group:".",list:";",percentSign:"%",plusSign:"+",
minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0B",scientificFormat:"#E0",percentFormat:"#,##0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",
-currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"v",blueLabel:"a",hueLabel:"m",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Selector de tono",saturationPickerTitle:"Selector de saturaci\u00f3n"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_es-es.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_fi-fi.js] */
-//>>built
+currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"v",blueLabel:"a",hueLabel:"m",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Selector de tono",saturationPickerTitle:"Selector de saturaci\u00f3n"}});//>>built
define("dojo/nls/dojo_fi-fi",{"dijit/nls/loading":{loadingState:"Lataus on meneill\u00e4\u00e4n...",errorState:"On ilmennyt virhe."},"dijit/nls/common":{buttonOk:"OK",buttonCancel:"Peruuta",buttonSave:"Tallenna",itemClose:"Sulje"},"dijit/form/nls/validate":{invalidMessage:"Annettu arvo ei kelpaa.",missingMessage:"T\u00e4m\u00e4 arvo on pakollinen.",rangeMessage:"T\u00e4m\u00e4 arvo on sallitun alueen ulkopuolella."},"dojo/cldr/nls/number":{decimal:",",group:"\u00a0",list:";",percentSign:"%",plusSign:"+",
minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"ep\u00e4luku",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0b",scientificFormat:"#E0",percentFormat:"#,##0\u00a0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",
-currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"S\u00e4vyn valitsin",saturationPickerTitle:"Kyll\u00e4isyyden valitsin"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_fi-fi.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_fr-fr.js] */
-//>>built
+currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"S\u00e4vyn valitsin",saturationPickerTitle:"Kyll\u00e4isyyden valitsin"}});//>>built
define("dojo/nls/dojo_fr-fr",{"dijit/nls/loading":{loadingState:"Chargement...",errorState:"Une erreur est survenue"},"dijit/nls/common":{buttonOk:"OK",buttonCancel:"Annuler",buttonSave:"Enregistrer",itemClose:"Fermer"},"dijit/form/nls/validate":{invalidMessage:"La valeur indiqu\u00e9e n'est pas correcte.",missingMessage:"Cette valeur est requise.",rangeMessage:"Cette valeur n'est pas comprise dans la plage autoris\u00e9e."},"dojo/cldr/nls/number":{decimal:",",group:"\u00a0",list:";",percentSign:"%",
plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0Bn",scientificFormat:"#E0",percentFormat:"#,##0\u00a0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]",
-"currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"v",blueLabel:"b",hueLabel:"t",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"S\u00e9lecteur de teinte",saturationPickerTitle:"S\u00e9lecteur de saturation"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_fr-fr.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_he-il.js] */
-//>>built
+"currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"v",blueLabel:"b",hueLabel:"t",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"S\u00e9lecteur de teinte",saturationPickerTitle:"S\u00e9lecteur de saturation"}});//>>built
define("dojo/nls/dojo_he-il",{"dijit/nls/loading":{loadingState:"\u05d8\u05e2\u05d9\u05e0\u05d4...\u200f",errorState:"\u05d0\u05d9\u05e8\u05e2\u05d4 \u05e9\u05d2\u05d9\u05d0\u05d4"},"dijit/nls/common":{buttonOk:"\u05d0\u05d9\u05e9\u05d5\u05e8",buttonCancel:"\u05d1\u05d9\u05d8\u05d5\u05dc",buttonSave:"\u05e9\u05de\u05d9\u05e8\u05d4",itemClose:"\u05e1\u05d2\u05d9\u05e8\u05d4"},"dijit/form/nls/validate":{invalidMessage:"\u05d4\u05e2\u05e8\u05da \u05e9\u05e6\u05d5\u05d9\u05df \u05d0\u05d9\u05e0\u05d5 \u05d7\u05d5\u05e7\u05d9.",
missingMessage:"\u05d6\u05d4\u05d5 \u05e2\u05e8\u05da \u05d3\u05e8\u05d5\u05e9.",rangeMessage:"\u05d4\u05e2\u05e8\u05da \u05de\u05d7\u05d5\u05e5 \u05dc\u05d8\u05d5\u05d5\u05d7."},"dojo/cldr/nls/number":{decimal:".",group:",",list:";",percentSign:"%",plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000T",scientificFormat:"#E0",percentFormat:"#,##0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]",
"currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"\u05d0",greenLabel:"\u05d9",blueLabel:"\u05db",hueLabel:"\u05d2",saturationLabel:"\u05e8",valueLabel:"\u05e2",degLabel:"\u00b0",hexLabel:"\u05d4\u05e7\u05e1",huePickerTitle:"\u05d1\u05d5\u05e8\u05e8 \u05d2\u05d5\u05d5\u05df",
-saturationPickerTitle:"\u05d1\u05d5\u05e8\u05e8 \u05e8\u05d5\u05d5\u05d9\u05d4"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_he-il.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_hu.js] */
-//>>built
+saturationPickerTitle:"\u05d1\u05d5\u05e8\u05e8 \u05e8\u05d5\u05d5\u05d9\u05d4"}});//>>built
define("dojo/nls/dojo_hu",{"dijit/nls/loading":{loadingState:"Bet\u00f6lt\u00e9s...",errorState:"Sajn\u00e1lom, hiba t\u00f6rt\u00e9nt"},"dijit/nls/common":{buttonOk:"OK",buttonCancel:"M\u00e9gse",buttonSave:"Ment\u00e9s",itemClose:"Bez\u00e1r\u00e1s"},"dijit/form/nls/validate":{invalidMessage:"A megadott \u00e9rt\u00e9k \u00e9rv\u00e9nytelen.",missingMessage:"Meg kell adni egy \u00e9rt\u00e9ket.",rangeMessage:"Az \u00e9rt\u00e9k k\u00edv\u00fcl van a megengedett tartom\u00e1nyon."},"dojo/cldr/nls/number":{decimal:",",
group:"\u00a0",list:";",percentSign:"%",plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0b",scientificFormat:"#E0",percentFormat:"#,##0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]",
-"currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"\u00c1rnyalat kiv\u00e1laszt\u00f3",saturationPickerTitle:"Tel\u00edtetts\u00e9g kiv\u00e1laszt\u00f3"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_hu.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_it-it.js] */
-//>>built
+"currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"\u00c1rnyalat kiv\u00e1laszt\u00f3",saturationPickerTitle:"Tel\u00edtetts\u00e9g kiv\u00e1laszt\u00f3"}});//>>built
define("dojo/nls/dojo_it-it",{"dijit/nls/loading":{loadingState:"Caricamento in corso...",errorState:"Si \u00e8 verificato un errore"},"dijit/nls/common":{buttonOk:"Ok",buttonCancel:"Annulla",buttonSave:"Salva",itemClose:"Chiudi"},"dijit/form/nls/validate":{invalidMessage:"Il valore immesso non \u00e8 valido.",missingMessage:"Questo valore \u00e8 obbligatorio.",rangeMessage:"Questo valore \u00e8 fuori dall'intervallo consentito."},"dojo/cldr/nls/number":{decimal:",",group:".",list:";",percentSign:"%",
plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0B",scientificFormat:"#E0",percentFormat:"#,##0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",
-currencyFormat:"\u00a4\u00a0#,##0.00"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"v",blueLabel:"b",hueLabel:"t",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Selettore tonalit\u00e0",saturationPickerTitle:"Selettore saturazione"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_it-it.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_ja-jp.js] */
-//>>built
+currencyFormat:"\u00a4\u00a0#,##0.00"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"v",blueLabel:"b",hueLabel:"t",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Selettore tonalit\u00e0",saturationPickerTitle:"Selettore saturazione"}});//>>built
define("dojo/nls/dojo_ja-jp",{"dijit/nls/loading":{loadingState:"\u30ed\u30fc\u30c9\u4e2d...",errorState:"\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"},"dijit/nls/common":{buttonOk:"OK",buttonCancel:"\u30ad\u30e3\u30f3\u30bb\u30eb",buttonSave:"\u4fdd\u5b58",itemClose:"\u9589\u3058\u308b"},"dijit/form/nls/validate":{invalidMessage:"\u5165\u529b\u3057\u305f\u5024\u306f\u7121\u52b9\u3067\u3059\u3002",missingMessage:"\u3053\u306e\u5024\u306f\u5fc5\u9808\u3067\u3059\u3002",rangeMessage:"\u3053\u306e\u5024\u306f\u7bc4\u56f2\u5916\u3067\u3059\u3002"},
"dojo/cldr/nls/number":{decimal:".",group:",",list:";",percentSign:"%",plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"NaN\uff08\u975e\u6570\uff09",decimalFormat:"#,##0.###","decimalFormat-short":"000\u5146",scientificFormat:"#E0",percentFormat:"#,##0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]",
-"currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"\u00a4#,##0.00"},"dojox/widget/nls/ColorPicker":{redLabel:"R",greenLabel:"G",blueLabel:"B",hueLabel:"H",saturationLabel:"S",valueLabel:"V",degLabel:"\u00b0",hexLabel:"Hex",huePickerTitle:"\u8272\u8abf\u30bb\u30ec\u30af\u30bf\u30fc",saturationPickerTitle:"\u5f69\u5ea6\u30bb\u30ec\u30af\u30bf\u30fc"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_ja-jp.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_ko-kr.js] */
-//>>built
+"currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"\u00a4#,##0.00"},"dojox/widget/nls/ColorPicker":{redLabel:"R",greenLabel:"G",blueLabel:"B",hueLabel:"H",saturationLabel:"S",valueLabel:"V",degLabel:"\u00b0",hexLabel:"Hex",huePickerTitle:"\u8272\u8abf\u30bb\u30ec\u30af\u30bf\u30fc",saturationPickerTitle:"\u5f69\u5ea6\u30bb\u30ec\u30af\u30bf\u30fc"}});//>>built
define("dojo/nls/dojo_ko-kr",{"dijit/nls/loading":{loadingState:"\ub85c\ub4dc \uc911...",errorState:"\uc8c4\uc1a1\ud569\ub2c8\ub2e4. \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4."},"dijit/nls/common":{buttonOk:"\ud655\uc778",buttonCancel:"\ucde8\uc18c",buttonSave:"\uc800\uc7a5",itemClose:"\ub2eb\uae30"},"dijit/form/nls/validate":{invalidMessage:"\uc785\ub825\ub41c \uac12\uc774 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.",missingMessage:"\uc774 \uac12\uc740 \ud544\uc218\uc785\ub2c8\ub2e4.",
rangeMessage:"\uc774 \uac12\uc740 \ubc94\uc704\ub97c \ubc97\uc5b4\ub0a9\ub2c8\ub2e4."},"dojo/cldr/nls/number":{decimal:".",group:",",list:";",percentSign:"%",plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000\uc870",scientificFormat:"#E0",percentFormat:"#,##0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0",
-"currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"\u00a4#,##0.00"},"dojox/widget/nls/ColorPicker":{redLabel:"R",greenLabel:"G",blueLabel:"B",hueLabel:"H",saturationLabel:"S",valueLabel:"V",degLabel:"\u00b0",hexLabel:"16\uc9c4",huePickerTitle:"\uc0c9\uc0c1 \uc120\ud0dd\uc790",saturationPickerTitle:"\ucc44\ub3c4 \uc120\ud0dd\uc790"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_ko-kr.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_nb.js] */
-//>>built
+"currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"\u00a4#,##0.00"},"dojox/widget/nls/ColorPicker":{redLabel:"R",greenLabel:"G",blueLabel:"B",hueLabel:"H",saturationLabel:"S",valueLabel:"V",degLabel:"\u00b0",hexLabel:"16\uc9c4",huePickerTitle:"\uc0c9\uc0c1 \uc120\ud0dd\uc790",saturationPickerTitle:"\ucc44\ub3c4 \uc120\ud0dd\uc790"}});//>>built
define("dojo/nls/dojo_nb",{"dijit/nls/loading":{loadingState:"Laster inn...",errorState:"Det oppsto en feil"},"dijit/nls/common":{buttonOk:"OK",buttonCancel:"Avbryt",buttonSave:"Lagre",itemClose:"Lukk"},"dijit/form/nls/validate":{invalidMessage:"Den angitte verdien er ikke gyldig.",missingMessage:"Denne verdien er obligatorisk.",rangeMessage:"Denne verdien er utenfor gyldig omr\u00e5de."},"dojo/cldr/nls/number":{decimal:",",group:"\u00a0",list:";",percentSign:"%",plusSign:"+",minusSign:"-",exponential:"E",
perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0bill",scientificFormat:"#E0",percentFormat:"#,##0\u00a0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",
-currencyFormat:"\u00a4\u00a0#,##0.00"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Nyansevelger",saturationPickerTitle:"Metningsvelger"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_nb.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_nl-nl.js] */
-//>>built
+currencyFormat:"\u00a4\u00a0#,##0.00"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Nyansevelger",saturationPickerTitle:"Metningsvelger"}});//>>built
define("dojo/nls/dojo_nl-nl",{"dijit/nls/loading":{loadingState:"Bezig met laden...",errorState:"Er is een fout opgetreden"},"dijit/nls/common":{buttonOk:"OK",buttonCancel:"Annuleren",buttonSave:"Opslaan",itemClose:"Sluiten"},"dijit/form/nls/validate":{invalidMessage:"De opgegeven waarde is ongeldig.",missingMessage:"Deze waarde is verplicht.",rangeMessage:"Deze waarde is niet toegestaan."},"dojo/cldr/nls/number":{decimal:",",group:".",list:";",percentSign:"%",plusSign:"+",minusSign:"-",exponential:"E",
perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0bilj",scientificFormat:"#E0",percentFormat:"#,##0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",
-currencyFormat:"\u00a4\u00a0#,##0.00;\u00a4\u00a0#,##0.00-"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"t",saturationLabel:"i",valueLabel:"h",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Tint selecteren",saturationPickerTitle:"Intensiteit selecteren"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_nl-nl.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_pl.js] */
-//>>built
+currencyFormat:"\u00a4\u00a0#,##0.00;\u00a4\u00a0#,##0.00-"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"t",saturationLabel:"i",valueLabel:"h",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Tint selecteren",saturationPickerTitle:"Intensiteit selecteren"}});//>>built
define("dojo/nls/dojo_pl",{"dijit/nls/loading":{loadingState:"\u0141adowanie...",errorState:"Niestety, wyst\u0105pi\u0142 b\u0142\u0105d"},"dijit/nls/common":{buttonOk:"OK",buttonCancel:"Anuluj",buttonSave:"Zapisz",itemClose:"Zamknij"},"dijit/form/nls/validate":{invalidMessage:"Wprowadzona warto\u015b\u0107 jest nieprawid\u0142owa.",missingMessage:"Ta warto\u015b\u0107 jest wymagana.",rangeMessage:"Ta warto\u015b\u0107 jest spoza zakresu."},"dojo/cldr/nls/number":{decimal:",",group:"\u00a0",list:";",
percentSign:"%",plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0bln",scientificFormat:"#E0",percentFormat:"#,##0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]",
-"currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"g.",saturationLabel:"s",valueLabel:"jas.",degLabel:"\u00b0",hexLabel:"szesnastkowe",huePickerTitle:"Selektor barwy",saturationPickerTitle:"Selektor nasycenia"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_pl.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_pt-br.js] */
-//>>built
+"currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"g.",saturationLabel:"s",valueLabel:"jas.",degLabel:"\u00b0",hexLabel:"szesnastkowe",huePickerTitle:"Selektor barwy",saturationPickerTitle:"Selektor nasycenia"}});//>>built
define("dojo/nls/dojo_pt-br",{"dijit/nls/loading":{loadingState:"Carregando...",errorState:"Desculpe, ocorreu um erro"},"dijit/nls/common":{buttonOk:"OK",buttonCancel:"Cancelar",buttonSave:"Salvar",itemClose:"Fechar"},"dijit/form/nls/validate":{invalidMessage:"O valor inserido n\u00e3o \u00e9 v\u00e1lido.",missingMessage:"Este valor \u00e9 necess\u00e1rio.",rangeMessage:"Este valor est\u00e1 fora do intervalo. "},"dojo/cldr/nls/number":{decimal:",",group:".",list:";",percentSign:"%",plusSign:"+",
minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0tri",scientificFormat:"#E0",percentFormat:"#,##0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",
-currencyFormat:"\u00a4#,##0.00;(\u00a4#,##0.00)"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Seletor de Matiz",saturationPickerTitle:"Seletor de Satura\u00e7\u00e3o"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_pt-br.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_pt-pt.js] */
-//>>built
+currencyFormat:"\u00a4#,##0.00;(\u00a4#,##0.00)"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Seletor de Matiz",saturationPickerTitle:"Seletor de Satura\u00e7\u00e3o"}});//>>built
define("dojo/nls/dojo_pt-pt",{"dijit/nls/loading":{loadingState:"A carregar...",errorState:"Lamentamos, mas ocorreu um erro"},"dijit/nls/common":{buttonOk:"OK",buttonCancel:"Cancelar",buttonSave:"Guardar",itemClose:"Fechar"},"dijit/form/nls/validate":{invalidMessage:"O valor introduzido n\u00e3o \u00e9 v\u00e1lido.",missingMessage:"Este valor \u00e9 requerido.",rangeMessage:"Este valor encontra-se fora do intervalo."},"dojo/cldr/nls/number":{decimal:",",group:"\u00a0",list:";",percentSign:"%",plusSign:"+",
minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0Bi",scientificFormat:"#E0",percentFormat:"#,##0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",
-currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"e",greenLabel:"v",blueLabel:"a",hueLabel:"t",saturationLabel:"s",valueLabel:"val",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Selector de tonalidade",saturationPickerTitle:"Selector de satura\u00e7\u00e3o"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_pt-pt.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_ru.js] */
-//>>built
+currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"e",greenLabel:"v",blueLabel:"a",hueLabel:"t",saturationLabel:"s",valueLabel:"val",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Selector de tonalidade",saturationPickerTitle:"Selector de satura\u00e7\u00e3o"}});//>>built
define("dojo/nls/dojo_ru",{"dijit/nls/loading":{loadingState:"\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430...",errorState:"\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430"},"dijit/nls/common":{buttonOk:"OK",buttonCancel:"\u041e\u0442\u043c\u0435\u043d\u0430",buttonSave:"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c",itemClose:"\u0417\u0430\u043a\u0440\u044b\u0442\u044c"},"dijit/form/nls/validate":{invalidMessage:"\u0423\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.",
missingMessage:"\u042d\u0442\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.",rangeMessage:"\u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u043d\u0435 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430."},"dojo/cldr/nls/number":{decimal:",",group:"\u00a0",list:";",percentSign:"%",plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"\u043d\u0435 \u0447\u0438\u0441\u043b\u043e",
decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0\u0442\u0440\u043b\u043d",scientificFormat:"#E0",percentFormat:"#,##0\u00a0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"#,##0.00\u00a0\u00a4"},
-"dojox/widget/nls/ColorPicker":{redLabel:"\u043a",greenLabel:"\u0437",blueLabel:"\u0441",hueLabel:"\u043e",saturationLabel:"\u043d",valueLabel:"\u0437",degLabel:"\u00b0",hexLabel:"\u0448\u0435\u0441\u0442",huePickerTitle:"\u0412\u044b\u0431\u043e\u0440 \u043e\u0442\u0442\u0435\u043d\u043a\u0430",saturationPickerTitle:"\u0412\u044b\u0431\u043e\u0440 \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u0438"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_ru.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_sk.js] */
-//>>built
+"dojox/widget/nls/ColorPicker":{redLabel:"\u043a",greenLabel:"\u0437",blueLabel:"\u0441",hueLabel:"\u043e",saturationLabel:"\u043d",valueLabel:"\u0437",degLabel:"\u00b0",hexLabel:"\u0448\u0435\u0441\u0442",huePickerTitle:"\u0412\u044b\u0431\u043e\u0440 \u043e\u0442\u0442\u0435\u043d\u043a\u0430",saturationPickerTitle:"\u0412\u044b\u0431\u043e\u0440 \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u0438"}});//>>built
define("dojo/nls/dojo_sk",{"dijit/nls/loading":{loadingState:"Zav\u00e1dza sa...",errorState:"\u013dutujeme, ale vyskytla sa chyba"},"dijit/nls/common":{buttonOk:"OK",buttonCancel:"Zru\u0161i\u0165",buttonSave:"Ulo\u017ei\u0165",itemClose:"Zatvori\u0165"},"dijit/form/nls/validate":{invalidMessage:"Zadan\u00e1 hodnota nie je platn\u00e1.",missingMessage:"T\u00e1to hodnota je povinn\u00e1.",rangeMessage:"T\u00e1to hodnota je mimo rozsah."},"dojo/cldr/nls/number":{decimal:",",group:"\u00a0",list:",",
percentSign:"%",plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0bil'.'",scientificFormat:"#E0",percentFormat:"#,##0\u00a0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]",
-"currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"V\u00fdber odtie\u0148a",saturationPickerTitle:"V\u00fdber s\u00fdtosti"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_sk.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_sl.js] */
-//>>built
+"currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"V\u00fdber odtie\u0148a",saturationPickerTitle:"V\u00fdber s\u00fdtosti"}});//>>built
define("dojo/nls/dojo_sl",{"dijit/nls/loading":{loadingState:"Nalaganje ...",errorState:"Oprostite, pri\u0161lo je do napake."},"dijit/nls/common":{buttonOk:"V redu",buttonCancel:"Prekli\u010di",buttonSave:"Shrani",itemClose:"Zapri"},"dijit/form/nls/validate":{invalidMessage:"Vnesena vrednost ni veljavna.",missingMessage:"Ta vrednost je zahtevana.",rangeMessage:"Ta vrednost je izven obmo\u010dja."},"dojo/cldr/nls/number":{decimal:",",group:".",list:";",percentSign:"%",plusSign:"+",minusSign:"-",exponential:"e",
perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0bil'.'",scientificFormat:"#E0",percentFormat:"#,##0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",
-currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Izbirnik odtenka",saturationPickerTitle:"Izbirnik nasi\u010denosti"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_sl.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_sv.js] */
-//>>built
+currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Izbirnik odtenka",saturationPickerTitle:"Izbirnik nasi\u010denosti"}});//>>built
define("dojo/nls/dojo_sv",{"dijit/nls/loading":{loadingState:"L\u00e4ser in...",errorState:"Det har intr\u00e4ffat ett fel."},"dijit/nls/common":{buttonOk:"OK",buttonCancel:"Avbryt",buttonSave:"Spara",itemClose:"St\u00e4ng"},"dijit/form/nls/validate":{invalidMessage:"Angivet v\u00e4rde \u00e4r inte giltigt.",missingMessage:"V\u00e4rdet kr\u00e4vs.",rangeMessage:"V\u00e4rdet ligger utanf\u00f6r intervallet."},"dojo/cldr/nls/number":{decimal:",",group:"\u00a0",list:";",percentSign:"%",plusSign:"+",
minusSign:"\u2212",exponential:"\u00d710^",perMille:"\u2030",infinity:"\u221e",nan:"\u00a4\u00a4\u00a4",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0trl",scientificFormat:"#E0",percentFormat:"#,##0\u00a0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]",
-"currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"n",saturationLabel:"m",valueLabel:"k",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Nyans",saturationPickerTitle:"M\u00e4ttnad"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_sv.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_th.js] */
-//>>built
+"currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"n",saturationLabel:"m",valueLabel:"k",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Nyans",saturationPickerTitle:"M\u00e4ttnad"}});//>>built
define("dojo/nls/dojo_th",{"dijit/nls/loading":{loadingState:"\u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14...",errorState:"\u0e02\u0e2d\u0e2d\u0e20\u0e31\u0e22 \u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14"},"dijit/nls/common":{buttonOk:"\u0e15\u0e01\u0e25\u0e07",buttonCancel:"\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01",buttonSave:"\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01",itemClose:"\u0e1b\u0e34\u0e14"},"dijit/form/nls/validate":{invalidMessage:"\u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e1b\u0e49\u0e2d\u0e19\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07",
missingMessage:"\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e04\u0e48\u0e32\u0e19\u0e35\u0e49",rangeMessage:"\u0e04\u0e48\u0e32\u0e19\u0e35\u0e49\u0e40\u0e01\u0e34\u0e19\u0e0a\u0e48\u0e27\u0e07"},"dojo/cldr/nls/number":{decimal:".",group:",",list:";",percentSign:"%",plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0\u0e25'.'\u0e25'.'",scientificFormat:"#E0",percentFormat:"#,##0%",
"currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"\u00a4#,##0.00;\u00a4-#,##0.00"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"\u0e01.",blueLabel:"b",hueLabel:"\u0e0a\u0e21.",
-saturationLabel:"\u0e27\u0e34.",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2a\u0e35",saturationPickerTitle:"\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e04\u0e27\u0e32\u0e21\u0e2d\u0e34\u0e48\u0e21\u0e02\u0e2d\u0e07\u0e2a\u0e35"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_th.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_tr.js] */
-//>>built
+saturationLabel:"\u0e27\u0e34.",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2a\u0e35",saturationPickerTitle:"\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e04\u0e27\u0e32\u0e21\u0e2d\u0e34\u0e48\u0e21\u0e02\u0e2d\u0e07\u0e2a\u0e35"}});//>>built
define("dojo/nls/dojo_tr",{"dijit/nls/loading":{loadingState:"Y\u00fckleniyor...",errorState:"\u00dczg\u00fcn\u00fcz, bir hata olu\u015ftu"},"dijit/nls/common":{buttonOk:"Tamam",buttonCancel:"\u0130ptal",buttonSave:"Kaydet",itemClose:"Kapat"},"dijit/form/nls/validate":{invalidMessage:"Girilen de\u011fer ge\u00e7ersiz.",missingMessage:"Bu de\u011fer gerekli.",rangeMessage:"Bu de\u011fer aral\u0131k d\u0131\u015f\u0131nda."},"dojo/cldr/nls/number":{decimal:",",group:".",list:";",percentSign:"%",plusSign:"+",
minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000\u00a0T",scientificFormat:"#E0",percentFormat:"%#,##0","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":"\u00a0",
-currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"k",greenLabel:"y",blueLabel:"m",hueLabel:"t",saturationLabel:"d",valueLabel:"d",degLabel:"\u00b0",hexLabel:"onalt\u0131l\u0131",huePickerTitle:"Ton Se\u00e7ici",saturationPickerTitle:"Doygunluk Se\u00e7ici"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_tr.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_zh-cn.js] */
-//>>built
+currencyFormat:"#,##0.00\u00a0\u00a4"},"dojox/widget/nls/ColorPicker":{redLabel:"k",greenLabel:"y",blueLabel:"m",hueLabel:"t",saturationLabel:"d",valueLabel:"d",degLabel:"\u00b0",hexLabel:"onalt\u0131l\u0131",huePickerTitle:"Ton Se\u00e7ici",saturationPickerTitle:"Doygunluk Se\u00e7ici"}});//>>built
define("dojo/nls/dojo_zh-cn",{"dijit/nls/loading":{loadingState:"\u6b63\u5728\u52a0\u8f7d...",errorState:"\u5bf9\u4e0d\u8d77\uff0c\u53d1\u751f\u4e86\u9519\u8bef"},"dijit/nls/common":{buttonOk:"\u786e\u5b9a",buttonCancel:"\u53d6\u6d88",buttonSave:"\u4fdd\u5b58",itemClose:"\u5173\u95ed"},"dijit/form/nls/validate":{invalidMessage:"\u8f93\u5165\u7684\u503c\u65e0\u6548\u3002",missingMessage:"\u8be5\u503c\u662f\u5fc5\u9700\u7684\u3002",rangeMessage:"\u6b64\u503c\u8d85\u51fa\u8303\u56f4\u3002"},"dojo/cldr/nls/number":{decimal:".",
group:",",list:";",percentSign:"%",plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"NaN",decimalFormat:"#,##0.###","decimalFormat-short":"000\u5146",scientificFormat:"#E0",percentFormat:"#,##0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]",
-"currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"\u00a4#,##0.00"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"\u5341\u516d\u8fdb\u5236",huePickerTitle:"\u8272\u5f69\u9009\u62e9\u5668",saturationPickerTitle:"\u9971\u548c\u5ea6\u9009\u62e9\u5668"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_zh-cn.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_zh-tw.js] */
-//>>built
+"currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"\u00a4#,##0.00"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"\u5341\u516d\u8fdb\u5236",huePickerTitle:"\u8272\u5f69\u9009\u62e9\u5668",saturationPickerTitle:"\u9971\u548c\u5ea6\u9009\u62e9\u5668"}});//>>built
define("dojo/nls/dojo_zh-tw",{"dijit/nls/loading":{loadingState:"\u8f09\u5165\u4e2d...",errorState:"\u62b1\u6b49\uff0c\u767c\u751f\u932f\u8aa4"},"dijit/nls/common":{buttonOk:"\u78ba\u5b9a",buttonCancel:"\u53d6\u6d88",buttonSave:"\u5132\u5b58",itemClose:"\u95dc\u9589"},"dijit/form/nls/validate":{invalidMessage:"\u8f38\u5165\u7684\u503c\u7121\u6548\u3002",missingMessage:"\u5fc5\u9808\u63d0\u4f9b\u6b64\u503c\u3002",rangeMessage:"\u6b64\u503c\u8d85\u51fa\u7bc4\u570d\u3002"},"dojo/cldr/nls/number":{decimal:".",
group:",",list:";",percentSign:"%",plusSign:"+",minusSign:"-",exponential:"E",perMille:"\u2030",infinity:"\u221e",nan:"\u975e\u6578\u503c",decimalFormat:"#,##0.###","decimalFormat-short":"000\u5146",scientificFormat:"#E0",percentFormat:"#,##0%","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-insertBetween":"\u00a0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]",
-"currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"\u00a4#,##0.00"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"\u5341\u516d\u9032\u4f4d",huePickerTitle:"\u8272\u8abf\u9078\u53d6\u5143",saturationPickerTitle:"\u98fd\u548c\u5ea6\u9078\u53d6\u5143"}});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/dojo_zh-tw.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/ru/colors.js] */
-//>>built
-define("dojo/nls/ru/colors",{aliceblue:"\u0441\u0435\u0440\u043e-\u0433\u043e\u043b\u0443\u0431\u043e\u0439",antiquewhite:"\u0431\u0435\u043b\u044b\u0439 \u0430\u043d\u0442\u0438\u043a",aqua:"\u0437\u0435\u043b\u0435\u043d\u043e\u0432\u0430\u0442\u043e-\u0433\u043e\u043b\u0443\u0431\u043e\u0439",aquamarine:"\u0430\u043a\u0432\u0430\u043c\u0430\u0440\u0438\u043d",azure:"\u043b\u0430\u0437\u0443\u0440\u043d\u044b\u0439",beige:"\u0431\u0435\u0436\u0435\u0432\u044b\u0439",bisque:"\u0431\u0438\u0441\u043a\u0432\u0438\u0442\u043d\u044b\u0439",
-black:"\u0447\u0435\u0440\u043d\u044b\u0439",blanchedalmond:"\u0441\u0432\u0435\u0442\u043b\u043e-\u043c\u0438\u043d\u0434\u0430\u043b\u044c\u043d\u044b\u0439",blue:"\u0441\u0438\u043d\u0438\u0439",blueviolet:"\u0441\u0438\u043d\u0435-\u0444\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u044b\u0439",brown:"\u043a\u043e\u0440\u0438\u0447\u043d\u0435\u0432\u044b\u0439",burlywood:"\u0441\u0432\u0435\u0442\u043b\u043e-\u043a\u043e\u0440\u0438\u0447\u043d\u0435\u0432\u044b\u0439",cadetblue:"\u0441\u0435\u0440\u043e-\u0441\u0438\u043d\u0438\u0439",
-chartreuse:"\u0436\u0435\u043b\u0442\u043e-\u0441\u0430\u043b\u0430\u0442\u043d\u044b\u0439",chocolate:"\u0448\u043e\u043a\u043e\u043b\u0430\u0434\u043d\u044b\u0439",coral:"\u043a\u043e\u0440\u0430\u043b\u043b\u043e\u0432\u044b\u0439",cornflowerblue:"\u0444\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u043e-\u0441\u0438\u043d\u0438\u0439",cornsilk:"\u0448\u0435\u043b\u043a\u043e\u0432\u044b\u0439 \u043e\u0442\u0442\u0435\u043d\u043e\u043a",crimson:"\u043c\u0430\u043b\u0438\u043d\u043e\u0432\u044b\u0439",
-cyan:"\u0446\u0438\u0430\u043d",darkblue:"\u0442\u0435\u043c\u043d\u043e-\u0441\u0438\u043d\u0438\u0439",darkcyan:"\u0442\u0435\u043c\u043d\u044b\u0439 \u0446\u0438\u0430\u043d",darkgoldenrod:"\u0442\u0435\u043c\u043d\u043e-\u0437\u043e\u043b\u043e\u0442\u0438\u0441\u0442\u044b\u0439",darkgray:"\u0442\u0435\u043c\u043d\u043e-\u0441\u0435\u0440\u044b\u0439",darkgreen:"\u0442\u0435\u043c\u043d\u043e-\u0437\u0435\u043b\u0435\u043d\u044b\u0439",darkgrey:"\u0442\u0435\u043c\u043d\u043e-\u0441\u0435\u0440\u044b\u0439",
-darkkhaki:"\u0442\u0435\u043c\u043d\u044b\u0439 \u0445\u0430\u043a\u0438",darkmagenta:"\u0442\u0435\u043c\u043d\u043e-\u043f\u0443\u0440\u043f\u0443\u0440\u043d\u044b\u0439",darkolivegreen:"\u0442\u0435\u043c\u043d\u043e-\u043e\u043b\u0438\u0432\u043a\u043e\u0432\u044b\u0439",darkorange:"\u0442\u0435\u043c\u043d\u043e-\u043e\u0440\u0430\u043d\u0436\u0435\u0432\u044b\u0439",darkorchid:"\u0442\u0435\u043c\u043d\u044b\u0439 \u043e\u0440\u0441\u0435\u043b\u044c",darkred:"\u0442\u0435\u043c\u043d\u043e-\u043a\u0440\u0430\u0441\u043d\u044b\u0439",
-darksalmon:"\u0442\u0435\u043c\u043d\u043e-\u043b\u043e\u0441\u043e\u0441\u0435\u0432\u044b\u0439",darkseagreen:"\u0442\u0435\u043c\u043d\u044b\u0439 \u043c\u043e\u0440\u0441\u043a\u043e\u0439 \u0432\u043e\u043b\u043d\u044b",darkslateblue:"\u0442\u0435\u043c\u043d\u044b\u0439 \u0433\u0440\u0438\u0444\u0435\u043b\u044c\u043d\u043e-\u0441\u0438\u043d\u0438\u0439",darkslategray:"\u0442\u0435\u043c\u043d\u044b\u0439 \u0433\u0440\u0438\u0444\u0435\u043b\u044c\u043d\u043e-\u0441\u0435\u0440\u044b\u0439",
-darkslategrey:"\u0442\u0435\u043c\u043d\u044b\u0439 \u0433\u0440\u0438\u0444\u0435\u043b\u044c\u043d\u043e-\u0441\u0435\u0440\u044b\u0439",darkturquoise:"\u0442\u0435\u043c\u043d\u044b\u0439 \u0431\u0438\u0440\u044e\u0437\u043e\u0432\u044b\u0439",darkviolet:"\u0442\u0435\u043c\u043d\u043e-\u0444\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u044b\u0439",deeppink:"\u0442\u0435\u043c\u043d\u043e-\u0440\u043e\u0437\u043e\u0432\u044b\u0439",deepskyblue:"\u0442\u0435\u043c\u043d\u044b\u0439 \u043d\u0435\u0431\u0435\u0441\u043d\u043e-\u0433\u043e\u043b\u0443\u0431\u043e\u0439",
-dimgray:"\u0442\u0443\u0441\u043a\u043b\u043e-\u0441\u0435\u0440\u044b\u0439",dimgrey:"\u0442\u0443\u0441\u043a\u043b\u043e-\u0441\u0435\u0440\u044b\u0439",dodgerblue:"\u0431\u043b\u0435\u0434\u043d\u043e-\u0441\u0438\u043d\u0438\u0439",firebrick:"\u043a\u0438\u0440\u043f\u0438\u0447\u043d\u044b\u0439",floralwhite:"\u0446\u0432\u0435\u0442\u043e\u0447\u043d\u043e-\u0431\u0435\u043b\u044b\u0439",forestgreen:"\u0437\u0435\u043b\u0435\u043d\u044b\u0439 \u043b\u0435\u0441\u043d\u043e\u0439",fuchsia:"\u0444\u0443\u043a\u0441\u0438\u043d",
-gainsboro:"\u0431\u043b\u0435\u0434\u043d\u043e-\u0441\u0435\u0440\u044b\u0439",ghostwhite:"\u043f\u0440\u0438\u0437\u0440\u0430\u0447\u043d\u043e-\u0431\u0435\u043b\u044b\u0439",gold:"\u0437\u043e\u043b\u043e\u0442\u043e\u0439",goldenrod:"\u0437\u043e\u043b\u043e\u0442\u0438\u0441\u0442\u044b\u0439",gray:"\u0441\u0435\u0440\u044b\u0439",green:"\u0437\u0435\u043b\u0435\u043d\u044b\u0439",greenyellow:"\u0437\u0435\u043b\u0435\u043d\u043e-\u0436\u0435\u043b\u0442\u044b\u0439",grey:"\u0441\u0435\u0440\u044b\u0439",
-honeydew:"\u043c\u0435\u0434\u043e\u0432\u044b\u0439",hotpink:"\u043a\u0440\u0430\u0441\u043d\u043e-\u0440\u043e\u0437\u043e\u0432\u044b\u0439",indianred:"\u0438\u043d\u0434\u0438\u0439\u0441\u043a\u0438\u0439 \u043a\u0440\u0430\u0441\u043d\u044b\u0439",indigo:"\u0438\u043d\u0434\u0438\u0433\u043e",ivory:"\u0441\u043b\u043e\u043d\u043e\u0432\u043e\u0439 \u043a\u043e\u0441\u0442\u0438",khaki:"\u0445\u0430\u043a\u0438",lavender:"\u0431\u043b\u0435\u0434\u043d\u043e-\u043b\u0438\u043b\u043e\u0432\u044b\u0439",
-lavenderblush:"\u0440\u043e\u0437\u043e\u0432\u0430\u0442\u043e-\u043b\u0438\u043b\u043e\u0432\u044b\u0439",lawngreen:"\u0437\u0435\u043b\u0435\u043d\u0430\u044f \u043b\u0443\u0436\u0430\u0439\u043a\u0430",lemonchiffon:"\u0431\u043b\u0435\u0434\u043d\u043e-\u043b\u0438\u043c\u043e\u043d\u043d\u044b\u0439",lightblue:"\u0441\u0432\u0435\u0442\u043b\u043e-\u0441\u0438\u043d\u0438\u0439",lightcoral:"\u0441\u0432\u0435\u0442\u043b\u043e-\u043a\u043e\u0440\u0430\u043b\u043b\u043e\u0432\u044b\u0439",lightcyan:"\u0441\u0432\u0435\u0442\u043b\u044b\u0439 \u0446\u0438\u0430\u043d",
-lightgoldenrodyellow:"\u0441\u0432\u0435\u0442\u043b\u043e-\u0437\u043e\u043b\u043e\u0442\u0438\u0441\u0442\u044b\u0439",lightgray:"\u0441\u0432\u0435\u0442\u043b\u043e-\u0441\u0435\u0440\u044b\u0439",lightgreen:"\u0441\u0432\u0435\u0442\u043b\u043e-\u0437\u0435\u043b\u0435\u043d\u044b\u0439",lightgrey:"\u0441\u0432\u0435\u0442\u043b\u043e-\u0441\u0435\u0440\u044b\u0439",lightpink:"\u0441\u0432\u0435\u0442\u043b\u043e-\u0440\u043e\u0437\u043e\u0432\u044b\u0439",lightsalmon:"\u0441\u0432\u0435\u0442\u043b\u043e-\u043b\u043e\u0441\u043e\u0441\u0435\u0432\u044b\u0439",
-lightseagreen:"\u0441\u0432\u0435\u0442\u043b\u044b\u0439 \u043c\u043e\u0440\u0441\u043a\u043e\u0439 \u0432\u043e\u043b\u043d\u044b",lightskyblue:"\u0441\u0432\u0435\u0442\u043b\u044b\u0439 \u043d\u0435\u0431\u0435\u0441\u043d\u043e-\u0433\u043e\u043b\u0443\u0431\u043e\u0439",lightslategray:"\u0441\u0432\u0435\u0442\u043b\u044b\u0439 \u0433\u0440\u0438\u0444\u0435\u043b\u044c\u043d\u043e-\u0441\u0435\u0440\u044b\u0439",lightslategrey:"\u0441\u0432\u0435\u0442\u043b\u044b\u0439 \u0433\u0440\u0438\u0444\u0435\u043b\u044c\u043d\u043e-\u0441\u0435\u0440\u044b\u0439",
-lightsteelblue:"\u0441\u0432\u0435\u0442\u043b\u044b\u0439 \u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0439",lightyellow:"\u0441\u0432\u0435\u0442\u043b\u043e-\u0436\u0435\u043b\u0442\u044b\u0439",lime:"\u043b\u0430\u0439\u043c",limegreen:"\u0437\u0435\u043b\u0435\u043d\u044b\u0439 \u043b\u0430\u0439\u043c",linen:"\u0445\u043b\u043e\u043f\u043a\u043e\u0432\u044b\u0439",magenta:"\u043f\u0443\u0440\u043f\u0443\u0440\u043d\u044b\u0439",maroon:"\u0442\u0435\u043c\u043d\u043e-\u0431\u043e\u0440\u0434\u043e\u0432\u044b\u0439",
-mediumaquamarine:"\u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u043a\u0432\u0430\u043c\u0430\u0440\u0438\u043d",mediumblue:"\u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u043d\u0438\u0439",mediumorchid:"\u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0440\u0441\u0435\u043b\u044c",mediumpurple:"\u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u044b\u0439",
-mediumseagreen:"\u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u043e\u0440\u0441\u043a\u043e\u0439 \u0432\u043e\u043b\u043d\u044b",mediumslateblue:"\u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u0433\u0440\u0438\u0444\u0435\u043b\u044c\u043d\u043e-\u0441\u0438\u043d\u0438\u0439",mediumspringgreen:"\u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0435\u0441\u0435\u043d\u043d\u0435-\u0437\u0435\u043b\u0435\u043d\u044b\u0439",
-mediumturquoise:"\u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u0438\u0440\u044e\u0437\u043e\u0432\u044b\u0439",mediumvioletred:"\u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u043e-\u043a\u0440\u0430\u0441\u043d\u044b\u0439",midnightblue:"\u043f\u043e\u043b\u0443\u043d\u043e\u0447\u043d\u043e-\u0441\u0438\u043d\u0438\u0439",mintcream:"\u043c\u044f\u0442\u043d\u043e-\u043a\u0440\u0435\u043c\u043e\u0432\u044b\u0439",
-mistyrose:"\u0431\u043b\u0435\u043a\u043b\u043e-\u0440\u043e\u0437\u043e\u0432\u044b\u0439",moccasin:"\u043c\u043e\u043a\u0430\u0441\u0438\u043d",navajowhite:"\u0431\u0435\u043b\u044b\u0439 \u043d\u0430\u0432\u0430\u0445\u043e",navy:"\u0442\u0435\u043c\u043d\u043e-\u0441\u0438\u043d\u0438\u0439",oldlace:"\u043c\u0430\u0442\u043e\u0432\u043e-\u0431\u0435\u043b\u044b\u0439",olive:"\u043e\u043b\u0438\u0432\u043a\u043e\u0432\u044b\u0439",olivedrab:"\u0436\u0435\u043b\u0442\u043e\u0432\u0430\u0442\u043e-\u0441\u0435\u0440\u044b\u0439",
-orange:"\u043e\u0440\u0430\u043d\u0436\u0435\u0432\u044b\u0439",orangered:"\u043e\u0440\u0430\u043d\u0436\u0435\u0432\u043e-\u043a\u0440\u0430\u0441\u043d\u044b\u0439",orchid:"\u043e\u0440\u0441\u0435\u043b\u044c",palegoldenrod:"\u0431\u043b\u0435\u0434\u043d\u043e-\u0437\u043e\u043b\u043e\u0442\u0438\u0441\u0442\u044b\u0439",palegreen:"\u0431\u043b\u0435\u0434\u043d\u043e-\u0437\u0435\u043b\u0435\u043d\u044b\u0439",paleturquoise:"\u0431\u043b\u0435\u0434\u043d\u043e-\u0431\u0438\u0440\u044e\u0437\u043e\u0432\u044b\u0439",
-palevioletred:"\u0431\u043b\u0435\u0434\u043d\u044b\u0439 \u0444\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u043e-\u043a\u0440\u0430\u0441\u043d\u044b\u0439",papayawhip:"\u0447\u0435\u0440\u0435\u043d\u043e\u043a \u043f\u0430\u043f\u0430\u0439\u0438",peachpuff:"\u043f\u0435\u0440\u0441\u0438\u043a\u043e\u0432\u044b\u0439",peru:"\u043f\u0435\u0440\u0443",pink:"\u0440\u043e\u0437\u043e\u0432\u044b\u0439",plum:"\u0441\u043b\u0438\u0432\u043e\u0432\u044b\u0439",powderblue:"\u043f\u043e\u0440\u043e\u0445\u043e\u0432\u043e\u0439",
-purple:"\u0444\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u044b\u0439",red:"\u043a\u0440\u0430\u0441\u043d\u044b\u0439",rosybrown:"\u0440\u043e\u0437\u043e\u0432\u043e-\u043a\u043e\u0440\u0438\u0447\u043d\u0435\u0432\u044b\u0439",royalblue:"\u043a\u043e\u0440\u043e\u043b\u0435\u0432\u0441\u043a\u0438\u0439 \u0433\u043e\u043b\u0443\u0431\u043e\u0439",saddlebrown:"\u043a\u043e\u0436\u0430\u043d\u043e-\u043a\u043e\u0440\u0438\u0447\u043d\u0435\u0432\u044b\u0439",salmon:"\u043b\u043e\u0441\u043e\u0441\u0435\u0432\u044b\u0439",
-sandybrown:"\u043a\u043e\u0440\u0438\u0447\u043d\u0435\u0432\u043e-\u043f\u0435\u0441\u0447\u0430\u043d\u044b\u0439",seagreen:"\u043c\u043e\u0440\u0441\u043a\u043e\u0439 \u0432\u043e\u043b\u043d\u044b",seashell:"\u043c\u043e\u0440\u0441\u043a\u0430\u044f \u0440\u0430\u043a\u043e\u0432\u0438\u043d\u0430",sienna:"\u043e\u0445\u0440\u0430",silver:"\u0441\u0435\u0440\u0435\u0431\u0440\u0438\u0441\u0442\u044b\u0439",skyblue:"\u043d\u0435\u0431\u0435\u0441\u043d\u043e-\u0433\u043e\u043b\u0443\u0431\u043e\u0439",
-slateblue:"\u0433\u0440\u0438\u0444\u0435\u043b\u044c\u043d\u043e-\u0441\u0438\u043d\u0438\u0439",slategray:"\u0433\u0440\u0438\u0444\u0435\u043b\u044c\u043d\u043e-\u0441\u0435\u0440\u044b\u0439",slategrey:"\u0433\u0440\u0438\u0444\u0435\u043b\u044c\u043d\u043e-\u0441\u0435\u0440\u044b\u0439",snow:"\u0431\u0435\u043b\u043e\u0441\u043d\u0435\u0436\u043d\u044b\u0439",springgreen:"\u0432\u0435\u0441\u0435\u043d\u043d\u0438\u0439 \u0437\u0435\u043b\u0435\u043d\u044b\u0439",steelblue:"\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0439",
-tan:"\u0440\u044b\u0436\u0435\u0432\u0430\u0442\u043e-\u043a\u043e\u0440\u0438\u0447\u043d\u0435\u0432\u044b\u0439",teal:"\u0447\u0438\u0440\u043e\u043a",thistle:"\u0447\u0435\u0440\u0442\u043e\u043f\u043e\u043b\u043e\u0445",tomato:"\u043f\u043e\u043c\u0438\u0434\u043e\u0440",transparent:"\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0439",turquoise:"\u0431\u0438\u0440\u044e\u0437\u043e\u0432\u044b\u0439",violet:"\u0444\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u044b\u0439",wheat:"\u043f\u0448\u0435\u043d\u0438\u0446\u0430",
-white:"\u0431\u0435\u043b\u044b\u0439",whitesmoke:"\u0434\u044b\u043c\u0447\u0430\u0442\u043e-\u0431\u0435\u043b\u044b\u0439",yellow:"\u0436\u0435\u043b\u0442\u044b\u0439",yellowgreen:"\u0436\u0435\u043b\u0442\u043e-\u0437\u0435\u043b\u0435\u043d\u044b\u0439"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojo/nls/ru/colors.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/atom/widget/nls/FeedEntryEditor.js] */
-//>>built
-define("dojox/atom/widget/nls/FeedEntryEditor",{root:{doNew:"[new]",edit:"[edit]",save:"[save]",cancel:"[cancel]"},ar:!0,az:!0,ca:!0,cs:!0,da:!0,de:!0,el:!0,es:!0,fi:!0,fr:!0,he:!0,hu:!0,hr:!0,it:!0,ja:!0,kk:!0,ko:!0,nb:!0,nl:!0,pl:!0,"pt-pt":!0,pt:!0,ro:!0,ru:!0,sk:!0,sl:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-tw":!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/atom/widget/nls/FeedEntryEditor.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/atom/widget/nls/FeedEntryViewer.js] */
-//>>built
-define("dojox/atom/widget/nls/FeedEntryViewer",{root:{displayOptions:"[display options]",title:"Title",authors:"Authors",contributors:"Contributors",id:"ID",close:"[close]",updated:"Updated",summary:"Summary",content:"Content"},ar:!0,az:!0,ca:!0,cs:!0,da:!0,de:!0,el:!0,es:!0,fi:!0,fr:!0,he:!0,hu:!0,hr:!0,it:!0,ja:!0,kk:!0,ko:!0,nb:!0,nl:!0,pl:!0,"pt-pt":!0,pt:!0,ro:!0,ru:!0,sk:!0,sl:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-tw":!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/atom/widget/nls/FeedEntryViewer.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/atom/widget/nls/FeedViewerEntry.js] */
-//>>built
-define("dojox/atom/widget/nls/FeedViewerEntry",{root:{deleteButton:"[Delete]"},ar:!0,az:!0,ca:!0,cs:!0,da:!0,de:!0,el:!0,es:!0,fi:!0,fr:!0,he:!0,hu:!0,hr:!0,it:!0,ja:!0,kk:!0,ko:!0,nb:!0,nl:!0,pl:!0,"pt-pt":!0,pt:!0,ro:!0,ru:!0,sk:!0,sl:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-tw":!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/atom/widget/nls/FeedViewerEntry.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/atom/widget/nls/PeopleEditor.js] */
-//>>built
-define("dojox/atom/widget/nls/PeopleEditor",{root:{add:"Add",addAuthor:"Add Author",addContributor:"Add Contributor"},ar:!0,az:!0,ca:!0,cs:!0,da:!0,de:!0,el:!0,es:!0,fi:!0,fr:!0,he:!0,hu:!0,hr:!0,it:!0,ja:!0,kk:!0,ko:!0,nb:!0,nl:!0,pl:!0,"pt-pt":!0,pt:!0,ro:!0,ru:!0,sk:!0,sl:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-tw":!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/atom/widget/nls/PeopleEditor.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/atom/widget/nls/de/FeedEntryEditor.js] */
-//>>built
-define("dojox/atom/widget/nls/de/FeedEntryEditor",{doNew:"[Neu]",edit:"[Bearbeiten]",save:"[Speichern]",cancel:"[Abbrechen]"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/atom/widget/nls/de/FeedEntryEditor.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/atom/widget/nls/de/FeedEntryViewer.js] */
-//>>built
-define("dojox/atom/widget/nls/de/FeedEntryViewer",{displayOptions:"[Anzeigeoptionen]",title:"Titel",authors:"Autoren",contributors:"Mitwirkende",id:"ID",close:"[Schlie\u00dfen]",updated:"Aktualisiert",summary:"Zusammenfassung",content:"Inhalt"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/atom/widget/nls/de/FeedEntryViewer.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/atom/widget/nls/de/FeedViewerEntry.js] */
-//>>built
-define("dojox/atom/widget/nls/de/FeedViewerEntry",{deleteButton:"[L\u00f6schen]"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/atom/widget/nls/de/FeedViewerEntry.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/atom/widget/nls/de/PeopleEditor.js] */
-//>>built
-define("dojox/atom/widget/nls/de/PeopleEditor",{add:"Hinzuf\u00fcgen",addAuthor:"Autor hinzuf\u00fcgen",addContributor:"Mitwirkenden hinzuf\u00fcgen"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/atom/widget/nls/de/PeopleEditor.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/atom/widget/nls/ru/FeedEntryEditor.js] */
-//>>built
-define("dojox/atom/widget/nls/ru/FeedEntryEditor",{doNew:"[\u0441\u043e\u0437\u0434\u0430\u0442\u044c]",edit:"[\u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c]",save:"[\u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c]",cancel:"[\u043e\u0442\u043c\u0435\u043d\u0430]"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/atom/widget/nls/ru/FeedEntryEditor.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/atom/widget/nls/ru/FeedEntryViewer.js] */
-//>>built
-define("dojox/atom/widget/nls/ru/FeedEntryViewer",{displayOptions:"[\u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u043f\u0446\u0438\u0438]",title:"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435",authors:"\u0410\u0432\u0442\u043e\u0440\u044b",contributors:"\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438",id:"\u0418\u0414",close:"[\u0437\u0430\u043a\u0440\u044b\u0442\u044c]",updated:"\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043e",summary:"\u0421\u0432\u043e\u0434\u043a\u0430",
-content:"\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u043d\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/atom/widget/nls/ru/FeedEntryViewer.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/atom/widget/nls/ru/FeedViewerEntry.js] */
-//>>built
-define("dojox/atom/widget/nls/ru/FeedViewerEntry",{deleteButton:"[\u0423\u0434\u0430\u043b\u0438\u0442\u044c]"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/atom/widget/nls/ru/FeedViewerEntry.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/atom/widget/nls/ru/PeopleEditor.js] */
-//>>built
-define("dojox/atom/widget/nls/ru/PeopleEditor",{add:"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c",addAuthor:"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u0440\u0430",addContributor:"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/atom/widget/nls/ru/PeopleEditor.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/calendar/nls/buttons.js] */
-//>>built
-define("dojox/calendar/nls/buttons",{root:{previousButton:"\u25c4",nextButton:"\u25ba",todayButton:"Today",dayButton:"Day",weekButton:"Week",fourDaysButton:"4 Days",monthButton:"Month"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/calendar/nls/buttons.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/calendar/nls/de/buttons.js] */
-//>>built
-define("dojox/calendar/nls/de/buttons",{previousButton:"\u25c4",nextButton:"\u25ba",todayButton:"Heute",dayButton:"Tag",weekButton:"Woche",fourDaysButton:"4 Tage",monthButton:"Monat"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/calendar/nls/de/buttons.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/calendar/nls/ru/buttons.js] */
-//>>built
-define("dojox/calendar/nls/ru/buttons",{previousButton:"\u25c4",nextButton:"\u25ba",todayButton:"\u0421\u0435\u0433\u043e\u0434\u043d\u044f",dayButton:"\u0414\u0435\u043d\u044c",weekButton:"\u041d\u0435\u0434\u0435\u043b\u044f",fourDaysButton:"4 \u0434\u043d\u044f",monthButton:"\u041c\u0435\u0441\u044f\u0446"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/calendar/nls/ru/buttons.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/AutoSave.js] */
-//>>built
+"currencySpacing-afterCurrency-insertBetween":"\u00a0",currencyFormat:"\u00a4#,##0.00"},"dojox/widget/nls/ColorPicker":{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"\u5341\u516d\u9032\u4f4d",huePickerTitle:"\u8272\u8abf\u9078\u53d6\u5143",saturationPickerTitle:"\u98fd\u548c\u5ea6\u9078\u53d6\u5143"}});//>>built
+define("dojo/nls/fr/colors",{aliceblue:"bleu gris",antiquewhite:"blanc antique",aqua:"bleu-vert",aquamarine:"aigue-marine",azure:"bleu azur",beige:"beige",bisque:"beige ros\u00e9",black:"noir",blanchedalmond:"coquille d'\u0153uf",blue:"bleu",blueviolet:"bleu-violet",brown:"brun",burlywood:"bois pr\u00e9cieux",cadetblue:"bleu p\u00e9trole",chartreuse:"vert vif",chocolate:"chocolat",coral:"corail",cornflowerblue:"bleuet",cornsilk:"vanille",crimson:"cramoisi",cyan:"cyan",darkblue:"bleu fonc\u00e9",darkcyan:"cyan fonc\u00e9",
+darkgoldenrod:"jaune paille fonc\u00e9",darkgray:"gris fonc\u00e9",darkgreen:"vert fonc\u00e9",darkgrey:"gris fonc\u00e9",darkkhaki:"kaki fonc\u00e9",darkmagenta:"magenta fonc\u00e9",darkolivegreen:"olive fonc\u00e9",darkorange:"orange fonc\u00e9",darkorchid:"lilas fonc\u00e9",darkred:"rouge fonc\u00e9",darksalmon:"saumon fonc\u00e9",darkseagreen:"vert d'eau fonc\u00e9",darkslateblue:"bleu ardoise fonc\u00e9",darkslategray:"gris ardoise fonc\u00e9",darkslategrey:"gris ardoise fonc\u00e9",darkturquoise:"turquoise fonc\u00e9",
+darkviolet:"violet fonc\u00e9",deeppink:"rose soutenu",deepskyblue:"bleu ciel soutenu",dimgray:"gris soutenu",dimgrey:"gris soutenu",dodgerblue:"bleu France",firebrick:"rouge brique",floralwhite:"lys",forestgreen:"vert sapin",fuchsia:"fuchsia",gainsboro:"gris souris",ghostwhite:"blanc laiteux",gold:"or",goldenrod:"jaune paille",gray:"gris",green:"vert",greenyellow:"vert-jaune",grey:"gris",honeydew:"opalin",hotpink:"rose intense",indianred:"rose indien",indigo:"indigo",ivory:"ivoire",khaki:"kaki",
+lavender:"lavande",lavenderblush:"lavandin",lawngreen:"vert prairie",lemonchiffon:"mousse de citron",lightblue:"bleu clair",lightcoral:"corail clair",lightcyan:"cyan clair",lightgoldenrodyellow:"jaune paille clair",lightgray:"gris clair",lightgreen:"vert clair",lightgrey:"gris clair",lightpink:"rose clair",lightsalmon:"saumon clair",lightseagreen:"vert d'eau clair",lightskyblue:"bleu ciel clair",lightslategray:"gris ardoise clair",lightslategrey:"gris ardoise clair",lightsteelblue:"bleu acier clair",
+lightyellow:"jaune clair",lime:"vert citron",limegreen:"citron vert",linen:"\u00e9cru",magenta:"magenta",maroon:"marron",mediumaquamarine:"aigue-marine moyen",mediumblue:"bleu moyen",mediumorchid:"lilas moyen",mediumpurple:"pourpre moyen",mediumseagreen:"vert d'eau moyen",mediumslateblue:"bleu ardoise moyen",mediumspringgreen:"vert printemps moyen",mediumturquoise:"turquoise moyen",mediumvioletred:"rouge violac\u00e9 moyen",midnightblue:"bleu nuit",mintcream:"cr\u00e8me de menthe",mistyrose:"rose p\u00e2le",
+moccasin:"chamois",navajowhite:"chair",navy:"bleu marine",oldlace:"blanc cass\u00e9",olive:"olive",olivedrab:"brun verd\u00e2tre",orange:"orange",orangered:"rouge orang\u00e9",orchid:"lilas",palegoldenrod:"jaune paille p\u00e2le",palegreen:"vert p\u00e2le",paleturquoise:"turquoise p\u00e2le",palevioletred:"rouge violac\u00e9 p\u00e2le",papayawhip:"cr\u00e8me de papaye",peachpuff:"p\u00eache",peru:"caramel",pink:"rose",plum:"prune",powderblue:"bleu de smalt",purple:"pourpre",red:"rouge",rosybrown:"vieux rose",
+royalblue:"bleu roi",saddlebrown:"brun cuir",salmon:"saumon",sandybrown:"sable",seagreen:"vert d'eau",seashell:"coquillage",sienna:"terre de sienne",silver:"argent",skyblue:"bleu ciel",slateblue:"bleu ardoise",slategray:"gris ardoise",slategrey:"gris ardoise",snow:"neige",springgreen:"vert printemps",steelblue:"bleu acier",tan:"gr\u00e8ge",teal:"sarcelle",thistle:"chardon",tomato:"tomate",transparent:"transparent",turquoise:"turquoise",violet:"violet",wheat:"bl\u00e9",white:"blanc",whitesmoke:"blanc cendr\u00e9",
+yellow:"jaune",yellowgreen:"vert jaun\u00e2tre"});//>>built
+define("dojo/nls/it/colors",{aliceblue:"bianco ghiaccio",antiquewhite:"rosa antico",aqua:"verde acqua",aquamarine:"acquamarina",azure:"azure",beige:"beige",bisque:"terracotta",black:"nero",blanchedalmond:"beige 2",blue:"blu",blueviolet:"violetto bluastro",brown:"marrone",burlywood:"legno massiccio",cadetblue:"verde petrolio",chartreuse:"verde brillante",chocolate:"cioccolato",coral:"corallo",cornflowerblue:"blu fiordaliso",cornsilk:"crema",crimson:"rosso scarlatto",cyan:"ciano",darkblue:"blu scuro",
+darkcyan:"celeste scuro",darkgoldenrod:"ocra scuro",darkgray:"grigio scuro",darkgreen:"verde scuro",darkgrey:"grigio scuro",darkkhaki:"cachi scuro",darkmagenta:"magenta scuro",darkolivegreen:"verde oliva scuro",darkorange:"arancione scuro",darkorchid:"orchidea scuro",darkred:"rosso scuro",darksalmon:"salmone scuro",darkseagreen:"verde acqua scuro",darkslateblue:"blu ardesia scuro",darkslategray:"grigio ardesia scuro",darkslategrey:"grigio ardesia scuro",darkturquoise:"turchese scuro",darkviolet:"viola scuro",
+deeppink:"ciclamino",deepskyblue:"azzurro intenso",dimgray:"grigio tenue",dimgrey:"grigio tenue",dodgerblue:"dodger blue",firebrick:"mattone",floralwhite:"bianco grigio",forestgreen:"verde pino scuro",fuchsia:"fucsia",gainsboro:"gainsboro",ghostwhite:"bianco gesso",gold:"oro",goldenrod:"dorato",gray:"grigio",green:"verde",greenyellow:"verde-giallo",grey:"grigio",honeydew:"miele",hotpink:"rosa acceso",indianred:"terra indiana",indigo:"indaco",ivory:"avorio",khaki:"cachi",lavender:"lavanda",lavenderblush:"lavanda rosa",
+lawngreen:"verde brillante chiaro",lemonchiffon:"lemon chiffon",lightblue:"blu chiaro",lightcoral:"corallo chiaro",lightcyan:"ciano chiaro",lightgoldenrodyellow:"giallo dorato chiaro",lightgray:"grigio chiaro",lightgreen:"verde chiaro",lightgrey:"grigio chiaro",lightpink:"rosa chiaro",lightsalmon:"salmone chiaro",lightseagreen:"verde acqua chiaro",lightskyblue:"azzurro chiaro",lightslategray:"grigio ardesia chiaro",lightslategrey:"grigio ardesia chiaro",lightsteelblue:"blu acciaio chiaro",lightyellow:"giallo chiaro",
+lime:"lime",limegreen:"verde lime",linen:"lino",magenta:"magenta",maroon:"Bordeaux",mediumaquamarine:"acquamarina medio",mediumblue:"blu medio",mediumorchid:"orchidea medio",mediumpurple:"viola medio",mediumseagreen:"verde acqua medio",mediumslateblue:"blu ardesia medio",mediumspringgreen:"verde brillante medio",mediumturquoise:"turchese medio",mediumvioletred:"violetto rosso medio",midnightblue:"blu notte",mintcream:"bianco nuvola",mistyrose:"rosa pallido",moccasin:"mocassino",navajowhite:"sabbia",
+navy:"blu scuro",oldlace:"mandorla",olive:"verde oliva",olivedrab:"verde bottiglia",orange:"arancione",orangered:"vermiglio",orchid:"orchidea",palegoldenrod:"dorato pallido",palegreen:"verde pallido",paleturquoise:"turchese pallido",palevioletred:"violetto rosso pallido",papayawhip:"papaya",peachpuff:"pesche",peru:"per\u00f9",pink:"rosa",plum:"prugna",powderblue:"azzurro polvere",purple:"viola",red:"rosso",rosybrown:"caff\u00e8 latte",royalblue:"royal blue",saddlebrown:"cacao",salmon:"salmone",sandybrown:"argilla",
+seagreen:"verde acqua",seashell:"sabbia rosa",sienna:"terra di siena",silver:"argento",skyblue:"azzurro",slateblue:"blu ardesia",slategray:"grigio ardesia",slategrey:"grigio ardesia",snow:"neve",springgreen:"verde brillante",steelblue:"blu brillante",tan:"tan",teal:"verde acqua",thistle:"rosa cenere",tomato:"pomodoro",transparent:"trasparente",turquoise:"turchese",violet:"violetto",wheat:"tabacco",white:"bianco",whitesmoke:"bianco fumo",yellow:"giallo",yellowgreen:"giallo verde"});//>>built
+define("dojo/nls/nl/colors",{aliceblue:"lichtblauw",antiquewhite:"antiekwit",aqua:"aqua",aquamarine:"aquamarijn",azure:"azuur",beige:"beige",bisque:"oranjegeel",black:"zwart",blanchedalmond:"amandel",blue:"blauw",blueviolet:"violet",brown:"bruin",burlywood:"lichtbruin",cadetblue:"donkerstaalblauw",chartreuse:"groengeel",chocolate:"chocoladebruin",coral:"koraalrood",cornflowerblue:"korenbloemblauw",cornsilk:"ma\u00efsgeel",crimson:"karmozijnrood",cyan:"cyaan",darkblue:"donkerblauw",darkcyan:"donkercyaan",
+darkgoldenrod:"donkergoud",darkgray:"donkergrijs",darkgreen:"donkergroen",darkgrey:"donkergrijs",darkkhaki:"donkerkaki",darkmagenta:"donkermagenta",darkolivegreen:"donkerolijfgroen",darkorange:"donkeroranje",darkorchid:"donkerorchidee",darkred:"donkerrood",darksalmon:"donkerzalm",darkseagreen:"donkerzeegroen",darkslateblue:"donkergrijsblauw",darkslategray:"donkerblauwgrijs",darkslategrey:"donkerblauwgrijs",darkturquoise:"donkerturquoise",darkviolet:"donkerviolet",deeppink:"donkerroze",deepskyblue:"diephemelblauw",
+dimgray:"dofgrijs",dimgrey:"dofgrijs",dodgerblue:"helderblauw",firebrick:"vuursteenrood",floralwhite:"rozewit",forestgreen:"bosgroen",fuchsia:"fuchsia",gainsboro:"lichtblauwgrijs",ghostwhite:"spierwit",gold:"goud",goldenrod:"goudbruin",gray:"grijs",green:"groen",greenyellow:"groengeel",grey:"grijs",honeydew:"meloen",hotpink:"acaciaroze",indianred:"indisch rood",indigo:"indigo",ivory:"ivoorwit",khaki:"kaki",lavender:"lavendelblauw",lavenderblush:"lavendelblos",lawngreen:"grasgroen",lemonchiffon:"citroengeel",
+lightblue:"lichtblauw",lightcoral:"lichtkoraal",lightcyan:"lichtcyaan",lightgoldenrodyellow:"lichtgoudgeel",lightgray:"lichtgrijs",lightgreen:"lichtgroen",lightgrey:"lichtgrijs",lightpink:"lichtroze",lightsalmon:"lichtzalm",lightseagreen:"lichtzeegroen",lightskyblue:"lichthemelsblauw",lightslategray:"lichtblauwgrijs",lightslategrey:"lichtblauwgrijs",lightsteelblue:"lichtstaalblauw",lightyellow:"lichtgeel",lime:"limoen",limegreen:"limoengroen",linen:"linnen",magenta:"magenta",maroon:"kastanjebruin",
+mediumaquamarine:"midaquamarijn",mediumblue:"midblauw",mediumorchid:"midorchidee",mediumpurple:"midpurper",mediumseagreen:"midzeegroen",mediumslateblue:"midgrijsblauw",mediumspringgreen:"midlentegroen",mediumturquoise:"midturquoise",mediumvioletred:"midvioletrood",midnightblue:"nachtblauw",mintcream:"mintroomgeel",mistyrose:"matroze",moccasin:"moccasin",navajowhite:"navajowit",navy:"marineblauw",oldlace:"kant",olive:"olijfgroen",olivedrab:"grijsbruin",orange:"oranje",orangered:"oranjerood",orchid:"orchidee",
+palegoldenrod:"bleekgeel",palegreen:"bleekgroen",paleturquoise:"bleekturquoise",palevioletred:"bleekvioletrood",papayawhip:"papajaroze",peachpuff:"perzikroze",peru:"bruin",pink:"roze",plum:"pruim",powderblue:"lichtblauw-wit",purple:"purper",red:"rood",rosybrown:"roodbruin",royalblue:"koningsblauw",saddlebrown:"leerbruin",salmon:"zalm",sandybrown:"zandbruin",seagreen:"zeegroen",seashell:"schelp",sienna:"sienna",silver:"zilvergrijs",skyblue:"hemelsblauw",slateblue:"leiblauw",slategray:"leigrijs",slategrey:"leigrijs",
+snow:"sneeuwwit",springgreen:"lentegroen",steelblue:"staalblauw",tan:"geelbruin",teal:"grijsblauw",thistle:"distel",tomato:"tomaat",transparent:"transparant",turquoise:"turquoise",violet:"violet",wheat:"tarwebruin",white:"wit",whitesmoke:"rookwit",yellow:"geel",yellowgreen:"geelgroen"});//>>built
+define("dojox/atom/widget/nls/FeedEntryEditor",{root:{doNew:"[new]",edit:"[edit]",save:"[save]",cancel:"[cancel]"},ar:!0,az:!0,ca:!0,cs:!0,da:!0,de:!0,el:!0,es:!0,fi:!0,fr:!0,he:!0,hu:!0,hr:!0,it:!0,ja:!0,kk:!0,ko:!0,nb:!0,nl:!0,pl:!0,"pt-pt":!0,pt:!0,ro:!0,ru:!0,sk:!0,sl:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-tw":!0});//>>built
+define("dojox/atom/widget/nls/FeedEntryViewer",{root:{displayOptions:"[display options]",title:"Title",authors:"Authors",contributors:"Contributors",id:"ID",close:"[close]",updated:"Updated",summary:"Summary",content:"Content"},ar:!0,az:!0,ca:!0,cs:!0,da:!0,de:!0,el:!0,es:!0,fi:!0,fr:!0,he:!0,hu:!0,hr:!0,it:!0,ja:!0,kk:!0,ko:!0,nb:!0,nl:!0,pl:!0,"pt-pt":!0,pt:!0,ro:!0,ru:!0,sk:!0,sl:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-tw":!0});//>>built
+define("dojox/atom/widget/nls/FeedViewerEntry",{root:{deleteButton:"[Delete]"},ar:!0,az:!0,ca:!0,cs:!0,da:!0,de:!0,el:!0,es:!0,fi:!0,fr:!0,he:!0,hu:!0,hr:!0,it:!0,ja:!0,kk:!0,ko:!0,nb:!0,nl:!0,pl:!0,"pt-pt":!0,pt:!0,ro:!0,ru:!0,sk:!0,sl:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-tw":!0});//>>built
+define("dojox/atom/widget/nls/PeopleEditor",{root:{add:"Add",addAuthor:"Add Author",addContributor:"Add Contributor"},ar:!0,az:!0,ca:!0,cs:!0,da:!0,de:!0,el:!0,es:!0,fi:!0,fr:!0,he:!0,hu:!0,hr:!0,it:!0,ja:!0,kk:!0,ko:!0,nb:!0,nl:!0,pl:!0,"pt-pt":!0,pt:!0,ro:!0,ru:!0,sk:!0,sl:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-tw":!0});//>>built
+define("dojox/atom/widget/nls/de/FeedEntryEditor",{doNew:"[Neu]",edit:"[Bearbeiten]",save:"[Speichern]",cancel:"[Abbrechen]"});//>>built
+define("dojox/atom/widget/nls/de/FeedEntryViewer",{displayOptions:"[Anzeigeoptionen]",title:"Titel",authors:"Autoren",contributors:"Mitwirkende",id:"ID",close:"[Schlie\u00dfen]",updated:"Aktualisiert",summary:"Zusammenfassung",content:"Inhalt"});//>>built
+define("dojox/atom/widget/nls/de/FeedViewerEntry",{deleteButton:"[L\u00f6schen]"});//>>built
+define("dojox/atom/widget/nls/de/PeopleEditor",{add:"Hinzuf\u00fcgen",addAuthor:"Autor hinzuf\u00fcgen",addContributor:"Mitwirkenden hinzuf\u00fcgen"});//>>built
+define("dojox/atom/widget/nls/fr/FeedEntryEditor",{doNew:"[nouveau]",edit:"[\u00e9diter]",save:"[sauvegarder]",cancel:"[annuler]"});//>>built
+define("dojox/atom/widget/nls/fr/FeedEntryViewer",{displayOptions:"[options d'affichage]",title:"Titre",authors:"Auteurs",contributors:"Collaborateurs",id:"ID",close:"[fermer]",updated:"Mis \u00e0 jour",summary:"R\u00e9capitulatif",content:"Contenu"});//>>built
+define("dojox/atom/widget/nls/fr/FeedViewerEntry",{deleteButton:"[Supprimer]"});//>>built
+define("dojox/atom/widget/nls/fr/PeopleEditor",{add:"Ajouter",addAuthor:"Ajouter un auteur",addContributor:"Ajouter un collaborateur"});//>>built
+define("dojox/atom/widget/nls/it/FeedEntryEditor",{doNew:"[nuovo]",edit:"[modifica]",save:"[salva]",cancel:"[annulla]"});//>>built
+define("dojox/atom/widget/nls/it/FeedEntryViewer",{displayOptions:"[visualizza opzioni]",title:"Titolo",authors:"Autori",contributors:"Contributor",id:"ID",close:"[chiudi]",updated:"Aggiornato",summary:"Riepilogo",content:"Contenuto"});//>>built
+define("dojox/atom/widget/nls/it/FeedViewerEntry",{deleteButton:"[Elimina]"});//>>built
+define("dojox/atom/widget/nls/it/PeopleEditor",{add:"Aggiungi",addAuthor:"Aggiungi autore",addContributor:"Aggiungi contributor"});//>>built
+define("dojox/atom/widget/nls/nl/FeedEntryEditor",{doNew:"[nieuw]",edit:"[bewerken]",save:"[opslaan]",cancel:"[annuleren]"});//>>built
+define("dojox/atom/widget/nls/nl/FeedEntryViewer",{displayOptions:"[weergaveopties]",title:"Titel",authors:"Auteurs",contributors:"Deelnemers",id:"ID",close:"[sluiten]",updated:"Bijgewerkt",summary:"Overzicht",content:"Content"});//>>built
+define("dojox/atom/widget/nls/nl/FeedViewerEntry",{deleteButton:"[Wissen]"});//>>built
+define("dojox/atom/widget/nls/nl/PeopleEditor",{add:"Toevoegen",addAuthor:"Auteur toevoegen",addContributor:"Deelnemer toevoegen"});//>>built
+define("dojox/calendar/nls/buttons",{root:{previousButton:"\u25c4",nextButton:"\u25ba",todayButton:"Today",dayButton:"Day",weekButton:"Week",fourDaysButton:"4 Days",monthButton:"Month"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});//>>built
+define("dojox/calendar/nls/de/buttons",{previousButton:"\u25c4",nextButton:"\u25ba",todayButton:"Heute",dayButton:"Tag",weekButton:"Woche",fourDaysButton:"4 Tage",monthButton:"Monat"});//>>built
+define("dojox/calendar/nls/fr/buttons",{previousButton:"\u25c4",nextButton:"\u25ba",todayButton:"Aujourd'hui",dayButton:"Jour",weekButton:"Semaine",fourDaysButton:"4 jours",monthButton:"Mois"});//>>built
+define("dojox/calendar/nls/it/buttons",{previousButton:"\u25c4",nextButton:"\u25ba",todayButton:"Oggi",dayButton:"Giorno",weekButton:"Settimana",fourDaysButton:"4 Giorni",monthButton:"Mese"});//>>built
+define("dojox/calendar/nls/nl/buttons",{previousButton:"\u25c4",nextButton:"\u25ba",todayButton:"Vandaag",dayButton:"Dag",weekButton:"Week",fourDaysButton:"4 dagen",monthButton:"Maand"});//>>built
define("dojox/editor/plugins/nls/AutoSave",{root:{saveLabel:"Save",saveSettingLabelOn:"Set Auto-Save Interval...",saveSettingLabelOff:"Turn off Auto-Save",saveSettingdialogTitle:"Auto-Save",saveSettingdialogDescription:"Specify Auto-Save interval",saveSettingdialogParamName:"Auto-Save Interval",saveSettingdialogParamLabel:"min",saveSettingdialogButtonOk:"Set Interval",saveSettingdialogButtonCancel:"Cancel",saveMessageSuccess:"Saved at ${0}",saveMessageFail:"Failed to save at ${0}"},zh:!0,"zh-tw":!0,
-tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/AutoSave.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/Blockquote.js] */
-//>>built
-define("dojox/editor/plugins/nls/Blockquote",{root:{blockquote:"Blockquote"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/Blockquote.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/Breadcrumb.js] */
-//>>built
-define("dojox/editor/plugins/nls/Breadcrumb",{root:{nodeActions:"${nodeName} Actions",selectContents:"Select contents",selectElement:"Select element",deleteElement:"Delete element",deleteContents:"Delete contents",moveStart:"Move cursor to start",moveEnd:"Move cursor to end"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/Breadcrumb.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/CollapsibleToolbar.js] */
-//>>built
-define("dojox/editor/plugins/nls/CollapsibleToolbar",{root:{collapse:"Collapse Editor Toolbar",expand:"Expand Editor Toolbar"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/CollapsibleToolbar.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/FindReplace.js] */
-//>>built
+tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});//>>built
+define("dojox/editor/plugins/nls/Blockquote",{root:{blockquote:"Blockquote"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});//>>built
+define("dojox/editor/plugins/nls/Breadcrumb",{root:{nodeActions:"${nodeName} Actions",selectContents:"Select contents",selectElement:"Select element",deleteElement:"Delete element",deleteContents:"Delete contents",moveStart:"Move cursor to start",moveEnd:"Move cursor to end"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});//>>built
+define("dojox/editor/plugins/nls/CollapsibleToolbar",{root:{collapse:"Collapse Editor Toolbar",expand:"Expand Editor Toolbar"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});//>>built
define("dojox/editor/plugins/nls/FindReplace",{root:{findLabel:"Find:",findTooltip:"Enter text to find",replaceLabel:"Replace with:",replaceTooltip:"Enter text to replace with",findReplace:"Find and Replace",matchCase:"Match case",matchCaseTooltip:"Match case",backwards:"Backwards",backwardsTooltip:"Search backwards for text",replaceAllButton:"Replace All",replaceAllButtonTooltip:"Replace all the text",findButton:"Find",findButtonTooltip:"Find the text",replaceButton:"Replace",replaceButtonTooltip:"Replace the text",
-replaceDialogText:"Replaced ${0} occurrences.",eofDialogText:"Last occurrence ${0}",eofDialogTextFind:"found",eofDialogTextReplace:"replaced"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/FindReplace.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/InsertAnchor.js] */
-//>>built
-define("dojox/editor/plugins/nls/InsertAnchor",{root:{insertAnchor:"Insert Anchor",title:"Anchor Properties",anchor:"Name:",text:"Description:",set:"Set",cancel:"Cancel"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/InsertAnchor.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/InsertEntity.js] */
-//>>built
-define("dojox/editor/plugins/nls/InsertEntity",{root:{insertEntity:"Insert Symbol"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/InsertEntity.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/LocalImage.js] */
-//>>built
-define("dojox/editor/plugins/nls/LocalImage",{root:{insertImageTitle:"Insert Image",url:"Image",browse:"Browse...",text:"Description",set:"Insert",invalidMessage:"Invalid image file type",prePopuTextUrl:"Enter an image URL",prePopuTextBrowse:" or browse to a local file."},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/LocalImage.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/PageBreak.js] */
-//>>built
-define("dojox/editor/plugins/nls/PageBreak",{root:{pageBreak:"Page Break"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/PageBreak.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/PasteFromWord.js] */
-//>>built
-define("dojox/editor/plugins/nls/PasteFromWord",{root:{pasteFromWord:"Paste From Word",instructions:"Paste the content from Word into the text box below. Once you are satisfied with the content to insert, press the paste button. To abort inserting text, press the cancel button."},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/PasteFromWord.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/Preview.js] */
-//>>built
-define("dojox/editor/plugins/nls/Preview",{root:{preview:"Preview"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/Preview.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/SafePaste.js] */
-//>>built
-define("dojox/editor/plugins/nls/SafePaste",{root:{instructions:"Direct paste is disabled. Please paste content in this dialog using the standard browser keyboard or menu paste controls. Once you are satisfied with the content to insert, press the paste button. To abort inserting content, press the cancel button."},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/SafePaste.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/Save.js] */
-//>>built
-define("dojox/editor/plugins/nls/Save",{root:{save:"Save"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/Save.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ShowBlockNodes.js] */
-//>>built
-define("dojox/editor/plugins/nls/ShowBlockNodes",{root:{showBlockNodes:"Show HTML Block Elements"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ShowBlockNodes.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/Smiley.js] */
-//>>built
+replaceDialogText:"Replaced ${0} occurrences.",eofDialogText:"Last occurrence ${0}",eofDialogTextFind:"found",eofDialogTextReplace:"replaced"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});//>>built
+define("dojox/editor/plugins/nls/InsertAnchor",{root:{insertAnchor:"Insert Anchor",title:"Anchor Properties",anchor:"Name:",text:"Description:",set:"Set",cancel:"Cancel"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});//>>built
+define("dojox/editor/plugins/nls/InsertEntity",{root:{insertEntity:"Insert Symbol"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});//>>built
+define("dojox/editor/plugins/nls/LocalImage",{root:{insertImageTitle:"Insert Image",url:"Image",browse:"Browse...",text:"Description",set:"Insert",invalidMessage:"Invalid image file type",prePopuTextUrl:"Enter an image URL",prePopuTextBrowse:" or browse to a local file."},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});//>>built
+define("dojox/editor/plugins/nls/PageBreak",{root:{pageBreak:"Page Break"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});//>>built
+define("dojox/editor/plugins/nls/PasteFromWord",{root:{pasteFromWord:"Paste From Word",instructions:"Paste the content from Word into the text box below. Once you are satisfied with the content to insert, press the paste button. To abort inserting text, press the cancel button."},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});//>>built
+define("dojox/editor/plugins/nls/Preview",{root:{preview:"Preview"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});//>>built
+define("dojox/editor/plugins/nls/SafePaste",{root:{instructions:"Direct paste is disabled. Please paste content in this dialog using the standard browser keyboard or menu paste controls. Once you are satisfied with the content to insert, press the paste button. To abort inserting content, press the cancel button."},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0});//>>built
+define("dojox/editor/plugins/nls/Save",{root:{save:"Save"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});//>>built
+define("dojox/editor/plugins/nls/ShowBlockNodes",{root:{showBlockNodes:"Show HTML Block Elements"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});//>>built
define("dojox/editor/plugins/nls/Smiley",{root:{smiley:"Insert Emoticon",emoticonSmile:"smile",emoticonLaughing:"laughing",emoticonWink:"wink",emoticonGrin:"grin",emoticonCool:"cool",emoticonAngry:"angry",emoticonHalf:"half",emoticonEyebrow:"eyebrow",emoticonFrown:"frown",emoticonShy:"shy",emoticonGoofy:"goofy",emoticonOops:"oops",emoticonTongue:"tongue",emoticonIdea:"idea",emoticonYes:"yes",emoticonNo:"no",emoticonAngel:"angel",emoticonCrying:"crying",emoticonHappy:"happy"},zh:!0,"zh-tw":!0,tr:!0,
-th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/Smiley.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/SpellCheck.js] */
-//>>built
+th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});//>>built
define("dojox/editor/plugins/nls/SpellCheck",{root:{widgetLabel:"Batch Spell Check",unfound:"Not found",skip:"Skip",skipAll:"Skip All",toDic:"Add to dictionary",suggestions:"Suggestions",replace:"Replace",replaceWith:"Replace with",replaceAll:"Replace All",cancel:"Cancel",msg:"No misspellings found",iSkip:"Skip this",iSkipAll:"Skip all like this",iMsg:"No spelling suggestions"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,
-hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/SpellCheck.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/TableDialog.js] */
-//>>built
+hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});//>>built
define("dojox/editor/plugins/nls/TableDialog",{root:{insertTableTitle:"Insert Table",modifyTableTitle:"Modify Table",rows:"Rows:",columns:"Columns:",align:"Align:",cellPadding:"Cell Padding:",cellSpacing:"Cell Spacing:",tableWidth:"Table Width:",backgroundColor:"Background Color:",borderColor:"Border Color:",borderThickness:"Border Thickness:",percent:"percent",pixels:"pixels","default":"default",left:"left",center:"center",right:"right",buttonSet:"Set",buttonInsert:"Insert",buttonCancel:"Cancel",
-selectTableLabel:"Select Table",insertTableRowBeforeLabel:"Add Row Before",insertTableRowAfterLabel:"Add Row After",insertTableColumnBeforeLabel:"Add Column Before",insertTableColumnAfterLabel:"Add Column After",deleteTableRowLabel:"Delete Row",deleteTableColumnLabel:"Delete Column"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/TableDialog.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/TextColor.js] */
-//>>built
-define("dojox/editor/plugins/nls/TextColor",{root:{setButtonText:"Set",cancelButtonText:"Cancel"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/TextColor.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/AutoSave.js] */
-//>>built
+selectTableLabel:"Select Table",insertTableRowBeforeLabel:"Add Row Before",insertTableRowAfterLabel:"Add Row After",insertTableColumnBeforeLabel:"Add Column Before",insertTableColumnAfterLabel:"Add Column After",deleteTableRowLabel:"Delete Row",deleteTableColumnLabel:"Delete Column"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});//>>built
+define("dojox/editor/plugins/nls/TextColor",{root:{setButtonText:"Set",cancelButtonText:"Cancel"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});//>>built
define("dojox/editor/plugins/nls/de/AutoSave",{saveLabel:"Speichern",saveSettingLabelOn:"Intervall f\u00fcr automatisches Speichern festlegen",saveSettingLabelOff:"Automatisches Speichern inaktivieren",saveSettingdialogTitle:"Automatisch speichern",saveSettingdialogDescription:"Intervall f\u00fcr automatisches Speichern angeben",saveSettingdialogParamName:"Intervall f\u00fcr automatisches Speichern",saveSettingdialogParamLabel:"Min.",saveSettingdialogButtonOk:"Intervall festlegen",saveSettingdialogButtonCancel:"Abbrechen",
-saveMessageSuccess:"Gespeichert um ${0}",saveMessageFail:"Konnte nicht um ${0} gespeichert werden"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/AutoSave.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/Blockquote.js] */
-//>>built
-define("dojox/editor/plugins/nls/de/Blockquote",{blockquote:"Blockzitat"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/Blockquote.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/Breadcrumb.js] */
-//>>built
-define("dojox/editor/plugins/nls/de/Breadcrumb",{nodeActions:"Aktionen f\u00fcr ${nodeName}",selectContents:"Inhalt ausw\u00e4hlen",selectElement:"Element ausw\u00e4hlen",deleteElement:"Element l\u00f6schen",deleteContents:"Inhalt l\u00f6schen",moveStart:"Cursor an Anfang verschieben",moveEnd:"Cursor an Ende verschieben"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/Breadcrumb.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/CollapsibleToolbar.js] */
-//>>built
-define("dojox/editor/plugins/nls/de/CollapsibleToolbar",{collapse:"Editor-Symbolleiste ausblenden",expand:"Editor-Symbolleiste einblenden"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/CollapsibleToolbar.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/FindReplace.js] */
-//>>built
+saveMessageSuccess:"Gespeichert um ${0}",saveMessageFail:"Konnte nicht um ${0} gespeichert werden"});//>>built
+define("dojox/editor/plugins/nls/de/Blockquote",{blockquote:"Blockzitat"});//>>built
+define("dojox/editor/plugins/nls/de/Breadcrumb",{nodeActions:"Aktionen f\u00fcr ${nodeName}",selectContents:"Inhalt ausw\u00e4hlen",selectElement:"Element ausw\u00e4hlen",deleteElement:"Element l\u00f6schen",deleteContents:"Inhalt l\u00f6schen",moveStart:"Cursor an Anfang verschieben",moveEnd:"Cursor an Ende verschieben"});//>>built
+define("dojox/editor/plugins/nls/de/CollapsibleToolbar",{collapse:"Editor-Symbolleiste ausblenden",expand:"Editor-Symbolleiste einblenden"});//>>built
define("dojox/editor/plugins/nls/de/FindReplace",{findLabel:"Suchen:",findTooltip:"Text zum Suchen eingeben",replaceLabel:"Ersetzen durch:",replaceTooltip:"Text zum Ersetzen eingeben",findReplace:"Suchen und ersetzen",matchCase:"Gro\u00df- und Kleinschreibung abgleichen",matchCaseTooltip:"Gro\u00df- und Kleinschreibung abgleichen",backwards:"Zur\u00fcck",backwardsTooltip:"R\u00fcckw\u00e4rts nach Text suchen",replaceAllButton:"Global ersetzen",replaceAllButtonTooltip:"Gesamten Text ersetzen",findButton:"Suchen",
-findButtonTooltip:"Text suchen",replaceButton:"Ersetzen",replaceButtonTooltip:"Text ersetzen",replaceDialogText:"${0} Vorkommen ersetzt.",eofDialogText:"Letztes Vorkommen ${0}",eofDialogTextFind:"gefunden",eofDialogTextReplace:"ersetzt"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/FindReplace.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/InsertAnchor.js] */
-//>>built
-define("dojox/editor/plugins/nls/de/InsertAnchor",{insertAnchor:"Anker einf\u00fcgen",title:"Eigenschaften des Ankers",anchor:"Name:",text:"Beschreibung:",set:"Festlegen",cancel:"Abbrechen"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/InsertAnchor.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/InsertEntity.js] */
-//>>built
-define("dojox/editor/plugins/nls/de/InsertEntity",{insertEntity:"Symbol einf\u00fcgen"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/InsertEntity.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/LocalImage.js] */
-//>>built
-define("dojox/editor/plugins/nls/de/LocalImage",{insertImageTitle:"Grafik einf\u00fcgen",url:"Grafik",browse:"Durchsuchen...",text:"Beschreibung",set:"Einf\u00fcgen",invalidMessage:"Ung\u00fcltiger Grafikdateityp",prePopuTextUrl:"Geben Sie eine g\u00fcltige Grafik-URL ein",prePopuTextBrowse:"oder bl\u00e4ttern Sie zu einer lokalen Datei."});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/LocalImage.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/PageBreak.js] */
-//>>built
-define("dojox/editor/plugins/nls/de/PageBreak",{pageBreak:"Seitenumbruch"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/PageBreak.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/PasteFromWord.js] */
-//>>built
-define("dojox/editor/plugins/nls/de/PasteFromWord",{pasteFromWord:"Aus Word einf\u00fcgen",instructions:"F\u00fcgt den Inhalt aus Word in das Textfeld unten ein. Wenn Sie mit dem einzuf\u00fcgenden Inhalt zufrieden sind, klicken Sie auf die Schaltfl\u00e4che zum Einf\u00fcgen. Um das Einf\u00fcgen von Text abzubrechen, klicken Sie auf die Schaltfl\u00e4che zum Abbrechen. "});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/PasteFromWord.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/Preview.js] */
-//>>built
-define("dojox/editor/plugins/nls/de/Preview",{preview:"Vorschau"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/Preview.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/SafePaste.js] */
-//>>built
-define("dojox/editor/plugins/nls/de/SafePaste",{instructions:"Direktes Einf\u00fcgen ist inaktiviert. F\u00fcgen Sie Inhalt in diesem Dialog \u00fcber Tastaturbefehle oder Men\u00fceintr\u00e4ge f\u00fcr Einf\u00fcgeoperationen Ihres Standardbrowsers ein. Wenn Sie mit dem einzuf\u00fcgenden Inhalt zufrieden sind, klicken Sie auf die Schaltfl\u00e4che Einf\u00fcgen. Wenn Sie das Einf\u00fcgen des Inhalts abbrechen m\u00f6chten, klicken Sie auf die Schaltfl\u00e4che Abbrechen."});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/SafePaste.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/Save.js] */
-//>>built
-define("dojox/editor/plugins/nls/de/Save",{save:"Speichern"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/Save.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/ShowBlockNodes.js] */
-//>>built
-define("dojox/editor/plugins/nls/de/ShowBlockNodes",{showBlockNodes:"HTML-Blockelemente anzeigen"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/ShowBlockNodes.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/Smiley.js] */
-//>>built
+findButtonTooltip:"Text suchen",replaceButton:"Ersetzen",replaceButtonTooltip:"Text ersetzen",replaceDialogText:"${0} Vorkommen ersetzt.",eofDialogText:"Letztes Vorkommen ${0}",eofDialogTextFind:"gefunden",eofDialogTextReplace:"ersetzt"});//>>built
+define("dojox/editor/plugins/nls/de/InsertAnchor",{insertAnchor:"Anker einf\u00fcgen",title:"Eigenschaften des Ankers",anchor:"Name:",text:"Beschreibung:",set:"Festlegen",cancel:"Abbrechen"});//>>built
+define("dojox/editor/plugins/nls/de/InsertEntity",{insertEntity:"Symbol einf\u00fcgen"});//>>built
+define("dojox/editor/plugins/nls/de/LocalImage",{insertImageTitle:"Grafik einf\u00fcgen",url:"Grafik",browse:"Durchsuchen...",text:"Beschreibung",set:"Einf\u00fcgen",invalidMessage:"Ung\u00fcltiger Grafikdateityp",prePopuTextUrl:"Geben Sie eine g\u00fcltige Grafik-URL ein",prePopuTextBrowse:"oder bl\u00e4ttern Sie zu einer lokalen Datei."});//>>built
+define("dojox/editor/plugins/nls/de/PageBreak",{pageBreak:"Seitenumbruch"});//>>built
+define("dojox/editor/plugins/nls/de/PasteFromWord",{pasteFromWord:"Aus Word einf\u00fcgen",instructions:"F\u00fcgt den Inhalt aus Word in das Textfeld unten ein. Wenn Sie mit dem einzuf\u00fcgenden Inhalt zufrieden sind, klicken Sie auf die Schaltfl\u00e4che zum Einf\u00fcgen. Um das Einf\u00fcgen von Text abzubrechen, klicken Sie auf die Schaltfl\u00e4che zum Abbrechen. "});//>>built
+define("dojox/editor/plugins/nls/de/Preview",{preview:"Vorschau"});//>>built
+define("dojox/editor/plugins/nls/de/SafePaste",{instructions:"Direktes Einf\u00fcgen ist inaktiviert. F\u00fcgen Sie Inhalt in diesem Dialog \u00fcber Tastaturbefehle oder Men\u00fceintr\u00e4ge f\u00fcr Einf\u00fcgeoperationen Ihres Standardbrowsers ein. Wenn Sie mit dem einzuf\u00fcgenden Inhalt zufrieden sind, klicken Sie auf die Schaltfl\u00e4che Einf\u00fcgen. Wenn Sie das Einf\u00fcgen des Inhalts abbrechen m\u00f6chten, klicken Sie auf die Schaltfl\u00e4che Abbrechen."});//>>built
+define("dojox/editor/plugins/nls/de/Save",{save:"Speichern"});//>>built
+define("dojox/editor/plugins/nls/de/ShowBlockNodes",{showBlockNodes:"HTML-Blockelemente anzeigen"});//>>built
define("dojox/editor/plugins/nls/de/Smiley",{smiley:"Emoticon einf\u00fcgen",emoticonSmile:"L\u00e4cheln",emoticonLaughing:"Lachen",emoticonWink:"Zwinkern",emoticonGrin:"Grinsen",emoticonCool:"Cool",emoticonAngry:"W\u00fctend",emoticonHalf:"Halbes L\u00e4cheln",emoticonEyebrow:"Augenbraue",emoticonFrown:"Stirnrunzeln",emoticonShy:"Sch\u00fcchtern",emoticonGoofy:"Albern",emoticonOops:"Hoppla",emoticonTongue:"Zunge",emoticonIdea:"Idee",emoticonYes:"Ja",emoticonNo:"Nein",emoticonAngel:"Engel",emoticonCrying:"Weinen",
-emoticonHappy:"Gl\u00fccklich"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/Smiley.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/SpellCheck.js] */
-//>>built
-define("dojox/editor/plugins/nls/de/SpellCheck",{widgetLabel:"Batchrechtschreibpr\u00fcfung",unfound:"Nicht gefunden",skip:"\u00dcberspringen",skipAll:"Alle \u00fcberspringen",toDic:"Zum W\u00f6rterbuch hinzuf\u00fcgen",suggestions:"Vorschl\u00e4ge",replace:"Ersetzen",replaceWith:"Ersetzen durch",replaceAll:"Global ersetzen",cancel:"Abbrechen",msg:"Keine Rechtschreibfehler gefunden",iSkip:"Diesen Fund \u00fcberspringen",iSkipAll:"Alle entsprechenden Funde \u00fcberspringen",iMsg:"Keine Rechtschreibvorschl\u00e4ge"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/SpellCheck.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/TableDialog.js] */
-//>>built
+emoticonHappy:"Gl\u00fccklich"});//>>built
+define("dojox/editor/plugins/nls/de/SpellCheck",{widgetLabel:"Batchrechtschreibpr\u00fcfung",unfound:"Nicht gefunden",skip:"\u00dcberspringen",skipAll:"Alle \u00fcberspringen",toDic:"Zum W\u00f6rterbuch hinzuf\u00fcgen",suggestions:"Vorschl\u00e4ge",replace:"Ersetzen",replaceWith:"Ersetzen durch",replaceAll:"Global ersetzen",cancel:"Abbrechen",msg:"Keine Rechtschreibfehler gefunden",iSkip:"Diesen Fund \u00fcberspringen",iSkipAll:"Alle entsprechenden Funde \u00fcberspringen",iMsg:"Keine Rechtschreibvorschl\u00e4ge"});//>>built
define("dojox/editor/plugins/nls/de/TableDialog",{insertTableTitle:"Tabelle einf\u00fcgen",modifyTableTitle:"Tabelle \u00e4ndern",rows:"Zeilen:",columns:"Spalten:",align:"Ausrichten:",cellPadding:"Zellenrandbreite:",cellSpacing:"Zellenabstand:",tableWidth:"Tabellenbreite:",backgroundColor:"Hintergrundfarbe:",borderColor:"Umrandungsfarbe:",borderThickness:"Umrandungsst\u00e4rke:",percent:"Prozent",pixels:"Pixel","default":"Standard",left:"Links",center:"Mitte",right:"Rechts",buttonSet:"Festlegen",
-buttonInsert:"Einf\u00fcgen",buttonCancel:"Abbrechen",selectTableLabel:"Tabelle ausw\u00e4hlen",insertTableRowBeforeLabel:"Zeile davor einf\u00fcgen",insertTableRowAfterLabel:"Zeile danach einf\u00fcgen",insertTableColumnBeforeLabel:"Spalte davor einf\u00fcgen",insertTableColumnAfterLabel:"Spalte danach einf\u00fcgen",deleteTableRowLabel:"Zeile l\u00f6schen",deleteTableColumnLabel:"Spalte l\u00f6schen"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/TableDialog.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/TextColor.js] */
-//>>built
-define("dojox/editor/plugins/nls/de/TextColor",{setButtonText:"Festlegen",cancelButtonText:"Abbrechen"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/TextColor.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/latinEntities.js] */
-//>>built
+buttonInsert:"Einf\u00fcgen",buttonCancel:"Abbrechen",selectTableLabel:"Tabelle ausw\u00e4hlen",insertTableRowBeforeLabel:"Zeile davor einf\u00fcgen",insertTableRowAfterLabel:"Zeile danach einf\u00fcgen",insertTableColumnBeforeLabel:"Spalte davor einf\u00fcgen",insertTableColumnAfterLabel:"Spalte danach einf\u00fcgen",deleteTableRowLabel:"Zeile l\u00f6schen",deleteTableColumnLabel:"Spalte l\u00f6schen"});//>>built
+define("dojox/editor/plugins/nls/de/TextColor",{setButtonText:"Festlegen",cancelButtonText:"Abbrechen"});//>>built
define("dojox/editor/plugins/nls/de/latinEntities",{iexcl:"Umgekehrtes Ausrufezeichen",cent:"Cent-Zeichen",pound:"Nummernzeichen",curren:"W\u00e4hrungssymbol",yen:"Yen-ZeichenNyuan-Zeichen",brvbar:"Unterbrochener Balken\nUnterbrochener vertikaler Balken",sect:"Abschnittszeichen",uml:"Trema\nLeerzeichen mit Trema",copy:"Copyrightzeichen",ordf:"Weibliches Ordinalzeichen",laquo:"Doppelte, winklige Anf\u00fchrungszeichen, die nach links weisenlinke franz\u00f6sische Anf\u00fchrungszeichen",not:"Nicht-Zeichen",
shy:"Ver\u00e4nderlicher Silbentrennstrich\nbedingter Trennstrich",reg:"Registrierte Handelsmarke\nregistriertes Markenzeichen",macr:"Makron\nLeerzeichen mit Makron\n\u00dcberstrich\nQuerstrich \u00fcber dem Buchstaben",deg:"Gradzeichen",plusmn:"Plus-Minus-Zeichen\nPlus-oder-Minus-Zeichen",sup2:"Hochgestellte Zwei\nHoch 2\nzum Quadrat",sup3:"Hochgestellte Drei\nHoch 3\nKubik",acute:"Akut\nsLeerzeichen mit Akut",micro:"Micro-Zeichen",para:"Pilcrow-Zeichen (engl.)\nAbsatzzeichen",middot:"Multiplikationszeichen\nGeorgisches Komma\nGriechisches Multiplikationszeichen",
cedil:"Cedilla\nLeerzeichen mit Cedilla",sup1:"Hochgestellte Eins\nHoch 1",ordm:"M\u00e4nnliches Ordinalzeichen",raquo:"Doppelte, winklige Anf\u00fchrungszeichen, die nach rechts weisen\nRechtes franz\u00f6sisches Anf\u00fchrungszeichen",frac14:"Bruch 1 durch 4\nEin Viertel",frac12:"Bruch 1 durch 2\nEinhalb",frac34:"Bruch 3 durch 4\nDreiviertel",iquest:"Umgekehrtes Fragezeichen\nFragezeichen auf dem Kopf",Agrave:"Gro\u00dfes A mit Gravis\nGro\u00dfbuchstabe A mit Gravis",Aacute:"Gro\u00dfbuchstabe A mit Akut",
@@ -1385,10 +1057,87 @@ forall:"F\u00fcr alle",part:"Partielle Differenzialgleichung",exist:"Es existier
cap:"Schnittpunkt\nH\u00fctchen",cup:"Vereinigungsmenge\nCup","int":"Integral",there4:"Deshalb",sim:"Tilde (Operator)\nvariiert mit\n\u00e4hnlich wie",cong:"Etwa gleich mit",asymp:"Ungef\u00e4hr gleich mit\nasymptotisch",ne:"Nicht gleich mit",equiv:"Identisch mit",le:"Kleiner-gleich",ge:"Gr\u00f6\u00dfer-gleich",sub:"Teil von",sup:"Obermenge von",nsub:"Kein Teil von",sube:"Teilmenge oder gleich mit",supe:"Obermenge oder gleich mit",oplus:"Pluszeichen mit Kreis\ndirekte Summe",otimes:"Multiplikationszeichen mit Kreis\nVektorprodukt",
perp:"Senkrecht\nSenkrecht zu\nLotrecht",sdot:"Punktoperator",lceil:"Linke Ecke oben\nAPL upstile",rceil:"Rechte Ecke oben",lfloor:"Linke Ecke unten\nAPL downstile",rfloor:"Rechte Ecke unten",lang:"Linke spitze Klammer",rang:"Rechte spitze Klammer",loz:"Raute",spades:"Schwarzes Pik (Kartenspiel)",clubs:"Schwarzes Kreuz (Kartenspiel)\nKleeblatt",hearts:"Schwarzes Herz (Kartenspiel)\nValentine",diams:"Schwarzes Karo (Kartenspiel)",OElig:"Ligatur aus Gro\u00dfbuchstaben O und E",oelig:"Ligatur aus Kleinbuchstaben o und e",
Scaron:"Gro\u00dfbuchstabe S mit Caron",scaron:"Kleinbuchstabe s mit Caron",Yuml:"Gro\u00dfbuchstabe Y mit Trema",circ:"Zirkumflex, Akzent",tilde:"kleine Tilde",ensp:"Leerschritt von der Breite des Buchstaben n",emsp:"Leerschritt von der Breite des Buchstaben m",thinsp:"Schmaler Leerschritt",zwnj:"Nichtverbinder mit Nullbreite",zwj:"Verbinder mit Nullbreite",lrm:"Links-Rechts-Markierung",rlm:"Rechts-Links-Markierung",ndash:"Gedankenstrich von der L\u00e4nge des Buchstabens n",mdash:"Gedankenstrich von der L\u00e4nge des Buchstabens m",
-lsquo:"Linkes einfaches Anf\u00fchrungszeichen",rsquo:"Rechtes einfaches Anf\u00fchrungszeichen",sbquo:"Einfaches, gekr\u00fcmmtes Anf\u00fchrungszeichen unten",ldquo:"Linkes doppeltes Anf\u00fchrungszeichen",rdquo:"Rechtes doppeltes Anf\u00fchrungszeichen",bdquo:"Doppeltes, gekr\u00fcmmtes Anf\u00fchrungszeichen unten",dagger:"Kreuzzeichen",Dagger:"Doppelkreuzzeichen",permil:"Promillezeichen",lsaquo:"Einfaches linkes Anf\u00fchrungszeichen",rsaquo:"Einfaches rechtes Anf\u00fchrungszeichen",euro:"Euro-Zeichen"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/de/latinEntities.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/latinEntities.js] */
-//>>built
+lsquo:"Linkes einfaches Anf\u00fchrungszeichen",rsquo:"Rechtes einfaches Anf\u00fchrungszeichen",sbquo:"Einfaches, gekr\u00fcmmtes Anf\u00fchrungszeichen unten",ldquo:"Linkes doppeltes Anf\u00fchrungszeichen",rdquo:"Rechtes doppeltes Anf\u00fchrungszeichen",bdquo:"Doppeltes, gekr\u00fcmmtes Anf\u00fchrungszeichen unten",dagger:"Kreuzzeichen",Dagger:"Doppelkreuzzeichen",permil:"Promillezeichen",lsaquo:"Einfaches linkes Anf\u00fchrungszeichen",rsaquo:"Einfaches rechtes Anf\u00fchrungszeichen",euro:"Euro-Zeichen"});//>>built
+define("dojox/editor/plugins/nls/fr/AutoSave",{saveLabel:"Enregistrer",saveSettingLabelOn:"D\u00e9finir l'intervalle d'enregistrement automatique...",saveSettingLabelOff:"D\u00e9sactiver l'enregistrement automatique",saveSettingdialogTitle:"Enregistrement automatique",saveSettingdialogDescription:"Sp\u00e9cifiez l'intervalle d'enregistrement automatique",saveSettingdialogParamName:"Intervalle d'enregistrement automatique",saveSettingdialogParamLabel:"min",saveSettingdialogButtonOk:"D\u00e9finir l'intervalle",
+saveSettingdialogButtonCancel:"Annuler",saveMessageSuccess:"Enregistr\u00e9 \u00e0 ${0}",saveMessageFail:"Echec de l'enregistrement \u00e0 ${0}"});//>>built
+define("dojox/editor/plugins/nls/fr/Blockquote",{blockquote:"Bloc de citation"});//>>built
+define("dojox/editor/plugins/nls/fr/Breadcrumb",{nodeActions:"Actions ${nodeName}",selectContents:"S\u00e9lection de contenus",selectElement:"S\u00e9lection d'un \u00e9l\u00e9ment",deleteElement:"Suppression d'un \u00e9l\u00e9ment",deleteContents:"Suppression de contenus",moveStart:"D\u00e9placer le curseur vers le d\u00e9but",moveEnd:"D\u00e9placer le curseur vers la fin"});//>>built
+define("dojox/editor/plugins/nls/fr/CollapsibleToolbar",{collapse:"R\u00e9duire la barre d'outils de l'\u00e9diteur",expand:"D\u00e9velopper la barre d'outils de l'\u00e9diteur"});//>>built
+define("dojox/editor/plugins/nls/fr/FindReplace",{findLabel:"Rechercher :",findTooltip:"Entrez le texte \u00e0 rechercher",replaceLabel:"Remplacer par :",replaceTooltip:"Entrez le texte de remplacement",findReplace:"Rechercher et remplacer",matchCase:"Respecter la casse",matchCaseTooltip:"Respecter la casse",backwards:"Vers l'arri\u00e8re",backwardsTooltip:"Recherchez le texte vers l'arri\u00e8re",replaceAllButton:"Remplacer tout",replaceAllButtonTooltip:"Remplacez tout le texte",findButton:"Rechercher",
+findButtonTooltip:"Recherchez le texte",replaceButton:"Remplacer",replaceButtonTooltip:"Remplacez le texte",replaceDialogText:"${0} occurrence(s) remplac\u00e9e(s)",eofDialogText:"Derni\u00e8re occurrence ${0}",eofDialogTextFind:"trouv\u00e9",eofDialogTextReplace:"remplac\u00e9"});//>>built
+define("dojox/editor/plugins/nls/fr/InsertAnchor",{insertAnchor:"Ins\u00e9rer un point d'ancrage",title:"Propri\u00e9t\u00e9s du point d'ancrage",anchor:"Nom :",text:"Description :",set:"D\u00e9finir",cancel:"Annuler"});//>>built
+define("dojox/editor/plugins/nls/fr/InsertEntity",{insertEntity:"Insertion d'un symbole"});//>>built
+define("dojox/editor/plugins/nls/fr/LocalImage",{insertImageTitle:"Ins\u00e9rer une image",url:"Image",browse:"Parcourir...",text:"Description",set:"Ins\u00e9rer",invalidMessage:"Type de fichier image non valide",prePopuTextUrl:"Entrez une URL d'image",prePopuTextBrowse:" ou s\u00e9lectionnez un fichier local."});//>>built
+define("dojox/editor/plugins/nls/fr/PageBreak",{pageBreak:"Saut de page"});//>>built
+define("dojox/editor/plugins/nls/fr/PasteFromWord",{pasteFromWord:"Coller depuis Word",instructions:"Collez le contenu Word dans la zone de texte ci-dessous. Quand le contenu \u00e0 ins\u00e9rer vous convient, appuyez sur le bouton Coller. Pour annuler l'insertion du texte, utilisez le bouton Annuler."});//>>built
+define("dojox/editor/plugins/nls/fr/Preview",{preview:"Aper\u00e7u"});//>>built
+define("dojox/editor/plugins/nls/fr/SafePaste",{instructions:"La fonction directe Coller est d\u00e9sactiv\u00e9e. Collez le contenu dans la bo\u00eete de dialogue \u00e0 l'aide des commandes du clavier de navigateur standard ou de l'option coller dans le menu. Quand le contenu \u00e0 ins\u00e9rer vous convient, appuyez sur le bouton Coller. Pour annuler l'insertion du contenu, utilisez le bouton Annuler."});//>>built
+define("dojox/editor/plugins/nls/fr/Save",{save:"Enregistrer"});//>>built
+define("dojox/editor/plugins/nls/fr/ShowBlockNodes",{showBlockNodes:"Affichage des \u00e9l\u00e9ments de bloc HTML"});//>>built
+define("dojox/editor/plugins/nls/fr/Smiley",{smiley:"Ins\u00e9rer une \u00e9motic\u00f4ne",emoticonSmile:"sourire",emoticonLaughing:"rire",emoticonWink:"clin d'oeil",emoticonGrin:"sourire large",emoticonCool:"calme",emoticonAngry:"col\u00e8re",emoticonHalf:"demi",emoticonEyebrow:"sourcils",emoticonFrown:"froncement de sourcils",emoticonShy:"timide",emoticonGoofy:"dingo",emoticonOops:"oops",emoticonTongue:"langue",emoticonIdea:"id\u00e9e",emoticonYes:"oui",emoticonNo:"non",emoticonAngel:"ange",emoticonCrying:"pleurs",
+emoticonHappy:"sourire"});//>>built
+define("dojox/editor/plugins/nls/fr/SpellCheck",{widgetLabel:"V\u00e9rification orthographique par lots",unfound:"Introuvable",skip:"Ignorer",skipAll:"Ignorer tout",toDic:"Ajouter au dictionnaire",suggestions:"Suggestions",replace:"Remplacer",replaceWith:"Remplacer par",replaceAll:"Remplacer tout",cancel:"Annuler",msg:"Aucune faute d'orthographe trouv\u00e9e",iSkip:"Ignorer une fois",iSkipAll:"Ignorer chaque fois",iMsg:"Aucune suggestion orthographique"});//>>built
+define("dojox/editor/plugins/nls/fr/TableDialog",{insertTableTitle:"Ins\u00e9rer une table",modifyTableTitle:"Modifier une table",rows:"Lignes :",columns:"Colonnes :",align:"Aligner :",cellPadding:"Remplissage des cellules :",cellSpacing:"Espacement des cellules :",tableWidth:"Largeur de table :",backgroundColor:"Couleur d'arri\u00e8re-plan :",borderColor:"Couleur des bordures :",borderThickness:"Epaisseur des bordures :",percent:"pourcentage",pixels:"pixels","default":"par d\u00e9faut",left:"align\u00e9 \u00e0 gauche",
+center:"centr\u00e9",right:"align\u00e9 \u00e0 droite",buttonSet:"D\u00e9finir",buttonInsert:"Ins\u00e9rer",buttonCancel:"Annuler",selectTableLabel:"S\u00e9lectionner une table",insertTableRowBeforeLabel:"Ajouter une ligne avant",insertTableRowAfterLabel:"Ajouter une ligne apr\u00e8s",insertTableColumnBeforeLabel:"Ajouter une colonne avant",insertTableColumnAfterLabel:"Ajouter une colonne apr\u00e8s",deleteTableRowLabel:"Supprimer la ligne",deleteTableColumnLabel:"Supprimer la colonne"});//>>built
+define("dojox/editor/plugins/nls/fr/TextColor",{setButtonText:"D\u00e9finir",cancelButtonText:"Annuler"});//>>built
+define("dojox/editor/plugins/nls/fr/latinEntities",{iexcl:"point d'exclamation invers\u00e9",cent:"signe cent",pound:"signe livre sterling",curren:"signe devise",yen:"signe yen\nsigne yuan",brvbar:"barre interrompue\nbarre verticale interrompue",sect:"signe section",uml:"tr\u00e9ma\ntr\u00e9ma d'espacement",copy:"signe de droit d'auteur",ordf:"indicateur ordinal f\u00e9minin",laquo:"guillemets fermants",not:"signe non",shy:"trait d'union conditionnel\ntiret conditionnel",reg:"signe enregistr\u00e9\nmarque commerciale enregistr\u00e9e",
+macr:"macron\nmacron d'espacement\nligne sup\u00e9rieure\nbarre sup\u00e9rieure APL",deg:"signe degr\u00e9",plusmn:"signe plus-moins\nsigne plus-ou-moins",sup2:"exposant deux\npuissance deux\ncarr\u00e9",sup3:"exposant trois\npuissance trois\ncube",acute:"accent aigu\naccent aigu d'espacement",micro:"signe micro",para:"symbole de paragraphe",middot:"point m\u00e9dian\nvirgule g\u00e9orgiennea\npoint m\u00e9dian grec",cedil:"c\u00e9dille\nc\u00e9dille d'espacement",sup1:"exposant un\npuissance un",
+ordm:"indicateur ordinal masculin",raquo:"guillemets ouvrants",frac14:"fraction commune un quart\nfraction un quart",frac12:"fraction commune un demi\nfraction un demi",frac34:"fraction commune trois quarts\nfraction trois quarts",iquest:"point d'interrogation invers\u00e9\npoint d'interrogation retourn\u00e9",Agrave:"Latin - A majuscule avec accent grave\nLatin - A majuscule accent grave",Aacute:"Latin - A majuscule avec accent aigu",Acirc:"Latin - A majuscule avec accent circonflexe",Atilde:"Latin - A majuscule avec tilde",
+Auml:"Latin - A majuscule avec tr\u00e9ma",Aring:"Latin - A majuscule rond en chef\nLatin - A majuscule rond",AElig:"Latin - AE majuscule\nLatin - AE majuscule (ligature)",Ccedil:"Latin - C majuscule avec c\u00e9dille",Egrave:"Latin - E majuscule avec accent grave",Eacute:"Latin - E majuscule avec accent aigu",Ecirc:"Latin - E majuscule avec accent circonflexe",Euml:"Latin - E majuscule avec tr\u00e9ma",Igrave:"Latin - I majuscule avec accent grave",Iacute:"Latin - I majuscule avec accent aigu",Icirc:"Latin - I majuscule avec accent circonflexe",
+Iuml:"Latin - I majuscule avec tr\u00e9ma",ETH:"Latin - ETH majuscule",Ntilde:"Latin - N majuscule avec tilde",Ograve:"Latin - O majuscule avec accent grave",Oacute:"Latin - O majuscule avec accent aigu",Ocirc:"Latin - O majuscule avec accent circonflexe",Otilde:"Latin - O majuscule avec tilde",Ouml:"Latin - O majuscule avec tr\u00e9ma",times:"signe multiplication",Oslash:"Latin - O majuscule barr\u00e9\nLatin - Ensemble vide",Ugrave:"Latin - U majuscule avec accent grave",Uacute:"Latin - U majuscule avec accent aigu",
+Ucirc:"Latin - U majuscule avec accent circonflexe",Uuml:"Latin - U majuscule avec tr\u00e9ma",Yacute:"Latin - Y majuscule avec accent aigu",THORN:"Latin THORN majuscule",szlig:"Latin - s dur minuscule\nss",agrave:"Latin - a minuscule avec accent grave\nLatin - a minuscule accent grave",aacute:"Latin - a minuscule avec accent aigu",acirc:"Latin - a minuscule avec accent circonflexe",atilde:"Latin - a minuscule avec tilde",auml:"Latin - a minuscule avec tr\u00e9ma",aring:"Latin - a minuscule rond en chef\nLatin - a minuscule rond",
+aelig:"Latin - AE minuscule\nLatin - AE minuscule (ligature)",ccedil:"Latin - c minuscule avec c\u00e9dille",egrave:"Latin - e minuscule avec accent grave",eacute:"Latin - e minuscule avec accent aigu",ecirc:"Latin - e minuscule avec accent circonflexe",euml:"Latin - e minuscule avec tr\u00e9ma",igrave:"Latin - i minuscule avec accent grave",iacute:"Latin - i minuscule avec accent aigu",icirc:"Latin - i minuscule avec accent circonflexe",iuml:"Latin - i minuscule avec tr\u00e9ma",eth:"Latin - eth minuscule",
+ntilde:"Latin - n minuscule avec tilde",ograve:"Latin - o minuscule avec accent grave",oacute:"Latin - o minuscule avec accent aigu",ocirc:"Latin - o minuscule avec accent circonflexe",otilde:"Latin - o minuscule avec tilde",ouml:"Latin - o minuscule avec tr\u00e9ma",divide:"signe division",oslash:"Latin - o minuscule barr\u00e9\nLatin - Ensemble vide minuscule",ugrave:"Latin - u minuscule avec accent grave",uacute:"Latin - u minuscule avec accent aigu",ucirc:"Latin - u minuscule avec accent circonflexe",
+uuml:"Latin - u minuscule avec tr\u00e9ma",yacute:"Latin - y minuscule avec accent aigu",thorn:"Latin - thorn minuscule",yuml:"Latin - y minuscule avec tr\u00e9ma",fnof:"Latin - f minuscule avec crochet\nfonction\nflorin",Alpha:"Grec - alpha majuscule",Beta:"Grec - beta majuscule",Gamma:"Grec - gamma majuscule",Delta:"Grec - delta majuscule",Epsilon:"Grec - epsilon majuscule",Zeta:"Grec - zeta majuscule",Eta:"Grec - eta majuscule",Theta:"Grec - theta majuscule",Iota:"Grec - iota majuscule",Kappa:"Grec - kappa majuscule",
+Lambda:"Grec - lambda majuscule",Mu:"Grec - mu majuscule",Nu:"Grec - nu majuscule",Xi:"Grec - xi majuscule",Omicron:"Grec - omicron majuscule",Pi:"Grec - pi majuscule",Rho:"Grec - rho majuscule",Sigma:"Grec - sigma majuscule",Tau:"Grec - tau majuscule",Upsilon:"Grec - upsilon majuscule",Phi:"Grec - phi majuscule",Chi:"Grec - chi majuscule",Psi:"Grec - psi majuscule",Omega:"Grec - omega majuscule",alpha:"Grec - alpha minuscule",beta:"Grec - beta minuscule",gamma:"Grec - gamma minuscule",delta:"Grec - delta minuscule",
+epsilon:"Grec - epsilon minuscule",zeta:"Grec - zeta minuscule",eta:"Grec - eta minuscule",theta:"Grec - theta minuscule",iota:"Grec - iota minuscule",kappa:"Grec - kappa minuscule",lambda:"Grec - lambda minuscule",mu:"Grec - mu minuscule",nu:"Grec - nu minuscule",xi:"Grec - xi minuscule",omicron:"Grec - omicron minuscule",pi:"Grec - pi minuscule",rho:"Grec - rho minuscule",sigmaf:"Grec - sigma final minuscule",sigma:"Grec - sigma minuscule",tau:"Grec - tau minuscule",upsilon:"Grec - upsilon minuscule",
+phi:"Grec - phi minuscule",chi:"Grec - chi minuscule",psi:"Grec - psi minuscule",omega:"Grec - omega minuscule",thetasym:"Grec - theta minuscule",upsih:"Greek - upsilon avec symbole de crochet",piv:"Greek - symbole pi",bull:"puce\npetit cercle noir",hellip:"points de suspension\ntrois points de conduite",prime:"apostrophe\nminutes\npieds",Prime:"double apostrophe\nsecondes\npouces",oline:"surlign\u00e9\nbarre sup\u00e9rieure d'espacement",frasl:"barre de fraction",weierp:"P majuscule scripte\nensemble de puissances\nfonction elliptique de Weierstrass",
+image:"I majuscule noir\npartie imaginaire",real:"R majuscule noir\npartie r\u00e9elle",trade:"signe de marque commerciale",alefsym:"symbole alef\npremier cardinal transfini",larr:"fl\u00e8che vers la gauche",uarr:"fl\u00e8che vers le haut",rarr:"fl\u00e8che vers la droite",darr:"fl\u00e8che vers le bas",harr:"fl\u00e8che vers la gauche et la droite",crarr:"fl\u00e8che vers le bas avec coin vers la gauche\nretour chariot",lArr:"fl\u00e8che double vers la gauche",uArr:"fl\u00e8che double vers le haut",
+rArr:"fl\u00e8che double vers la droite",dArr:"fl\u00e8che double vers le bas",hArr:"fl\u00e8che double vers la gauche",forall:"pour tous",part:"diff\u00e9rentiel partiel",exist:"il existe",empty:"ensemble vide\nensemble null\ndiam\u00e8tre",nabla:"nabla\ndiff\u00e9rence arri\u00e8re",isin:"\u00e9l\u00e9ment de",notin:"non \u00e9l\u00e9ment de",ni:"contient comme membre",prod:"produit n-aire\nsigne produit",sum:"somme n-aire",minus:"signe moins",lowast:"ast\u00e9risque",radic:"racine carr\u00e9e\nsigne radical",
+prop:"proportionnel \u00e0",infin:"infinit\u00e9",ang:"angle",and:"et logique\nwedge",or:"ou logique\nvee",cap:"intersection\ncap",cup:"union\ncup","int":"int\u00e9grale",there4:"donc",sim:"tilde\nvarie en fonction de\nsimilaire \u00e0",cong:"approximativement \u00e9gal \u00e0",asymp:"presque \u00e9gal \u00e0\nasymptotique \u00e0",ne:"diff\u00e9rente de",equiv:"identique \u00e0",le:"inf\u00e9rieur ou \u00e9gal \u00e0",ge:"sup\u00e9rieur ou \u00e9gal \u00e0",sub:"sous-ensemble de",sup:"sur-ensemble de",
+nsub:"non sous-ensemble de",sube:"sous-ensemble de ou \u00e9gal \u00e0",supe:"sur-ensemble de ou \u00e9gal \u00e0",oplus:"plus entour\u00e9\nsomme directe",otimes:"signe multipli\u00e9 entour\u00e9\nproduit vectoriel",perp:"orthogonal \u00e0\nperpendiculaire",sdot:"point",lceil:"plafond \u00e0 gauche\nmontant APL",rceil:"plafond \u00e0 droite",lfloor:"plancher \u00e0 gauche\ndescendant APL",rfloor:"plancher \u00e0 droite",lang:"chevron vers la gauche",rang:"chevron vers la droite",loz:"losange",spades:"pic noir",
+clubs:"tr\u00e8fle noir",hearts:"coeur noir\nvalentine",diams:"carreau noir",OElig:"Latin - Ligature OE majuscule",oelig:"Latin - Ligature oe minuscule",Scaron:"Latin - S majuscule avec caron",scaron:"Latin - s minuscule avec caron",Yuml:"Latin - Y majuscule avec tr\u00e9ma",circ:"accent circonflexe de lettre modificateur",tilde:"petit tilde",ensp:"espace demi-cadratin",emsp:"espace cadratin",thinsp:"espace fin",zwnj:"antiliant sans chasse",zwj:"liant sans chasse",lrm:"marque de gauche \u00e0 droite",
+rlm:"marque de droite \u00e0 gauche",ndash:"tiret demi-cadratin",mdash:"tiret cadratin",lsquo:"guillemet simple ouvrant",rsquo:"guillemet simple fermant",sbquo:"guillemet simple fermant bas",ldquo:"guillemet double gauche",rdquo:"guillemet double droit",bdquo:"guillemet double fermant bas",dagger:"ob\u00e8le",Dagger:"double ob\u00e8le",permil:"signe pour-mille",lsaquo:"guillemet simple orient\u00e9 vers la gauche",rsaquo:"guillemet simple orient\u00e9 vers la droite",euro:"signe euro"});//>>built
+define("dojox/editor/plugins/nls/it/AutoSave",{saveLabel:"Salva",saveSettingLabelOn:"Imposta intervallo di salvataggio automatico...",saveSettingLabelOff:"Disattiva salvataggio automatico",saveSettingdialogTitle:"Salvataggio automatico",saveSettingdialogDescription:"Specifica intervallo di salvataggio automatico",saveSettingdialogParamName:"Intervallo di salvataggio automatico",saveSettingdialogParamLabel:"min",saveSettingdialogButtonOk:"Imposta intervallo",saveSettingdialogButtonCancel:"Annulla",
+saveMessageSuccess:"Salvato alle ${0}",saveMessageFail:"Salvataggio alle ${0} non riuscito"});//>>built
+define("dojox/editor/plugins/nls/it/Blockquote",{blockquote:"Blockquote"});//>>built
+define("dojox/editor/plugins/nls/it/Breadcrumb",{nodeActions:"Azioni ${nodeName}",selectContents:"Seleziona contenuti",selectElement:"Seleziona elemento",deleteElement:"Elimina elemento",deleteContents:"Elimina contenuti",moveStart:"Sposta cursore all'inizio",moveEnd:"Sposta cursore alla fine"});//>>built
+define("dojox/editor/plugins/nls/it/CollapsibleToolbar",{collapse:"Comprimi barra degli strumenti dell'editor",expand:"Espandi barra degli strumenti dell'editor"});//>>built
+define("dojox/editor/plugins/nls/it/FindReplace",{findLabel:"Trova:",findTooltip:"Immettere il testo da ricercare",replaceLabel:"Sostituisci con:",replaceTooltip:"Immettere il testo con cui sostituire",findReplace:"Trova e sostituisci",matchCase:"Corrispondenza maiuscolo/minuscolo",matchCaseTooltip:"Corrispondenza maiuscolo/minuscolo",backwards:"Indietro",backwardsTooltip:"Ricercare il testo all'indietro",replaceAllButton:"Sostituisci tutti",replaceAllButtonTooltip:"Sostituisci tutto il testo",findButton:"Trova",
+findButtonTooltip:"Trova il testo",replaceButton:"Sostituisci",replaceButtonTooltip:"Sostituisci il testo",replaceDialogText:"Sostituite ${0} ricorrenze.",eofDialogText:"Ultime ${0} ricorrenze",eofDialogTextFind:"trovato",eofDialogTextReplace:"sostituito"});//>>built
+define("dojox/editor/plugins/nls/it/InsertAnchor",{insertAnchor:"Inserisci ancoraggio",title:"Propriet\u00e0 ancoraggio",anchor:"Nome:",text:"Descrizione:",set:"Imposta",cancel:"Annulla"});//>>built
+define("dojox/editor/plugins/nls/it/InsertEntity",{insertEntity:"Inserisci simbolo"});//>>built
+define("dojox/editor/plugins/nls/it/LocalImage",{insertImageTitle:"Inserisci immagine",url:"Immagine",browse:"Sfoglia...",text:"Descrizione",set:"Inserisci",invalidMessage:"Tipo file immagine non valido",prePopuTextUrl:"Immettere un URL immagine",prePopuTextBrowse:" o selezionare un file locale."});//>>built
+define("dojox/editor/plugins/nls/it/PageBreak",{pageBreak:"Interruzione pagina"});//>>built
+define("dojox/editor/plugins/nls/it/PasteFromWord",{pasteFromWord:"Incolla da Word",instructions:"Incollare i contenuti da Word nella seguente casella di testo. Quando si \u00e8 deciso quali contenuti inserire, fare clic sul pulsante incolla. Per interrompere l'inserimento del testo premere il pulsante annulla."});//>>built
+define("dojox/editor/plugins/nls/it/Preview",{preview:"Anteprima"});//>>built
+define("dojox/editor/plugins/nls/it/SafePaste",{instructions:"Non \u00e8 possibile incollare direttamente. Incollare i contenuti in questa finestra di dialogo utilizzando i controlli standard da menu o da tastiera del browser. Quando si \u00e8 deciso quali contenuti inserire, fare clic sul pulsante incolla. Per interrompere l'inserimento dei contenuti premere il pulsante annulla."});//>>built
+define("dojox/editor/plugins/nls/it/Save",{save:"Salva"});//>>built
+define("dojox/editor/plugins/nls/it/ShowBlockNodes",{showBlockNodes:"Mostra elementi blocco HTML"});//>>built
+define("dojox/editor/plugins/nls/it/Smiley",{smiley:"Inserisci emoticon",emoticonSmile:"sorriso",emoticonLaughing:"risata",emoticonWink:"occhiolino",emoticonGrin:"ghigno",emoticonCool:"figo",emoticonAngry:"arrabbiato",emoticonHalf:"met\u00e0",emoticonEyebrow:"sopracciglia",emoticonFrown:"triste",emoticonShy:"timido",emoticonGoofy:"sciocco",emoticonOops:"ops",emoticonTongue:"linguaccia",emoticonIdea:"idea",emoticonYes:"s\u00ec",emoticonNo:"no",emoticonAngel:"angelo",emoticonCrying:"in lacrime",emoticonHappy:"felice"});//>>built
+define("dojox/editor/plugins/nls/it/SpellCheck",{widgetLabel:"Controllo ortografico batch",unfound:"Non trovato",skip:"Ignora",skipAll:"Ignora tutto",toDic:"Aggiungi a dizionario",suggestions:"Suggerimenti",replace:"Sostituisci",replaceWith:"Sostituisci con",replaceAll:"Sostituisci tutti",cancel:"Annulla",msg:"Nessun errore ortografico",iSkip:"Ignora questo",iSkipAll:"Ignora tutti quelli uguali a questo",iMsg:"Nessun suggerimento ortografico"});//>>built
+define("dojox/editor/plugins/nls/it/TableDialog",{insertTableTitle:"Inserisci tabella",modifyTableTitle:"Modifica tabella",rows:"Righe",columns:"Colonne",align:"Allinea",cellPadding:"Riempimento cella",cellSpacing:"Spazio cella",tableWidth:"Larghezza tabella",backgroundColor:"Colore di sfondo:",borderColor:"Colore bordo:",borderThickness:"Spessore bordo:",percent:"percentuale",pixels:"pixel","default":"impostazione predefinita",left:"sinistra",center:"centro",right:"destra",buttonSet:"Imposta",buttonInsert:"Inserisci",
+buttonCancel:"Annulla",selectTableLabel:"Seleziona tabella",insertTableRowBeforeLabel:"Aggiungi riga prima",insertTableRowAfterLabel:"Aggiungi riga dopo",insertTableColumnBeforeLabel:"Aggiungi colonna prima",insertTableColumnAfterLabel:"Aggiungi colonna dopo",deleteTableRowLabel:"Elimina riga",deleteTableColumnLabel:"Elimina colonna"});//>>built
+define("dojox/editor/plugins/nls/it/TextColor",{setButtonText:"Imposta",cancelButtonText:"Annulla"});//>>built
+define("dojox/editor/plugins/nls/it/latinEntities",{iexcl:"punto esclamativo invertito",cent:"simbolo di centesimo",pound:"simbolo di sterlina",curren:"simbolo di valuta",yen:"simbolo di yen\nsimbolo di yuan",brvbar:"barra interrotta\nbarra verticale interrotta",sect:"simbolo di sezione",uml:"dieresi\ndieresi con spaziatura",copy:"simbolo di copyright",ordf:"indicatore ordinale femminile",laquo:"virgolette doppie angolari indicanti a sinistra\nguillemet indicante a sinistra",not:"simbolo di not",
+shy:"trattino nascosto\ntrattino discrezionale",reg:"simbolo registrato\nsimbolo di marchio commerciale registrato",macr:"macron\nmacron con spaziatura\nlinea sopra\nbarra sovrapposta APL",deg:"simbolo dei gradi",plusmn:"segno pi\u00f9-meno\nsegno pi\u00f9 o meno",sup2:"esponente due\nnumero due in esponente\nal quadrato",sup3:"esponente tre\nnumero tre in esponente\nal cubo",acute:"accento acuto\nacuto con spaziatura",micro:"simbolo di micro",para:"segno pilcrow\nsimbolo paragrafo",middot:"punto centrale\nvirgola georgiana\npunto centrale greco",
+cedil:"cediglia\ncediglia con spaziatura",sup1:"esponente uno\nnumero uno con esponente",ordm:"indicatore ordinale maschile",raquo:"virgolette doppie angolari indicanti a destra\nguillemet indicante a destra",frac14:"frazione un quarto\nfrazione un quarto",frac12:"frazione un mezzo\nfrazione un mezzo",frac34:"frazione tre quarti\nfrazione tre quarti",iquest:"punto interrogativo invertito\npunto interrogativo capovolto",Agrave:"Lettera A maiuscola con accento grave\nLettera A maiuscola grave",Aacute:"Lettera A maiuscola con accento acuto",
+Acirc:"Lettera A maiuscola con accento circonflesso",Atilde:"Lettera A maiuscola con tilde",Auml:"Lettera A maiuscola con dieresi",Aring:"Lettera A maiuscola con cerchio in alto\nLettera A maiuscola con cerchio",AElig:"Lettera AE maiuscola\nLegatura AE maiuscola",Ccedil:"Lettera C maiuscola con cediglia",Egrave:"Lettera E maiuscola con accento grave",Eacute:"Lettera E maiuscola con accento acuto",Ecirc:"Lettera E maiuscola con accento circonflesso",Euml:"Lettera E maiuscola con dieresi",Igrave:"Lettera I maiuscola con accento grave",
+Iacute:"Lettera I maiuscola con accento acuto",Icirc:"Lettera I maiuscola con accento circonflesso",Iuml:"Lettera I maiuscola con dieresi",ETH:"Lettera ETH maiuscola",Ntilde:"Lettera N maiuscola con tilde",Ograve:"Lettera O maiuscola con accento grave",Oacute:"Lettera O maiuscola con accento acuto",Ocirc:"Lettera O maiuscola con accento circonflesso",Otilde:"Lettera O maiuscola con tilde",Ouml:"Lettera O maiuscola con dieresi",times:"segno di moltiplicazione",Oslash:"Lettera O maiuscola con tratto\nLettera O maiuscola barra",
+Ugrave:"Lettera U maiuscola con accento grave",Uacute:"Lettera U maiuscola con accento acuto",Ucirc:"Lettera U maiuscola con accento circonflesso",Uuml:"Lettera U maiuscola con dieresi",Yacute:"Lettera Y maiuscola con accento acuto",THORN:"Lettera THORN maiuscola",szlig:"Lettera s minuscola sonora\nesse-zeta",agrave:"Lettera a minuscola con accento grave\nLettera a minuscola grave",aacute:"Lettera a minuscola con accento acuto",acirc:"Lettera a minuscola con accento circonflesso",atilde:"Lettera a minuscola con tilde",
+auml:"Lettera a minuscola con dieresi",aring:"Lettera a minuscola con cerchio in alto\nLettera a minuscola con cerchio",aelig:"Lettera ae minuscola\nLegatura ae minuscola",ccedil:"Lettera c minuscola con cediglia",egrave:"Lettera e minuscola con accento grave",eacute:"Lettera e minuscola con accento acuto",ecirc:"Lettera e minuscola con accento circonflesso",euml:"Lettera e minuscola con dieresi",igrave:"Lettera i minuscola con accento grave",iacute:"Lettera i minuscola con accento acuto",icirc:"Lettera i minuscola con accento circonflesso",
+iuml:"Lettera i minuscola con dieresi",eth:"Lettera eth minuscola",ntilde:"Lettera n minuscola con tilde",ograve:"Lettera o minuscola con accento grave",oacute:"Lettera o minuscola con accento acuto",ocirc:"Lettera o minuscola con accento circonflesso",otilde:"Lettera o minuscola con tilde",ouml:"Lettera o minuscola con dieresi",divide:"segno di divisione",oslash:"Lettera o minuscola con tratto\nLettera o minuscola barra",ugrave:"Lettera u minuscola con accento grave",uacute:"Lettera u minuscola con accento acuto",
+ucirc:"Lettera u minuscola con accento circonflesso",uuml:"Lettera u minuscola con dieresi",yacute:"Lettera y minuscola con accento acuto",thorn:"Lettera thorn minuscola",yuml:"Lettera y minuscola con dieresi",fnof:"Lettera f minuscola con uncino\nfunzione\nfiorino",Alpha:"Lettera alfa maiuscola greca",Beta:"Lettera beta maiuscola greca",Gamma:"Lettera gamma maiuscola greca",Delta:"Lettera delta maiuscola greca",Epsilon:"Lettera epsilon maiuscola greca",Zeta:"Lettera zeta maiuscola greca",Eta:"Lettera eta maiuscola greca",
+Theta:"Lettera theta maiuscola greca",Iota:"Lettera iota maiuscola greca",Kappa:"Lettera kappa maiuscola greca",Lambda:"Lettera lambda maiuscola greca",Mu:"Lettera mu maiuscola greca",Nu:"Lettera nu maiuscola greca",Xi:"Lettera xi maiuscola greca",Omicron:"Lettera omicron maiuscola greca",Pi:"Lettera pi maiuscola greca",Rho:"Lettera rho maiuscola greca",Sigma:"Lettera sigma maiuscola greca",Tau:"Lettera tau maiuscola greca",Upsilon:"Lettera upsilon maiuscola greca",Phi:"Lettera phi maiuscola greca",
+Chi:"Lettera chi maiuscola greca",Psi:"Lettera psi maiuscola greca",Omega:"Lettera omega maiuscola greca",alpha:"Lettera alfa minuscola greca",beta:"Lettera beta minuscola greca",gamma:"Lettera gamma minuscola greca",delta:"Lettera delta minuscola greca",epsilon:"Lettera epsilon minuscola greca",zeta:"Lettera zeta minuscola greca",eta:"Lettera eta minuscola greca",theta:"Lettera theta minuscola greca",iota:"Lettera iota minuscola greca",kappa:"Lettera kappa minuscola greca",lambda:"Lettera lambda minuscola greca",
+mu:"Lettera mu minuscola greca",nu:"Lettera nu minuscola greca",xi:"Lettera xi minuscola greca",omicron:"Lettera omicron minuscola greca",pi:"Lettera pi minuscola greca",rho:"Lettera rho minuscola greca",sigmaf:"Lettera sigma minuscola greca",sigma:"Lettera sigma minuscola greca",tau:"Lettera tau minuscola greca",upsilon:"Lettera upsilon minuscola greca",phi:"Lettera phi minuscola greca",chi:"Lettera chi minuscola greca",psi:"Lettera psi minuscola greca",omega:"Lettera omega minuscola greca",thetasym:"Simbolo theta minuscolo greca",
+upsih:"Simbolo upsilon con uncino greco",piv:"Simbolo pi greco",bull:"pallino\npiccolo cerchio nero",hellip:"puntini di sospensione\ntre puntini",prime:"apice\nminuti\npiedi",Prime:"doppio apice\nsecondi\npollici",oline:"linea sopra\noverscore con spaziatura",frasl:"barra frazione",weierp:"P maiuscola in corsivo\ninsieme potenza\nWeierstrass p",image:"I maiuscola gotica\nelemento immaginario",real:"R maiuscola gotica\nsimbolo di elemento reale",trade:"simbolo di marchio commerciale",alefsym:"simbolo alef\nprimo cardinale transfinito",
+larr:"freccia verso sinistra",uarr:"freccia verso l'alto",rarr:"freccia verso destra",darr:"freccia verso il basso",harr:"freccia sinistra destra",crarr:"freccia verso il basso con angolo verso sinistra\nritorno a capo",lArr:"freccia doppia verso sinistra",uArr:"freccia doppia verso l'alto",rArr:"freccia doppia verso destra",dArr:"freccia doppia verso il basso",hArr:"freccia doppia sinistra destra",forall:"per tutti",part:"differenziale parziale",exist:"esiste",empty:"insieme vuoto\ninsieme nullo\ndiametro",
+nabla:"nabla\ndifferenza all'indietro",isin:"elemento di",notin:"non un elemento di",ni:"contiene come membro",prod:"prodotto di grado n\nsegno di prodotto",sum:"sommatoria di grado n",minus:"segno meno",lowast:"operatore asterisco",radic:"radice quadrata\nsegno radice",prop:"proporzionale a",infin:"infinito",ang:"angolo",and:"and logico\nwedge",or:"or logico\nvee",cap:"intersezione\ncap",cup:"unione\ncoppa","int":"integrale",there4:"quindi",sim:"operatore tilde\nvaria con\nsimile a",cong:"approssimativamente uguale a",
+asymp:"quasi uguale a\nasintodico di",ne:"non uguale a",equiv:"identico a",le:"minore o eguale a",ge:"maggiore o eguale a",sub:"sottoinsieme di",sup:"sovrainsieme di",nsub:"non un sottoinsieme di",sube:"sottoinsieme o uguale a",supe:"sovrainsieme o uguale a",oplus:"circled plus\nsomma diretta",otimes:"circled times\nprodotto vettoriale",perp:"up tack\nperpendicolare a\nperpendicolare",sdot:"operatore punto",lceil:"left ceiling\nAPL upstile",rceil:"right ceiling",lfloor:"left floor\nAPL downstile",
+rfloor:"right floor",lang:"parentesi angolare a sinistra",rang:"parentesi angolare a destra",loz:"losanga",spades:"seme di picche nero",clubs:"seme di fiori nero\nshamrock",hearts:"seme di cuori nero\nvalentine",diams:"seme di quadri nero",OElig:"Legatura OE maiuscola",oelig:"Legatura oe minuscola",Scaron:"Lettera S maiuscola con caron",scaron:"Lettera s minuscola con caron",Yuml:"Lettera Y maiuscola con dieresi",circ:"carattere di modifica accento circonflesso",tilde:"piccola tilde",ensp:"spazio en",
+emsp:"spazio em",thinsp:"spazio sottile",zwnj:"non congiuntore di larghezza zero",zwj:"congiuntore di larghezza zero",lrm:"contrassegno da sinistra a destra",rlm:"contrassegno da destra a sinistra",ndash:"trattino en",mdash:"trattino em",lsquo:"virgoletta singola sinistra",rsquo:"virgoletta singola destra",sbquo:"virgoletta singola bassa",ldquo:"virgolette doppie sinistre",rdquo:"virgolette doppie destre",bdquo:"virgolette doppie basse",dagger:"spada",Dagger:"doppia spada",permil:"simbolo per mille",
+lsaquo:"virgoletta angolare sinistra",rsaquo:"virgoletta angolare destra",euro:"simbolo di euro"});//>>built
define("dojox/editor/plugins/nls/latinEntities",{root:{iexcl:"inverted exclamation mark",cent:"cent sign",pound:"pound sign",curren:"currency sign",yen:"yen sign\nyuan sign",brvbar:"broken bar\nbroken vertical bar",sect:"section sign",uml:"diaeresis\nspacing diaeresis",copy:"copyright sign",ordf:"feminine ordinal indicator",laquo:"left-pointing double angle quotation mark\nleft pointing guillemet",not:"not sign",shy:"soft hyphen\ndiscretionary hyphen",reg:"registered sign\nregistered trade mark sign",
macr:"macron\nspacing macron\noverline\nAPL overbar",deg:"degree sign",plusmn:"plus-minus sign\nplus-or-minus sign",sup2:"superscript two\nsuperscript digit two\nsquared",sup3:"superscript three\nsuperscript digit three\ncubed",acute:"acute accent\nspacing acute",micro:"micro sign",para:"pilcrow sign\nparagraph sign",middot:"middle dot\nGeorgian comma\nGreek middle dot",cedil:"cedilla\nspacing cedilla",sup1:"superscript one\nsuperscript digit one",ordm:"masculine ordinal indicator",raquo:"right-pointing double angle quotation mark\nright pointing guillemet",
frac14:"vulgar fraction one quarter\nfraction one quarter",frac12:"vulgar fraction one half\nfraction one half",frac34:"vulgar fraction three quarters\nfraction three quarters",iquest:"inverted question mark\nturned question mark",Agrave:"Latin capital letter A with grave\nLatin capital letter A grave",Aacute:"Latin capital letter A with acute",Acirc:"Latin capital letter A with circumflex",Atilde:"Latin capital letter A with tilde",Auml:"Latin capital letter A with diaeresis",Aring:"Latin capital letter A with ring above\nLatin capital letter A ring",
@@ -1406,306 +1155,115 @@ nabla:"nabla\nbackward difference",isin:"element of",notin:"not an element of",n
ne:"not equal to",equiv:"identical to",le:"less-than or equal to",ge:"greater-than or equal to",sub:"subset of",sup:"superset of",nsub:"not a subset of",sube:"subset of or equal to",supe:"superset of or equal to",oplus:"circled plus\ndirect sum",otimes:"circled times\nvector product",perp:"up tack\northogonal to\nperpendicular",sdot:"dot operator",lceil:"left ceiling\nAPL upstile",rceil:"right ceiling",lfloor:"left floor\nAPL downstile",rfloor:"right floor",lang:"left-pointing angle bracket",rang:"right-pointing angle bracket",
loz:"lozenge",spades:"black spade suit",clubs:"black club suit\nshamrock",hearts:"black heart suit\nvalentine",diams:"black diamond suit",OElig:"Latin capital ligature OE",oelig:"Latin small ligature oe",Scaron:"Latin capital letter S with caron",scaron:"Latin small letter s with caron",Yuml:"Latin capital letter Y with diaeresis",circ:"modifier letter circumflex accent",tilde:"small tilde",ensp:"en space",emsp:"em space",thinsp:"thin space",zwnj:"zero width non-joiner",zwj:"zero width joiner",lrm:"left-to-right mark",
rlm:"right-to-left mark",ndash:"en dash",mdash:"em dash",lsquo:"left single quotation mark",rsquo:"right single quotation mark",sbquo:"single low-9 quotation mark",ldquo:"left double quotation mark",rdquo:"right double quotation mark",bdquo:"double low-9 quotation mark",dagger:"dagger",Dagger:"double dagger",permil:"per mille sign",lsaquo:"single left-pointing angle quotation mark",rsaquo:"single right-pointing angle quotation mark",euro:"euro sign"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,
-ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/latinEntities.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/AutoSave.js] */
-//>>built
-define("dojox/editor/plugins/nls/ru/AutoSave",{saveLabel:"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c",saveSettingLabelOn:"\u0417\u0430\u0434\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0430\u0432\u0442\u043e\u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f...",saveSettingLabelOff:"\u0412\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435",saveSettingdialogTitle:"\u0410\u0432\u0442\u043e\u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435",
-saveSettingdialogDescription:"\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0430\u0432\u0442\u043e\u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f",saveSettingdialogParamName:"\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0430\u0432\u0442\u043e\u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f",saveSettingdialogParamLabel:"\u043c\u0438\u043d",saveSettingdialogButtonOk:"\u0417\u0430\u0434\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b",
-saveSettingdialogButtonCancel:"\u041e\u0442\u043c\u0435\u043d\u0430",saveMessageSuccess:"\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043e ${0}",saveMessageFail:"\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c ${0}"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/AutoSave.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/Blockquote.js] */
-//>>built
-define("dojox/editor/plugins/nls/ru/Blockquote",{blockquote:"\u0411\u043b\u043e\u043a \u0446\u0438\u0442\u0430\u0442"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/Blockquote.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/Breadcrumb.js] */
-//>>built
-define("dojox/editor/plugins/nls/ru/Breadcrumb",{nodeActions:"${nodeName}: \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f",selectContents:"\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435",selectElement:"\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442",deleteElement:"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442",deleteContents:"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435",
-moveStart:"\u041f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043a\u0443\u0440\u0441\u043e\u0440 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e",moveEnd:"\u041f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043a\u0443\u0440\u0441\u043e\u0440 \u0432 \u043a\u043e\u043d\u0435\u0446"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/Breadcrumb.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/CollapsibleToolbar.js] */
-//>>built
-define("dojox/editor/plugins/nls/ru/CollapsibleToolbar",{collapse:"\u0421\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u0430\u043d\u0435\u043b\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f",expand:"\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u0430\u043d\u0435\u043b\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/CollapsibleToolbar.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/FindReplace.js] */
-//>>built
-define("dojox/editor/plugins/nls/ru/FindReplace",{findLabel:"\u041d\u0430\u0439\u0442\u0438:",findTooltip:"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430",replaceLabel:"\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430:",replaceTooltip:"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u0437\u0430\u043c\u0435\u043d\u044b",findReplace:"\u041d\u0430\u0439\u0442\u0438 \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c",
-matchCase:"\u0421 \u0443\u0447\u0435\u0442\u043e\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430",matchCaseTooltip:"\u0421 \u0443\u0447\u0435\u0442\u043e\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430",backwards:"\u041d\u0430\u0437\u0430\u0434",backwardsTooltip:"\u041f\u043e\u0438\u0441\u043a \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438",replaceAllButton:"\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435",
-replaceAllButtonTooltip:"\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u0442\u0435\u043a\u0441\u0442",findButton:"\u041d\u0430\u0439\u0442\u0438",findButtonTooltip:"\u041d\u0430\u0439\u0442\u0438 \u0442\u0435\u043a\u0441\u0442",replaceButton:"\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c",replaceButtonTooltip:"\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442",replaceDialogText:"\u0417\u0430\u043c\u0435\u043d\u0435\u043d\u043e ${0} \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0439.",
-eofDialogText:"\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 ${0}",eofDialogTextFind:"\u043d\u0430\u0439\u0434\u0435\u043d\u043e",eofDialogTextReplace:"\u0437\u0430\u043c\u0435\u043d\u0435\u043d\u043e"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/FindReplace.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/InsertAnchor.js] */
-//>>built
-define("dojox/editor/plugins/nls/ru/InsertAnchor",{insertAnchor:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0442\u043a\u0443",title:"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043c\u0435\u0442\u043a\u0438",anchor:"\u0418\u043c\u044f:",text:"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435:",set:"\u0417\u0430\u0434\u0430\u0442\u044c",cancel:"\u041e\u0442\u043c\u0435\u043d\u0430"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/InsertAnchor.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/InsertEntity.js] */
-//>>built
-define("dojox/editor/plugins/nls/ru/InsertEntity",{insertEntity:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/InsertEntity.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/LocalImage.js] */
-//>>built
-define("dojox/editor/plugins/nls/ru/LocalImage",{insertImageTitle:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",url:"\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",browse:"\u041e\u0431\u0437\u043e\u0440...",text:"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",set:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c",invalidMessage:"\u041d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0442\u0438\u043f \u0444\u0430\u0439\u043b\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",
-prePopuTextUrl:"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 URL \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",prePopuTextBrowse:" \u0438\u043b\u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b."});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/LocalImage.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/PageBreak.js] */
-//>>built
-define("dojox/editor/plugins/nls/ru/PageBreak",{pageBreak:"\u0420\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/PageBreak.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/PasteFromWord.js] */
-//>>built
-define("dojox/editor/plugins/nls/ru/PasteFromWord",{pasteFromWord:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0437 Word",instructions:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0438\u0437 Word \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 \u043d\u0438\u0436\u0435. \u041a\u043e\u0433\u0434\u0430 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438, \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c. \u0414\u043b\u044f \u043e\u0442\u043c\u0435\u043d\u044b \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u041e\u0442\u043c\u0435\u043d\u0430."});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/PasteFromWord.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/Preview.js] */
-//>>built
-define("dojox/editor/plugins/nls/ru/Preview",{preview:"\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/Preview.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/SafePaste.js] */
-//>>built
-define("dojox/editor/plugins/nls/ru/SafePaste",{instructions:"\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0430. \u0412\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u044d\u0442\u043e \u043e\u043a\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0438\u043b\u0438 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u043c\u0435\u043d\u044e. \u041a\u043e\u0433\u0434\u0430 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438, \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c. \u0414\u043b\u044f \u043e\u0442\u043c\u0435\u043d\u044b \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u041e\u0442\u043c\u0435\u043d\u0430. "});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/SafePaste.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/Save.js] */
-//>>built
-define("dojox/editor/plugins/nls/ru/Save",{save:"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/Save.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/ShowBlockNodes.js] */
-//>>built
-define("dojox/editor/plugins/nls/ru/ShowBlockNodes",{showBlockNodes:"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0431\u043b\u043e\u043a\u0430 HTML"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/ShowBlockNodes.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/Smiley.js] */
-//>>built
-define("dojox/editor/plugins/nls/ru/Smiley",{smiley:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u043e\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f",emoticonSmile:"\u0443\u043b\u044b\u0431\u043a\u0430",emoticonLaughing:"\u0441\u043c\u0435\u0445",emoticonWink:"\u043f\u043e\u0434\u043c\u0438\u0433\u0438\u0432\u0430\u043d\u0438\u0435",emoticonGrin:"\u0443\u0441\u043c\u0435\u0448\u043a\u0430",emoticonCool:"\u0437\u0434\u043e\u0440\u043e\u0432\u043e",
-emoticonAngry:"\u0437\u043b\u043e\u0441\u0442\u044c",emoticonHalf:"\u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430",emoticonEyebrow:"\u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435",emoticonFrown:"\u0445\u043c\u0443\u0440\u044b\u0439 \u0432\u0438\u0434",emoticonShy:"\u0437\u0430\u0441\u0442\u0435\u043d\u0447\u0438\u0432\u043e\u0441\u0442\u044c",emoticonGoofy:"\u0433\u043b\u0443\u043f\u044b\u0439",emoticonOops:"\u0443\u0443\u043f\u0441",emoticonTongue:"\u043d\u0430\u0441\u043c\u0435\u0448\u043a\u0430",
-emoticonIdea:"\u0435\u0441\u0442\u044c \u0438\u0434\u0435\u044f",emoticonYes:"\u0434\u0430",emoticonNo:"\u043d\u0435\u0442",emoticonAngel:"\u0430\u043d\u0433\u0435\u043b",emoticonCrying:"\u043f\u043b\u0430\u0447\u044c",emoticonHappy:"\u0441\u0447\u0430\u0441\u0442\u044c\u0435"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/Smiley.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/SpellCheck.js] */
-//>>built
-define("dojox/editor/plugins/nls/ru/SpellCheck",{widgetLabel:"\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0440\u0444\u043e\u0433\u0440\u0430\u0444\u0438\u0438",unfound:"\u041d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e",skip:"\u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c",skipAll:"\u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0435",toDic:"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u044c",
-suggestions:"\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b",replace:"\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c",replaceWith:"\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430",replaceAll:"\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435",cancel:"\u041e\u0442\u043c\u0435\u043d\u0430",msg:"\u041e\u0448\u0438\u0431\u043e\u043a \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e",iSkip:"\u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e",
-iSkipAll:"\u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0435 \u0441\u0445\u043e\u0436\u0438\u0435",iMsg:"\u041d\u0435\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/SpellCheck.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/TableDialog.js] */
-//>>built
-define("dojox/editor/plugins/nls/ru/TableDialog",{insertTableTitle:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443",modifyTableTitle:"\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443",rows:"\u0421\u0442\u0440\u043e\u043a:",columns:"\u0421\u0442\u043e\u043b\u0431\u0446\u043e\u0432:",align:"\u0412\u044b\u0440\u043e\u0432\u043d\u044f\u0442\u044c:",cellPadding:"\u041e\u0442\u0441\u0442\u0443\u043f \u0432\u043d\u0443\u0442\u0440\u0438 \u044f\u0447\u0435\u0435\u043a:",
-cellSpacing:"\u0420\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u044f\u0447\u0435\u0439\u043a\u0430\u043c\u0438:",tableWidth:"\u0428\u0438\u0440\u0438\u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b:",backgroundColor:"\u0426\u0432\u0435\u0442 \u0444\u043e\u043d\u0430:",borderColor:"\u0426\u0432\u0435\u0442 \u0440\u0430\u043c\u043a\u0438:",borderThickness:"\u0422\u043e\u043b\u0449\u0438\u043d\u0430 \u0440\u0430\u043c\u043a\u0438:",percent:"\u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432",
-pixels:"\u043f\u0438\u043a\u0441\u0435\u043b\u043e\u0432","default":"\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e",left:"\u043f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",center:"\u043f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",right:"\u043f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",buttonSet:"\u0417\u0430\u0434\u0430\u0442\u044c",buttonInsert:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c",buttonCancel:"\u041e\u0442\u043c\u0435\u043d\u0430",
-selectTableLabel:"\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443",insertTableRowBeforeLabel:"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u0435\u0440\u0435\u0434",insertTableRowAfterLabel:"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u043e\u0441\u043b\u0435",insertTableColumnBeforeLabel:"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u043f\u0435\u0440\u0435\u0434",
-insertTableColumnAfterLabel:"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u043f\u043e\u0441\u043b\u0435",deleteTableRowLabel:"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443",deleteTableColumnLabel:"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/TableDialog.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/TextColor.js] */
-//>>built
-define("dojox/editor/plugins/nls/ru/TextColor",{setButtonText:"\u0417\u0430\u0434\u0430\u0442\u044c",cancelButtonText:"\u041e\u0442\u043c\u0435\u043d\u0430"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/TextColor.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/latinEntities.js] */
-//>>built
-define("dojox/editor/plugins/nls/ru/latinEntities",{iexcl:"\u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432\u043e\u0441\u043a\u043b\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u043d\u0430\u043a",cent:"\u0441\u0438\u043c\u0432\u043e\u043b \u0446\u0435\u043d\u0442\u0430",pound:"\u0441\u0438\u043c\u0432\u043e\u043b \u0444\u0443\u043d\u0442\u0430 \u0441\u0442\u0435\u0440\u043b\u0438\u043d\u0433\u043e\u0432",curren:"\u0441\u0438\u043c\u0432\u043e\u043b \u0434\u0435\u043d\u0435\u0436\u043d\u043e\u0439 \u0435\u0434\u0438\u043d\u0438\u0446\u044b",
-yen:"\u0441\u0438\u043c\u0432\u043e\u043b \u0438\u0435\u043d\u044b\n\u0441\u0438\u043c\u0432\u043e\u043b \u044e\u0430\u043d\u044f",brvbar:"\u043f\u0440\u0435\u0440\u044b\u0432\u0438\u0441\u0442\u0430\u044f \u0447\u0435\u0440\u0442\u0430\n\u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u0435\u0440\u044b\u0432\u0438\u0441\u0442\u0430\u044f \u0447\u0435\u0440\u0442\u0430",sect:"\u0441\u0438\u043c\u0432\u043e\u043b \u0440\u0430\u0437\u0434\u0435\u043b\u0430",uml:"\u0442\u0440\u0435\u043c\u0430\n\u0442\u0440\u0435\u043c\u0430 \u0441 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u043e\u043c",
-copy:"\u0441\u0438\u043c\u0432\u043e\u043b \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0445 \u043f\u0440\u0430\u0432",ordf:"\u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0436\u0435\u043d\u0441\u043a\u043e\u0433\u043e \u0440\u043e\u0434\u0430",laquo:"\u043b\u0435\u0432\u044b\u0435 \u0434\u0432\u043e\u0439\u043d\u044b\u0439 \u0443\u0433\u043b\u043e\u0432\u044b\u0435 \u043a\u0430\u0432\u044b\u0447\u043a\u0438\n\u043b\u0435\u0432\u044b\u0435 \u043a\u0430\u0432\u044b\u0447\u043a\u0438",
-not:"\u0437\u043d\u0430\u043a \u043e\u0442\u0440\u0438\u0446\u0430\u043d\u0438\u044f",shy:"\u043c\u044f\u0433\u043a\u0438\u0439 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\n\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u043d\u043e\u0441",reg:"\u0441\u0438\u043c\u0432\u043e\u043b \u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\n\u0441\u0438\u043c\u0432\u043e\u043b \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u043e\u0432\u0430\u0440\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u043a\u0430",
-macr:"\u0437\u043d\u0430\u043a \u0434\u043e\u043b\u0433\u043e\u0442\u044b\n\u0437\u043d\u0430\u043a \u0434\u043e\u043b\u0433\u043e\u0442\u044b \u0441 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u043e\u043c\n\u0432\u0435\u0440\u0445\u043d\u044f\u044f \u0447\u0435\u0440\u0442\u0430\n\u043d\u0430\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435 APL",deg:"\u0441\u0438\u043c\u0432\u043e\u043b \u0433\u0440\u0430\u0434\u0443\u0441\u043e\u0432",plusmn:"\u0441\u0438\u043c\u0432\u043e\u043b \u043f\u043b\u044e\u0441-\u043c\u0438\u043d\u0443\u0441\n\u0441\u0438\u043c\u0432\u043e\u043b \u043f\u043b\u044e\u0441\u0430 \u0438\u043b\u0438 \u043c\u0438\u043d\u0443\u0441\u0430",
-sup2:"\u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u0434\u0432\u0430\n\u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u0441 \u0446\u0438\u0444\u0440\u043e\u0439 \u0434\u0432\u0430\n\u0432\u043e\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043a\u0432\u0430\u0434\u0440\u0430\u0442",sup3:"\u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u0442\u0440\u0438\n\u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u0441 \u0446\u0438\u0444\u0440\u043e\u0439 \u0442\u0440\u0438\n\u0432\u043e\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043a\u0443\u0431",
-acute:"\u0437\u043d\u0430\u043a \u0430\u043a\u0443\u0442\n\u0430\u043a\u0443\u0442 \u0441 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u043e\u043c",micro:"\u0437\u043d\u0430\u043a \u043c\u0438\u043a\u0440\u043e",para:"\u0441\u0438\u043c\u0432\u043e\u043b \u0430\u0431\u0437\u0430\u0446\u0430\n\u0441\u0438\u043c\u0432\u043e\u043b \u043f\u0430\u0440\u0430\u0433\u0440\u0430\u0444\u0430",middot:"\u0441\u0440\u0435\u0434\u043d\u044f\u044f \u0442\u043e\u0447\u043a\u0430\n\u0437\u0430\u043f\u044f\u0442\u0430\u044f \u0432 \u0433\u0440\u0443\u0437\u0438\u043d\u0441\u043a\u043e\u043c\n\u0441\u0440\u0435\u0434\u043d\u044f\u044f \u0442\u043e\u0447\u043a\u0430 \u0432 \u0433\u0440\u0435\u0447\u0435\u0441\u043a\u043e\u043c",
-cedil:"\u0441\u0435\u0434\u0438\u043b\u044c\n\u0441\u0435\u0434\u0438\u043b\u044c \u0441 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u043e\u043c",sup1:"\u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u043e\u0434\u0438\u043d\n\u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u0441 \u0446\u0438\u0444\u0440\u043e\u0439 \u043e\u0434\u0438\u043d",ordm:"\u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u043c\u0443\u0436\u0441\u043a\u043e\u0433\u043e \u0440\u043e\u0434\u0430",
-raquo:"\u043f\u0440\u0430\u0432\u0430\u044f \u0434\u0432\u043e\u0439\u043d\u0430\u044f \u0443\u0433\u043b\u043e\u0432\u0430\u044f \u043a\u0430\u0432\u044b\u0447\u043a\u0430\n\u043f\u0440\u0430\u0432\u0430\u044f \u043a\u0430\u0432\u044b\u0447\u043a\u0430",frac14:"\u0434\u0440\u043e\u0431\u044c \u043e\u0434\u043d\u0430 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u0430\u044f\n\u043e\u0434\u043d\u0430 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u044c",frac12:"\u0434\u0440\u043e\u0431\u044c \u043e\u0434\u043d\u0430 \u0432\u0442\u043e\u0440\u0430\u044f\n\u043e\u0434\u043d\u0430 \u0432\u0442\u043e\u0440\u0430\u044f",
-frac34:"\u0434\u0440\u043e\u0431\u044c \u0442\u0440\u0438 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u0438\n\u0442\u0440\u0438 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u0438",iquest:"\u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0437\u043d\u0430\u043a \u0432\u043e\u043f\u0440\u043e\u0441\u0430\n\u043f\u0435\u0440\u0435\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0439 \u0437\u043d\u0430\u043a \u0432\u043e\u043f\u0440\u043e\u0441\u0430",Agrave:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 A \u0441 \u0433\u0440\u0430\u0432\u0438\u0441\u043e\u043c",
-Aacute:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 A \u0441 \u0430\u043a\u0443\u0442\u043e\u043c",Acirc:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 A \u0441 \u0446\u0438\u0440\u043a\u0443\u043c\u0444\u043b\u0435\u043a\u0441\u043e\u043c",Atilde:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 A \u0441 \u0442\u0438\u043b\u044c\u0434\u043e\u0439",
-Auml:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 A \u0441 \u0442\u0440\u0435\u043c\u043e\u0439",Aring:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 A \u0441 \u043a\u0440\u0443\u0436\u043a\u043e\u043c \u0441\u0432\u0435\u0440\u0445\u0443\n\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 A \u0441 \u043a\u0440\u0443\u0436\u043a\u043e\u043c",
-AElig:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 AE\n\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u043b\u0438\u0433\u0430\u0442\u0443\u0440\u0430 AE",Ccedil:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 C \u0441 \u0441\u0435\u0434\u0438\u043b\u044c\u044e",
-Egrave:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 E \u0441 \u0433\u0440\u0430\u0432\u0438\u0441\u043e\u043c",Eacute:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 E \u0441 \u0430\u043a\u0443\u0442\u043e\u043c",Ecirc:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 E \u0441 \u0446\u0438\u0440\u043a\u0443\u043c\u0444\u043b\u0435\u043a\u0441\u043e\u043c",
-Euml:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 E \u0441 \u0442\u0440\u0435\u043c\u043e\u0439",Igrave:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 I \u0441 \u0433\u0440\u0430\u0432\u0438\u0441\u043e\u043c",Iacute:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 I \u0441 \u0430\u043a\u0443\u0442\u043e\u043c",
-Icirc:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 I \u0441 \u0446\u0438\u0440\u043a\u0443\u043c\u0444\u043b\u0435\u043a\u0441\u043e\u043c",Iuml:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 I \u0441 \u0442\u0440\u0435\u043c\u043e\u0439",ETH:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 ETH",
-Ntilde:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 N \u0441 \u0442\u0438\u043b\u044c\u0434\u043e\u0439",Ograve:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 O \u0441 \u0433\u0440\u0430\u0432\u0438\u0441\u043e\u043c",Oacute:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 O \u0441 \u0430\u043a\u0443\u0442\u043e\u043c",
-Ocirc:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 O \u0441 \u0446\u0438\u0440\u043a\u0443\u043c\u0444\u043b\u0435\u043a\u0441\u043e\u043c",Otilde:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 O \u0441 \u0442\u0438\u043b\u044c\u0434\u043e\u0439",Ouml:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 O \u0441 \u0442\u0440\u0435\u043c\u043e\u0439",
-times:"\u0437\u043d\u0430\u043a \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f",Oslash:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 O \u043f\u0435\u0440\u0435\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u0430\u044f\n\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 O \u0441 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0447\u0435\u0440\u0442\u043e\u0439",
-Ugrave:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 U \u0441 \u0433\u0440\u0430\u0432\u0438\u0441\u043e\u043c",Uacute:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 U \u0441 \u0430\u043a\u0443\u0442\u043e\u043c",Ucirc:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 U \u0441 \u0446\u0438\u0440\u043a\u0443\u043c\u0444\u043b\u0435\u043a\u0441\u043e\u043c",
-Uuml:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 U \u0441 \u0442\u0440\u0435\u043c\u043e\u0439",Yacute:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 Y \u0441 \u0430\u043a\u0443\u0442\u043e\u043c",THORN:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 THORN",
-szlig:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0437\u0430\u043e\u0441\u0442\u0440\u0435\u043d\u043d\u0430\u044f s\n\u044d\u0441\u0446\u044d\u0442",agrave:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 a \u0441 \u0433\u0440\u0430\u0432\u0438\u0441\u043e\u043c\n\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f a \u0441 \u0433\u0440\u0430\u0432\u0438\u0441\u043e\u043c",
-aacute:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 a \u0441 \u0430\u043a\u0443\u0442\u043e\u043c",acirc:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 a \u0441 \u0446\u0438\u0440\u043a\u0443\u043c\u0444\u043b\u0435\u043a\u0441\u043e\u043c",atilde:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 a \u0441 \u0442\u0438\u043b\u044c\u0434\u043e\u0439",
-auml:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 a \u0441 \u0442\u0440\u0435\u043c\u043e\u0439",aring:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 a \u0441 \u043a\u0440\u0443\u0436\u043a\u043e\u043c \u0441\u0432\u0435\u0440\u0445\u0443\n\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f a \u0441 \u043a\u0440\u0443\u0436\u043a\u043e\u043c",
-aelig:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 ae\n\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u043b\u0438\u0433\u0430\u0442\u0443\u0440\u0430 ae",ccedil:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 c \u0441 \u0441\u0435\u0434\u0438\u043b\u044c\u044e",egrave:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 e \u0441 \u0433\u0440\u0430\u0432\u0438\u0441\u043e\u043c",
-eacute:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 e \u0441 \u0430\u043a\u0443\u0442\u043e\u043c",ecirc:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 e \u0441 \u0446\u0438\u0440\u043a\u0443\u043c\u0444\u043b\u0435\u043a\u0441\u043e\u043c",euml:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 e \u0441 \u0442\u0440\u0435\u043c\u043e\u0439",
-igrave:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 i \u0441 \u0433\u0440\u0430\u0432\u0438\u0441\u043e\u043c",iacute:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 i \u0441 \u0430\u043a\u0443\u0442\u043e\u043c",icirc:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 i \u0441 \u0446\u0438\u0440\u043a\u0443\u043c\u0444\u043b\u0435\u043a\u0441\u043e\u043c",
-iuml:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 i \u0441 \u0442\u0440\u0435\u043c\u043e\u0439",eth:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 eth",ntilde:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 n \u0441 \u0442\u0438\u043b\u044c\u0434\u043e\u0439",
-ograve:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 o \u0441 \u0433\u0440\u0430\u0432\u0438\u0441\u043e\u043c",oacute:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 o \u0441 \u0430\u043a\u0443\u0442\u043e\u043c",ocirc:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 o \u0441 \u0446\u0438\u0440\u043a\u0443\u043c\u0444\u043b\u0435\u043a\u0441\u043e\u043c",
-otilde:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 o \u0441 \u0442\u0438\u043b\u044c\u0434\u043e\u0439",ouml:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 o \u0441 \u0442\u0440\u0435\u043c\u043e\u0439",divide:"\u0437\u043d\u0430\u043a \u0434\u0435\u043b\u0435\u043d\u0438\u044f",oslash:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 o \u043f\u0435\u0440\u0435\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u0430\u044f\n\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 o \u0441 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0447\u0435\u0440\u0442\u043e\u0439",
-ugrave:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 u \u0441 \u0433\u0440\u0430\u0432\u0438\u0441\u043e\u043c",uacute:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 u \u0441 \u0430\u043a\u0443\u0442\u043e\u043c",ucirc:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 u \u0441 \u0446\u0438\u0440\u043a\u0443\u043c\u0444\u043b\u0435\u043a\u0441\u043e\u043c",
-uuml:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 u \u0441 \u0442\u0440\u0435\u043c\u043e\u0439",yacute:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 y \u0441 \u0430\u043a\u0443\u0442\u043e\u043c",thorn:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 thorn",
-yuml:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 y \u0441 \u0442\u0440\u0435\u043c\u043e\u0439",fnof:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 f \u0441 \u0445\u0432\u043e\u0441\u0442\u0438\u043a\u043e\u043c\n\u0444\u0443\u043d\u043a\u0446\u0438\u044f\n\u0444\u043b\u043e\u0440\u0438\u043d",Alpha:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0430\u043b\u044c\u0444\u0430",
-Beta:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0431\u0435\u0442\u0430",Gamma:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0433\u0430\u043c\u043c\u0430",Delta:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0434\u0435\u043b\u044c\u0442\u0430",
-Epsilon:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u044d\u043f\u0441\u0438\u043b\u043e\u043d",Zeta:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0434\u0437\u0435\u0442\u0430",Eta:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u044d\u0442\u0430",
-Theta:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0442\u0435\u0442\u0430",Iota:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0439\u043e\u0442\u0430",Kappa:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u043a\u0430\u043f\u043f\u0430",
-Lambda:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u043b\u044f\u043c\u0431\u0434\u0430",Mu:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u043c\u044e",Nu:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u043d\u044e",
-Xi:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u043a\u0441\u0438",Omicron:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u043e\u043c\u0438\u043a\u0440\u043e\u043d",Pi:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u043f\u0438",
-Rho:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0440\u043e",Sigma:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0441\u0438\u0433\u043c\u0430",Tau:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0442\u0430\u0443",
-Upsilon:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0438\u043f\u0441\u0438\u043b\u043e\u043d",Phi:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0444\u0438",Chi:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0445\u0438",
-Psi:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u043f\u0441\u0438",Omega:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u043e\u043c\u0435\u0433\u0430",alpha:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0430\u043b\u044c\u0444\u0430",
-beta:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0431\u0435\u0442\u0430",gamma:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0433\u0430\u043c\u043c\u0430",delta:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0434\u0435\u043b\u044c\u0442\u0430",
-epsilon:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u044d\u043f\u0441\u0438\u043b\u043e\u043d",zeta:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0434\u0437\u0435\u0442\u0430",eta:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u044d\u0442\u0430",
-theta:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0442\u0435\u0442\u0430",iota:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0439\u043e\u0442\u0430",kappa:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u043a\u0430\u043f\u043f\u0430",
-lambda:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u043b\u044f\u043c\u0431\u0434\u0430",mu:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u043c\u044e",nu:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u043d\u044e",xi:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0445\u0438",
-omicron:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u043e\u043c\u0438\u043a\u0440\u043e\u043d",pi:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u043f\u0438",rho:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0440\u043e",sigmaf:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0441\u0438\u0433\u043c\u0430",
-sigma:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0441\u0438\u0433\u043c\u0430",tau:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0442\u0430\u0443",upsilon:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0438\u043f\u0441\u0438\u043b\u043e\u043d",
-phi:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0444\u0438",chi:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u0445\u0438",psi:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u043f\u0441\u0438",omega:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u043e\u043c\u0435\u0433\u0430",
-thetasym:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u0430\u044f \u0442\u0435\u0442\u0430",upsih:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043f\u0441\u0438\u043b\u043e\u043d \u0441 \u0445\u0432\u043e\u0441\u0442\u0438\u043a\u043e\u043c",piv:"\u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u0430\u044f \u043f\u0438",bull:"\u043c\u0430\u0440\u043a\u0435\u0440 \u0441\u043f\u0438\u0441\u043a\u0430\n\u0447\u0435\u0440\u043d\u044b\u0439 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u043a\u0440\u0443\u0436\u043e\u043a",
-hellip:"\u043c\u043d\u043e\u0433\u043e\u0442\u043e\u0447\u0438\u0435\n\u0442\u0440\u0438 \u0442\u043e\u0447\u043a\u0438",prime:"\u0448\u0442\u0440\u0438\u0445\n\u043c\u0438\u043d\u0443\u0442\u044b\n\u0444\u0443\u0442\u044b",Prime:"\u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u0448\u0442\u0440\u0438\u0445\n\u0441\u0435\u043a\u0443\u043d\u0434\u044b\n\u0434\u044e\u0439\u043c\u044b",oline:"\u0432\u0435\u0440\u0445\u043d\u044f\u044f \u0447\u0435\u0440\u0442\u0430\n\u043d\u0430\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435 \u0441 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u043e\u043c",
-frasl:"\u043a\u043e\u0441\u0430\u044f \u0447\u0435\u0440\u0442\u0430",weierp:"\u0440\u0443\u043a\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f P\n\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\n\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0412\u0435\u0439\u0435\u0440\u0448\u0442\u0440\u0430\u0441\u0441\u0430",image:"\u0447\u0435\u0440\u043d\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f I\n\u043c\u043d\u0438\u043c\u0430\u044f \u0447\u0430\u0441\u0442\u044c",
-real:"\u0447\u0435\u0440\u043d\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f R\n\u0432\u0435\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c",trade:"\u0441\u0438\u043c\u0432\u043e\u043b \u0442\u043e\u0432\u0430\u0440\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u043a\u0430",alefsym:"\u0431\u0443\u043a\u0432\u0430 \u0410\u043b\u0435\u0444\n\u043a\u0430\u0440\u0434\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e",
-larr:"\u0441\u0442\u0440\u0435\u043b\u043a\u0430 \u0432\u043b\u0435\u0432\u043e",uarr:"\u0441\u0442\u0440\u0435\u043b\u043a\u0430 \u0432\u0432\u0435\u0440\u0445",rarr:"\u0441\u0442\u0440\u0435\u043b\u043a\u0430 \u0432\u043f\u0440\u0430\u0432\u043e",darr:"\u0441\u0442\u0440\u0435\u043b\u043a\u0430 \u0432\u043d\u0438\u0437",harr:"\u0441\u0442\u0440\u0435\u043b\u043a\u0430 \u0432\u043b\u0435\u0432\u043e-\u0432\u043f\u0440\u0430\u0432\u043e",crarr:"\u0441\u0442\u0440\u0435\u043b\u043a\u0430 \u0432\u043d\u0438\u0437 \u0441 \u0443\u0433\u043b\u043e\u043c \u0432\u043f\u0440\u0430\u0432\u043e\n\u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u043a\u0430\u0440\u0435\u0442\u043a\u0438",
-lArr:"\u0434\u0432\u043e\u0439\u043d\u0430\u044f \u0441\u0442\u0440\u0435\u043b\u043a\u0430 \u0432\u043b\u0435\u0432\u043e",uArr:"\u0434\u0432\u043e\u0439\u043d\u0430\u044f \u0441\u0442\u0440\u0435\u043b\u043a\u0430 \u0432\u0432\u0435\u0440\u0445",rArr:"\u0434\u0432\u043e\u0439\u043d\u0430\u044f \u0441\u0442\u0440\u0435\u043b\u043a\u0430 \u0432\u043f\u0440\u0430\u0432\u043e",dArr:"\u0434\u0432\u043e\u0439\u043d\u0430\u044f \u0441\u0442\u0440\u0435\u043b\u043a\u0430 \u0432\u043d\u0438\u0437",hArr:"\u0434\u0432\u043e\u0439\u043d\u0430\u044f \u0441\u0442\u0440\u0435\u043b\u043a\u0430 \u0432\u043b\u0435\u0432\u043e-\u0432\u043f\u0440\u0430\u0432\u043e",
-forall:"\u0434\u043b\u044f \u0432\u0441\u0435\u0445",part:"\u0447\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u0439 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b",exist:"\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442",empty:"\u043f\u0443\u0441\u0442\u043e\u0439 \u043d\u0430\u0431\u043e\u0440\n\u043f\u0443\u0441\u0442\u043e\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\n\u0434\u0438\u0430\u043c\u0435\u0442\u0440",nabla:"\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043d\u0430\u0431\u043b\u0430\n\u0440\u0430\u0437\u043d\u043e\u0441\u0442\u043d\u043e\u0435 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u0437\u0430\u0434",
-isin:"\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c",notin:"\u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c",ni:"\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430",prod:"n-\u0430\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435\n\u0441\u0438\u043c\u0432\u043e\u043b \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f",
-sum:"n-\u0430\u0440\u043d\u043e\u0435 \u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435",minus:"\u0437\u043d\u0430\u043a \u043c\u0438\u043d\u0443\u0441\u0430",lowast:"\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0437\u0432\u0435\u0437\u0434\u043e\u0447\u043a\u0430",radic:"\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0439 \u043a\u043e\u0440\u0435\u043d\u044c\n\u0437\u043d\u0430\u043a \u043a\u043e\u0440\u043d\u044f",prop:"\u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e",
-infin:"\u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u044c",ang:"\u0443\u0433\u043e\u043b",and:"\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0418\n\u043a\u043b\u0438\u043d \u0432\u0432\u0435\u0440\u0445",or:"\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0418\u041b\u0418\n\u043a\u043b\u0438\u043d \u0432\u043d\u0438\u0437",cap:"\u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435\n\u0448\u0430\u043f\u043e\u0447\u043a\u0430",
-cup:"\u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435\n\u0447\u0430\u0448\u0435\u0447\u043a\u0430","int":"\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b",there4:"\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e",sim:"\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0442\u0438\u043b\u044c\u0434\u0430\n\u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0441\n\u043f\u043e\u0434\u043e\u0431\u043d\u043e",cong:"\u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0432\u043d\u043e",
-asymp:"\u043f\u043e\u0447\u0442\u0438 \u0440\u0430\u0432\u043d\u043e\n\u0430\u0441\u0438\u043c\u043f\u0442\u043e\u0442\u0438\u0447\u043d\u043e",ne:"\u043d\u0435 \u0440\u0430\u0432\u043d\u043e",equiv:"\u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e",le:"\u043c\u0435\u043d\u044c\u0448\u0435 \u0438\u043b\u0438 \u0440\u0430\u0432\u043d\u043e",ge:"\u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043b\u0438 \u0440\u0430\u0432\u043d\u043e",sub:"\u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e",
-sup:"\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f",nsub:"\u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c",sube:"\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0438\u043b\u0438 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u043e",supe:"\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0438\u043b\u0438 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u043e",
-oplus:"\u043f\u043b\u044e\u0441 \u0432 \u043a\u0440\u0443\u0433\u0435\n\u043f\u0440\u044f\u043c\u0430\u044f \u0441\u0443\u043c\u043c\u0430",otimes:"\u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u043a\u0440\u0443\u0433\u0435\n\u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435",perp:"\u043f\u0435\u0440\u0435\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0439 \u0433\u0432\u043e\u0437\u0434\u044c\n\u043e\u0440\u0442\u043e\u0433\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u043a\n\u043f\u0435\u0440\u043f\u0435\u043d\u0434\u0438\u043a\u0443\u043b\u044f\u0440\u043d\u043e",
-sdot:"\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0442\u043e\u0447\u043a\u0430",lceil:"\u043b\u0435\u0432\u0430\u044f \u0441\u043a\u043e\u0431\u043a\u0430 \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u044f \u0432\u0432\u0435\u0440\u0445\nAPL upstile",rceil:"\u043f\u0440\u0430\u0432\u0430\u044f \u0441\u043a\u043e\u0431\u043a\u0430 \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u044f \u0432\u0432\u0435\u0440\u0445",lfloor:"\u043b\u0435\u0432\u0430\u044f \u0441\u043a\u043e\u0431\u043a\u0430 \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u044f \u0432\u043d\u0438\u0437\nAPL downstile",
-rfloor:"\u043f\u0440\u0430\u0432\u0430\u044f \u0441\u043a\u043e\u0431\u043a\u0430 \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u044f \u0432\u043d\u0438\u0437",lang:"\u043b\u0435\u0432\u0430\u044f \u0443\u0433\u043b\u043e\u0432\u0430\u044f \u0441\u043a\u043e\u0431\u043a\u0430",rang:"\u043f\u0440\u0430\u0432\u0430\u044f \u0443\u0433\u043b\u043e\u0432\u0430\u044f \u0441\u043a\u043e\u0431\u043a\u0430",loz:"\u0440\u043e\u043c\u0431",spades:"\u043f\u0438\u043a\u0438",clubs:"\u043a\u0440\u0435\u0441\u0442\u0438\n\u0442\u0440\u0438\u043b\u0438\u0441\u0442\u043d\u0438\u043a",
-hearts:"\u0447\u0435\u0440\u0432\u044b\n\u0432\u0430\u043b\u0435\u043d\u0442\u0438\u043d\u043a\u0430",diams:"\u0431\u0443\u0431\u043d\u044b",OElig:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u043b\u0438\u0433\u0430\u0442\u0443\u0440\u0430 OE",oelig:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u043b\u0438\u0433\u0430\u0442\u0443\u0440\u0430 oe",Scaron:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 S \u0441 \u0433\u0430\u043b\u043e\u0447\u043a\u043e\u0439",
-scaron:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 s \u0441 \u0433\u0430\u043b\u043e\u0447\u043a\u043e\u0439",Yuml:"\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u0430 Y \u0441 \u0442\u0440\u0435\u043c\u043e\u0439",circ:"\u043d\u0430\u0434\u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0439 \u0437\u043d\u0430\u043a \u0446\u0438\u0440\u043a\u0443\u043c\u0444\u043b\u0435\u043a\u0441",
-tilde:"\u043c\u0430\u043b\u0430\u044f \u0442\u0438\u043b\u044c\u0434\u0430",ensp:"\u043f\u0440\u043e\u0431\u0435\u043b \u0434\u043b\u0438\u043d\u044b N",emsp:"\u043f\u0440\u043e\u0431\u0435\u043b \u0434\u043b\u0438\u043d\u044b M",thinsp:"\u0443\u0437\u043a\u0438\u0439 \u043f\u0440\u043e\u0431\u0435\u043b",zwnj:"\u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0448\u0438\u0440\u0438\u043d\u044b",zwj:"\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u0435\u043b\u044c \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0448\u0438\u0440\u0438\u043d\u044b",
-lrm:"\u0437\u043d\u0430\u043a \u0441\u043b\u0435\u0432\u0430-\u043d\u0430\u043f\u0440\u0430\u0432\u043e",rlm:"\u0437\u043d\u0430\u043a \u0441\u043f\u0440\u0430\u0432\u0430-\u043d\u0430\u043b\u0435\u0432\u043e",ndash:"\u0442\u0438\u0440\u0435 \u0434\u043b\u0438\u043d\u044b N",mdash:"\u0442\u0438\u0440\u0435 \u0434\u043b\u0438\u043d\u044b M",lsquo:"\u043b\u0435\u0432\u0430\u044f \u043e\u0434\u0438\u043d\u0430\u0440\u043d\u0430\u044f \u043a\u0430\u0432\u044b\u0447\u043a\u0430",rsquo:"\u043f\u0440\u0430\u0432\u0430\u044f \u043e\u0434\u0438\u043d\u0430\u0440\u043d\u0430\u044f \u043a\u0430\u0432\u044b\u0447\u043a\u0430",
-sbquo:"\u043e\u0434\u0438\u043d\u043e\u0447\u043d\u0430\u044f \u043d\u0438\u0436\u043d\u044f\u044f \u043a\u0430\u0432\u044b\u0447\u043a\u0430",ldquo:"\u043b\u0435\u0432\u0430\u044f \u0434\u0432\u043e\u0439\u043d\u0430\u044f \u043a\u0430\u0432\u044b\u0447\u043a\u0430",rdquo:"\u043f\u0440\u0430\u0432\u0430\u044f \u0434\u0432\u043e\u0439\u043d\u0430\u044f \u043a\u0430\u0432\u044b\u0447\u043a\u0430",bdquo:"\u0434\u0432\u043e\u0439\u043d\u0430\u044f \u043d\u0438\u0436\u043d\u044f\u044f \u043a\u0430\u0432\u044b\u0447\u043a\u0430",
-dagger:"\u043a\u0440\u0435\u0441\u0442",Dagger:"\u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u043a\u0440\u0435\u0441\u0442",permil:"\u0437\u043d\u0430\u043a \u043f\u0440\u043e\u043c\u0438\u043b\u043b\u0435",lsaquo:"\u043e\u0434\u0438\u043d\u0430\u0440\u043d\u0430\u044f \u043b\u0435\u0432\u0430\u044f \u0443\u0433\u043b\u043e\u0432\u0430\u044f \u043a\u0430\u0432\u044b\u0447\u043a\u0430",rsaquo:"\u043e\u0434\u0438\u043d\u0430\u0440\u043d\u0430\u044f \u043f\u0440\u0430\u0432\u0430\u044f \u0443\u0433\u043b\u043e\u0432\u0430\u044f \u043a\u0430\u0432\u044b\u0447\u043a\u0430",
-euro:"\u0441\u0438\u043c\u0432\u043e\u043b \u0435\u0432\u0440\u043e"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/editor/plugins/nls/ru/latinEntities.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/form/nls/CheckedMultiSelect.js] */
-//>>built
-define("dojox/form/nls/CheckedMultiSelect",{root:{invalidMessage:"At least one item must be selected.",multiSelectLabelText:"{num} item(s) selected"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/form/nls/CheckedMultiSelect.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/form/nls/PasswordValidator.js] */
-//>>built
-define("dojox/form/nls/PasswordValidator",{root:{nomatchMessage:"Passwords do not match.",badPasswordMessage:"Invalid Password."},ar:!0,az:!0,ca:!0,cs:!0,da:!0,de:!0,el:!0,es:!0,fi:!0,fr:!0,he:!0,hu:!0,hr:!0,it:!0,ja:!0,kk:!0,ko:!0,nb:!0,nl:!0,pl:!0,"pt-pt":!0,pt:!0,ro:!0,ru:!0,sk:!0,sl:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-tw":!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/form/nls/PasswordValidator.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/form/nls/Uploader.js] */
-//>>built
-define("dojox/form/nls/Uploader",{root:{label:"Select Files..."},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/form/nls/Uploader.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/form/nls/de/CheckedMultiSelect.js] */
-//>>built
-define("dojox/form/nls/de/CheckedMultiSelect",{invalidMessage:"Es muss mindestens ein Eintrag ausgew\u00e4hlt werden.",multiSelectLabelText:"{num} Eintrag/Eintr\u00e4ge ausgew\u00e4hlt"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/form/nls/de/CheckedMultiSelect.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/form/nls/de/PasswordValidator.js] */
-//>>built
-define("dojox/form/nls/de/PasswordValidator",{nomatchMessage:"Die Kennw\u00f6rter stimmen nicht \u00fcberein.",badPasswordMessage:"Ung\u00fcltiges Kennwort."});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/form/nls/de/PasswordValidator.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/form/nls/de/Uploader.js] */
-//>>built
-define("dojox/form/nls/de/Uploader",{label:"Dateien ausw\u00e4hlen..."});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/form/nls/de/Uploader.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/form/nls/ru/CheckedMultiSelect.js] */
-//>>built
-define("dojox/form/nls/ru/CheckedMultiSelect",{invalidMessage:"\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442.",multiSelectLabelText:"\u0412\u044b\u0431\u0440\u0430\u043d\u043e: {num}"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/form/nls/ru/CheckedMultiSelect.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/form/nls/ru/PasswordValidator.js] */
-//>>built
-define("dojox/form/nls/ru/PasswordValidator",{nomatchMessage:"\u041f\u0430\u0440\u043e\u043b\u0438 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442.",badPasswordMessage:"\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c."});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/form/nls/ru/PasswordValidator.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/form/nls/ru/Uploader.js] */
-//>>built
-define("dojox/form/nls/ru/Uploader",{label:"\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0444\u0430\u0439\u043b\u044b..."});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/form/nls/ru/Uploader.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/grid/enhanced/nls/EnhancedGrid.js] */
-//>>built
+ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,ar:!0});//>>built
+define("dojox/editor/plugins/nls/nl/AutoSave",{saveLabel:"Opslaan",saveSettingLabelOn:"Interval voor automatisch opslaan instellen...",saveSettingLabelOff:"Automatisch opslaan uitschakelen",saveSettingdialogTitle:"Automatisch opslaan",saveSettingdialogDescription:"Geef het interval voor Automatisch opslaan op.",saveSettingdialogParamName:"Interval voor Automatisch opslaan",saveSettingdialogParamLabel:"min",saveSettingdialogButtonOk:"Interval instellen",saveSettingdialogButtonCancel:"Annuleren",saveMessageSuccess:"Opgeslagen om ${0}",
+saveMessageFail:"Opslaan mislukt om ${0}"});//>>built
+define("dojox/editor/plugins/nls/nl/Blockquote",{blockquote:"Blockquote"});//>>built
+define("dojox/editor/plugins/nls/nl/Breadcrumb",{nodeActions:"${nodeName} Acties",selectContents:"Inhoud selecteren",selectElement:"Element selecteren",deleteElement:"Element wissen",deleteContents:"Inhoud wissen",moveStart:"Cursor verplaatsen naar start",moveEnd:"Cursor verplaatsen naar eind"});//>>built
+define("dojox/editor/plugins/nls/nl/CollapsibleToolbar",{collapse:"Editor-werkbalk samenvouwen",expand:"Editor-werkbalk uitvouwen"});//>>built
+define("dojox/editor/plugins/nls/nl/FindReplace",{findLabel:"Zoeken:",findTooltip:"Geef de zoektekst op",replaceLabel:"Vervangen door:",replaceTooltip:"Geef de vervangende tekst op",findReplace:"Zoeken en vervangen",matchCase:"Hoofdlettergevoelig",matchCaseTooltip:"Hoofdlettergevoelig",backwards:"Terug",backwardsTooltip:"Terugwaarts naar tekst zoeken",replaceAllButton:"Alle vervangen",replaceAllButtonTooltip:"Gehele tekst vervangen",findButton:"Zoeken:",findButtonTooltip:"Tekst zoeken",replaceButton:"Vervangen",
+replaceButtonTooltip:"Tekst vervangen",replaceDialogText:"${0} vervangingen.",eofDialogText:"Laatste positie ${0}",eofDialogTextFind:"gevonden",eofDialogTextReplace:"vervangen"});//>>built
+define("dojox/editor/plugins/nls/nl/InsertAnchor",{insertAnchor:"Anker invoegen",title:"Ankereigenschappen",anchor:"Naam:",text:"Beschrijving:",set:"Instellen",cancel:"Annuleren"});//>>built
+define("dojox/editor/plugins/nls/nl/InsertEntity",{insertEntity:"Symbool invoegen"});//>>built
+define("dojox/editor/plugins/nls/nl/LocalImage",{insertImageTitle:"Afbeelding invoegen",url:"Afbeelding",browse:"Bladeren...",text:"Beschrijving",set:"Invoegen",invalidMessage:"Ongeldig bestandstype voor afbeelding",prePopuTextUrl:"Geef een afbeeldings-URL op",prePopuTextBrowse:" of navigeer naar een lokaal bestand."});//>>built
+define("dojox/editor/plugins/nls/nl/PageBreak",{pageBreak:"Paginaeinde"});//>>built
+define("dojox/editor/plugins/nls/nl/PasteFromWord",{pasteFromWord:"Plakken vanuit Word",instructions:"Plak de content vanuit Word in het tekstvak hieronder. Klik als u klaar bent op de knop Plakken. Kies Annuleren als u de invoeging van tekst wilt afbreken."});//>>built
+define("dojox/editor/plugins/nls/nl/Preview",{preview:"Preview"});//>>built
+define("dojox/editor/plugins/nls/nl/SafePaste",{instructions:"Rechtstreeks plakken is niet mogelijk. U kunt in dit dialoogvenster content met de standaardknoppen of -toetsen van de browser plakken. Als u tevreden bent met de content die u wilt plakken, klikt u op de knop Plakken. Kies Annuleren als u de invoeging van content wilt afbreken."});//>>built
+define("dojox/editor/plugins/nls/nl/Save",{save:"Opslaan"});//>>built
+define("dojox/editor/plugins/nls/nl/ShowBlockNodes",{showBlockNodes:"HTML-blokelementen afbeelden"});//>>built
+define("dojox/editor/plugins/nls/nl/Smiley",{smiley:"Emoticon invoegen",emoticonSmile:"glimlach",emoticonLaughing:"lach",emoticonWink:"knipoog",emoticonGrin:"grijns",emoticonCool:"cool",emoticonAngry:"kwaad",emoticonHalf:"half",emoticonEyebrow:"verbaasd",emoticonFrown:"frons",emoticonShy:"verlegen",emoticonGoofy:"goofy",emoticonOops:"oeps",emoticonTongue:"tong",emoticonIdea:"idee",emoticonYes:"ja",emoticonNo:"nee",emoticonAngel:"engel",emoticonCrying:"bedroefd",emoticonHappy:"blij"});//>>built
+define("dojox/editor/plugins/nls/nl/SpellCheck",{widgetLabel:"Groepsgewijze spellingcontrole",unfound:"Niet gevonden",skip:"Overslaan",skipAll:"Alle overslaan",toDic:"Toevoegen aan woordenboek",suggestions:"Suggesties",replace:"Vervangen",replaceWith:"Vervangen door",replaceAll:"Alle vervangen",cancel:"Annuleren",msg:"Geen spelfouten gevonden",iSkip:"Deze overslaan",iSkipAll:"Al deze overslaan",iMsg:"Geen spellingsuggesties"});//>>built
+define("dojox/editor/plugins/nls/nl/TableDialog",{insertTableTitle:"Tabel invoegen",modifyTableTitle:"Tabel wijzigen",rows:"Rijen",columns:"Kolommen",align:"Uitlijnen",cellPadding:"Celopvulling:",cellSpacing:"Celspati\u00ebring:",tableWidth:"Tabelbreedte:",backgroundColor:"Achtergrondkleur:",borderColor:"Randkleur",borderThickness:"Randdikte:",percent:"procent",pixels:"pixels","default":"standaard",left:"links",center:"gecentreerd",right:"rechts",buttonSet:"Instellen",buttonInsert:"Invoegen",buttonCancel:"Annuleren",
+selectTableLabel:"Tabel selecteren",insertTableRowBeforeLabel:"Rij boven toevoegen",insertTableRowAfterLabel:"Rij onder toevoegen",insertTableColumnBeforeLabel:"Kolom voor toevoegen",insertTableColumnAfterLabel:"Kolom achter toevoegen",deleteTableRowLabel:"Rij wissen",deleteTableColumnLabel:"Kolom wissen"});//>>built
+define("dojox/editor/plugins/nls/nl/TextColor",{setButtonText:"Instellen",cancelButtonText:"Annuleren"});//>>built
+define("dojox/editor/plugins/nls/nl/latinEntities",{iexcl:"omgekeerd uitroepteken",cent:"dollarcent",pound:"pond",curren:"algemeen muntsymbool",yen:"yen\nyuan",brvbar:"sluisteken\ngebroken streepje",sect:"paragraaf",uml:"umlaut/trema",copy:"copyright (auteursrecht)",ordf:"aanduiding vrouwelijk rangtelwoord (Spaans)",laquo:"linker guillemet\ndubbele punthaak openen",not:"niet-teken",shy:"zacht afbreekstreepje",reg:"gedeponeerd handelsmerk",macr:"macron\nbovenlijn",deg:"graad",plusmn:"plusminus\nplus-of-min",
+sup2:"superscript 2\nkwadraat",sup3:"superscript 3\ntot de derde",acute:"accent aigu",micro:"micro (mu)",para:"paragraaf (pilcrow)",middot:"vermenigvuldigingspunt\nmiddle dot",cedil:"cedille",sup1:"superscript 1",ordm:"aanduiding mannelijk rangtelwoord (Spaans)",raquo:"rechter guillemet\ndubbele punthaak sluiten",frac14:"1/4 (kwart)",frac12:"1/2 (half)",frac34:"3/4 (driekwart)",iquest:"omgekeerd vraagteken",Agrave:"hoofdletter A met accent grave",Aacute:"hoofdletter A met accent aigu",Acirc:"hoofdletter A met accent circonflexe",
+Atilde:"hoofdletter A met tilde",Auml:"hoofdletter A met trema",Aring:"hoofdletter A met corona",AElig:"hoofletter AE-ligatuur",Ccedil:"hoofdletter C met cedille",Egrave:"hoofdletter E met accent grave",Eacute:"hoofdletter E met accent aigu",Ecirc:"hoofdletter E met accent circonflexe",Euml:"hoofdletter E met trema",Igrave:"hoofdletter I met accent grave",Iacute:"hoofdletter I met accent aigu",Icirc:"hoofdletter I met accent circonflexe",Iuml:"hoofdletter I met trema",ETH:"hoofdletter ETH-ligatuur",
+Ntilde:"hoofdletter N met tilde",Ograve:"hoofdletter O met accent grave",Oacute:"hoofdletter O met accent aigu",Ocirc:"hoofdletter O met accent circonflexe",Otilde:"hoofdletter O met tilde",Ouml:"hoofdletter O met trema",times:"maal",Oslash:"hoofdletter O doorgestreept",Ugrave:"hoofdletter U met accent grave",Uacute:"hoofdletter U met accent aigu",Ucirc:"hoofdletter U met accent circonflexe",Uuml:"hoofdletter U met trema",Yacute:"hoofdletter Y met accent aigu",THORN:"hoofdletter THORN",szlig:"sz-ligatuur\nringel S",
+agrave:"kleine letter a met accent grave",aacute:"kleine letter a met accent aigu",acirc:"kleine letter a met accent circonflexe",atilde:"kleine letter a met tilde",auml:"kleine letter a met trema",aring:"kleine letter a met corona",aelig:"kleine letter ae-ligatuur",ccedil:"kleine letter c met cedille",egrave:"kleine letter e met accent grave",eacute:"kleine letter e met accent aigu",ecirc:"kleine letter e met accent circonflexe",euml:"kleine letter e met trema",igrave:"kleine letter i met accent grave",
+iacute:"kleine letter i met accent aigu",icirc:"kleine letter i met accent circonflexe",iuml:"kleine letter i met trema",eth:"kleine letter eth",ntilde:"kleine letter n met tilde",ograve:"kleine letter o met accent grave",oacute:"kleine letter o met accent aigu",ocirc:"kleine letter o met accent circonflexe",otilde:"kleine letter o met tilde",ouml:"kleine letter o met trema",divide:"deelteken",oslash:"kleine letter o doorgestreept",ugrave:"kleine letter u met accent grave",uacute:"kleine letter u met accent aigu",
+ucirc:"kleine letter u met accent circonflexe",uuml:"kleine letter u met trema",yacute:"kleine letter y met accent aigu",thorn:"kleine letter thorn",yuml:"kleine letter y met trema",fnof:"cursieve f\nfunctie\ngulden",Alpha:"Griekse hoofdletter alpha",Beta:"Griekse hoofdletter b\u00e8ta",Gamma:"Griekse hoofdletter gamma",Delta:"Griekse hoofdletter delta",Epsilon:"Griekse hoofdletter epsilon",Zeta:"Griekse hoofdletter z\u00e8ta",Eta:"Griekse hoofdletter \u00e8ta",Theta:"Griekse hoofdletter th\u00e8ta",
+Iota:"Griekse hoofdletter iota",Kappa:"Griekse hoofdletter kappa",Lambda:"Griekse hoofdletter lambda",Mu:"Griekse hoofdletter mu",Nu:"Griekse hoofdletter nu",Xi:"Griekse hoofdletter xi",Omicron:"Griekse hoofdletter omicron",Pi:"Griekse hoofdletter pi",Rho:"Griekse hoofdletter rho",Sigma:"Griekse hoofdletter sigma",Tau:"Griekse hoofdletter tau",Upsilon:"Griekse hoofdletter ypsilon",Phi:"Griekse hoofdletter phi",Chi:"Griekse hoofdletter chi",Psi:"Griekse hoofdletter psi",Omega:"Griekse hoofdletter omega",
+alpha:"Griekse kleine letter alpha",beta:"Griekse kleine letter b\u00e8ta",gamma:"Griekse kleine letter gamma",delta:"Griekse kleine letter delta",epsilon:"Griekse kleine letter epsilon",zeta:"Griekse kleine letter z\u00e8ta",eta:"Griekse kleine letter \u00e8ta",theta:"Griekse kleine letter th\u00e8ta",iota:"Griekse kleine letter iota",kappa:"Griekse kleine letter kappa",lambda:"Griekse kleine letter lambda",mu:"Griekse kleine letter mu",nu:"Griekse kleine letter nu",xi:"Griekse kleine letter xi",
+omicron:"Griekse kleine letter omicron",pi:"Griekse kleine letter pi",rho:"Griekse kleine letter rho",sigmaf:"Griekse kleine letter sigma (einde woord)",sigma:"Griekse kleine letter sigma",tau:"Griekse kleine letter tau",upsilon:"Griekse kleine letter ypsilon",phi:"Griekse kleine letter phi",chi:"Griekse kleine letter chi",psi:"Griekse kleine letter psi",omega:"Griekse kleine letter omega",thetasym:"Griekse kleine letter th\u00e8ta (2e vorm)",upsih:"Griekse letter ypsilon met haakje",piv:"Griekse letter pi (2e vorm)",
+bull:"opsommingsteken\naandachtspunt",hellip:"beletseltekenweglatingsteken",prime:"accent\nminuut\nvoet",Prime:"dubbel accent\nseconde\ninch",oline:"hoge lijn\nbovenstreepje",frasl:"deelteken/schuine streep",weierp:"Gotische P",image:"Gotische I\nimaginair deel",real:"Gotische R\nre\u00ebel deel",trade:"handelsmerk",alefsym:"alef",larr:"pijl naar links",uarr:"pijl omhoog",rarr:"pijl naar rechts",darr:"pijl omlaag",harr:"pijl links/rechts",crarr:"pijl omlaag en naar links\nterugloopteken",lArr:"dubbele pijl naar links",
+uArr:"dubbele pijl omhoog",rArr:"dubbele pijl naar rechts",dArr:"dubbele pijl omlaag",hArr:"dubbele pijl links/rechts",forall:"voor alle geldt",part:"parti\u00eble differentiaal",exist:"er bestaat",empty:"lege verzameling\nnulverzameling\ndiameter",nabla:"nabla\ngradi\u00ebnt",isin:"is element van",notin:"is geen element van",ni:"heeft als element",prod:"product\nherhaald vermenigvuldigen",sum:"som\nherhaald optellen",minus:"min",lowast:"asterisk operator",radic:"wortel\nvierkantswortel",prop:"evenredig met",
+infin:"oneindig",ang:"hoek",and:"logische en",or:"logische of",cap:"snijpunt",cup:"vereniging","int":"integraal",there4:"hieruit volgt",sim:"tilde operator\nvarieert met\nvergelijkbaar met",cong:"congruent aan",asymp:"ongeveer gelijk aan",ne:"niet gelijk aan",equiv:"identiek met",le:"kleiner dan of gelijk aan",ge:"groter dan of gelijk aan",sub:"is deelverzameling van",sup:"bevat deelverzameling",nsub:"is geen deelverzameling van",sube:"is deelverzameling van of is gelijk aan",supe:"bevat deelverzameling of is gelijk aan",
+oplus:"plus in cirkel\ndirecte som",otimes:"maal in cirkel\nvectorproduct",perp:"loodrecht\northogonaal met",sdot:"punt operator",lceil:"linker afrondingshaakje (naar boven)",rceil:"rechter afrondingshaakje (naar boven)",lfloor:"linker afrondingshaakje (naar beneden)",rfloor:"linker afrondingshaakje (naar beneden)",lang:"punthaak openen",rang:"punthaak sluiten",loz:"ruit",spades:"schoppen",clubs:"klaveren",hearts:"harten",diams:"ruiten",OElig:"hoofdletter OE-ligatuur",oelig:"kleine letter oe-ligatuur",
+Scaron:"hoofdletter S met caron",scaron:"kleine letter s met caron",Yuml:"hoofdletter Y met trema",circ:"accent circonflexe",tilde:"kleine tilde",ensp:"smalle spatie",emsp:"brede spatie",thinsp:"extra smalle spatie",zwnj:"verdelingsteken met breedte nul",zwj:"verbindingsteken met breedte nul",lrm:"van links naar rechts-markering",rlm:"van rechts naar links-markering",ndash:"divisie (kort steepje)",mdash:"divisie (lang steepje)",lsquo:"linker enkel aanhalingsteken",rsquo:"rechter enkel aanhalingsteken",
+sbquo:"apostrof (vorm = 9)",ldquo:"linker dubbele aanhalingsteken",rdquo:"rechter dubbele aanhalingsteken",bdquo:"dubbele apostrof (vorm = 9)",dagger:"obelisk",Dagger:"dubbele obelisk",permil:"promille",lsaquo:"enkele linkswijzend aanhalingsteken",rsaquo:"enkele rechtswijzend aanhalingsteken",euro:"euro"});//>>built
+define("dojox/form/nls/CheckedMultiSelect",{root:{invalidMessage:"At least one item must be selected.",multiSelectLabelText:"{num} item(s) selected"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0});//>>built
+define("dojox/form/nls/PasswordValidator",{root:{nomatchMessage:"Passwords do not match.",badPasswordMessage:"Invalid Password."},ar:!0,az:!0,ca:!0,cs:!0,da:!0,de:!0,el:!0,es:!0,fi:!0,fr:!0,he:!0,hu:!0,hr:!0,it:!0,ja:!0,kk:!0,ko:!0,nb:!0,nl:!0,pl:!0,"pt-pt":!0,pt:!0,ro:!0,ru:!0,sk:!0,sl:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-tw":!0});//>>built
+define("dojox/form/nls/Uploader",{root:{label:"Select Files..."},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0});//>>built
+define("dojox/form/nls/de/CheckedMultiSelect",{invalidMessage:"Es muss mindestens ein Eintrag ausgew\u00e4hlt werden.",multiSelectLabelText:"{num} Eintrag/Eintr\u00e4ge ausgew\u00e4hlt"});//>>built
+define("dojox/form/nls/de/PasswordValidator",{nomatchMessage:"Die Kennw\u00f6rter stimmen nicht \u00fcberein.",badPasswordMessage:"Ung\u00fcltiges Kennwort."});//>>built
+define("dojox/form/nls/de/Uploader",{label:"Dateien ausw\u00e4hlen..."});//>>built
+define("dojox/form/nls/fr/CheckedMultiSelect",{invalidMessage:"Au moins un des \u00e9l\u00e9ments doit \u00eatre s\u00e9lectionn\u00e9.",multiSelectLabelText:"{num} \u00e9l\u00e9ment(s) s\u00e9lectionn\u00e9(s)"});//>>built
+define("dojox/form/nls/fr/PasswordValidator",{nomatchMessage:"Les mots de passe ne correspondent pas.",badPasswordMessage:"Mot de passe incorrect."});//>>built
+define("dojox/form/nls/fr/Uploader",{label:"S\u00e9lectionner les fichiers..."});//>>built
+define("dojox/form/nls/it/CheckedMultiSelect",{invalidMessage:"\u00c8 necessario selezionare almeno un elemento.",multiSelectLabelText:"{num} elementi selezionati"});//>>built
+define("dojox/form/nls/it/PasswordValidator",{nomatchMessage:"Le password non corrispondono.",badPasswordMessage:"Password non valida."});//>>built
+define("dojox/form/nls/it/Uploader",{label:"Seleziona file..."});//>>built
+define("dojox/form/nls/nl/CheckedMultiSelect",{invalidMessage:"Er moet ten minste \u00e9\u00e9n item geselecteerd worden.",multiSelectLabelText:"{num} item(s) geselecteerd"});//>>built
+define("dojox/form/nls/nl/PasswordValidator",{nomatchMessage:"Wachtwoorden komen niet overeen.",badPasswordMessage:"Ongeldig wachtwoord."});//>>built
+define("dojox/form/nls/nl/Uploader",{label:"Bestanden selecteren..."});//>>built
define("dojox/grid/enhanced/nls/EnhancedGrid",{root:{singleSort:"Single Sort",nestedSort:"Nested Sort",ascending:"Click to sort Ascending",descending:"Click to sort Descending",sortingState:"${0} - ${1}",unsorted:"Do not sort this column",indirectSelectionRadio:"Row ${0}, single selection, radio box",indirectSelectionCheckBox:"Row ${0}, multiple selection, check box",selectAll:"Select all"},ar:!0,ca:!0,cs:!0,da:!0,de:!0,el:!0,es:!0,fi:!0,fr:!0,he:!0,hr:!0,hu:!0,hr:!0,it:!0,ja:!0,kk:!0,ko:!0,nb:!0,
-nl:!0,pl:!0,pt:!0,"pt-pt":!0,ro:!0,ru:!0,sk:!0,sl:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-tw":!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/grid/enhanced/nls/EnhancedGrid.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/grid/enhanced/nls/Filter.js] */
-//>>built
+nl:!0,pl:!0,pt:!0,"pt-pt":!0,ro:!0,ru:!0,sk:!0,sl:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-tw":!0});//>>built
define("dojox/grid/enhanced/nls/Filter",{root:{clearFilterDialogTitle:"Clear Filter",filterDefDialogTitle:"Filter",ruleTitleTemplate:"Rule ${0}",conditionEqual:"equal",conditionNotEqual:"does not equal",conditionLess:"is less than",conditionLessEqual:"less than or equal",conditionLarger:"is greater than",conditionLargerEqual:"greater than or equal",conditionContains:"contains",conditionIs:"is",conditionStartsWith:"starts with",conditionEndWith:"ends with",conditionNotContain:"does not contain",conditionIsNot:"is not",
conditionNotStartWith:"does not start with",conditionNotEndWith:"does not end with",conditionBefore:"before",conditionAfter:"after",conditionRange:"range",conditionIsEmpty:"is empty",all:"all",any:"any",relationAll:"all rules",waiRelAll:"Match all of the following rules:",relationAny:"any rules",waiRelAny:"Match any of the following rules:",relationMsgFront:"Match:",relationMsgTail:"",and:"and",or:"or",addRuleButton:"Add Rule",waiAddRuleButton:"Add a new rule",removeRuleButton:"Remove Rule",waiRemoveRuleButtonTemplate:"Remove rule ${0}",
cancelButton:"Cancel",waiCancelButton:"Cancel this dialog",clearButton:"Clear",waiClearButton:"Clear the filter",filterButton:"Filter",waiFilterButton:"Submit the filter",columnSelectLabel:"Column",waiColumnSelectTemplate:"Column for rule ${0}",conditionSelectLabel:"Condition",waiConditionSelectTemplate:"Condition for rule ${0}",valueBoxLabel:"Value",waiValueBoxTemplate:"Enter value to filter for rule ${0}",rangeTo:"to",rangeTemplate:"from ${0} to ${1}",statusTipHeaderColumn:"Column",statusTipHeaderCondition:"Rules",
statusTipTitle:"Filter Bar",statusTipMsg:"Click the filter bar here to filter on values in ${0}.",anycolumn:"any column",statusTipTitleNoFilter:"Filter Bar",statusTipTitleHasFilter:"Filter",statusTipRelAny:"Match any rules.",statusTipRelAll:"Match all rules.",defaultItemsName:"items",filterBarMsgHasFilterTemplate:"${0} of ${1} ${2} shown.",filterBarMsgNoFilterTemplate:"No filter applied",filterBarDefButton:"Define filter",waiFilterBarDefButton:"Filter the table",a11yFilterBarDefButton:"Filter...",
-filterBarClearButton:"Clear filter",waiFilterBarClearButton:"Clear the filter",closeFilterBarBtn:"Close filter bar",clearFilterMsg:"This will remove the filter and show all available records.",anyColumnOption:"Any Column",trueLabel:"True",falseLabel:"False"},ar:!0,ca:!0,cs:!0,da:!0,de:!0,el:!0,es:!0,fi:!0,fr:!0,he:!0,hr:!0,hu:!0,hr:!0,it:!0,ja:!0,kk:!0,ko:!0,nb:!0,nl:!0,pl:!0,pt:!0,"pt-pt":!0,ro:!0,ru:!0,sk:!0,sl:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-tw":!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/grid/enhanced/nls/Filter.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/grid/enhanced/nls/Pagination.js] */
-//>>built
+filterBarClearButton:"Clear filter",waiFilterBarClearButton:"Clear the filter",closeFilterBarBtn:"Close filter bar",clearFilterMsg:"This will remove the filter and show all available records.",anyColumnOption:"Any Column",trueLabel:"True",falseLabel:"False"},ar:!0,ca:!0,cs:!0,da:!0,de:!0,el:!0,es:!0,fi:!0,fr:!0,he:!0,hr:!0,hu:!0,hr:!0,it:!0,ja:!0,kk:!0,ko:!0,nb:!0,nl:!0,pl:!0,pt:!0,"pt-pt":!0,ro:!0,ru:!0,sk:!0,sl:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-tw":!0});//>>built
define("dojox/grid/enhanced/nls/Pagination",{root:{descTemplate:"${2} - ${3} of ${1} ${0}",firstTip:"First Page",lastTip:"Last Page",nextTip:"Next Page",prevTip:"Previous Page",itemTitle:"items",singularItemTitle:"item",pageStepLabelTemplate:"Page ${0}",pageSizeLabelTemplate:"${0} items per page",allItemsLabelTemplate:"All items",gotoButtonTitle:"Go to a specific page",dialogTitle:"Go to Page",dialogIndication:"Specify the page number",pageCountIndication:" (${0} pages)",dialogConfirm:"Go",dialogCancel:"Cancel",
-all:"All"},ar:!0,ca:!0,cs:!0,da:!0,de:!0,el:!0,es:!0,fi:!0,fr:!0,he:!0,hr:!0,hu:!0,hr:!0,it:!0,ja:!0,kk:!0,ko:!0,nb:!0,nl:!0,pl:!0,pt:!0,"pt-pt":!0,ro:!0,ru:!0,sk:!0,sl:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-tw":!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/grid/enhanced/nls/Pagination.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/grid/enhanced/nls/de/EnhancedGrid.js] */
-//>>built
-define("dojox/grid/enhanced/nls/de/EnhancedGrid",{singleSort:"Einfache Sortierung",nestedSort:"Verschachtelte Sortierung",ascending:"F\u00fcr aufsteigende Sortierung hier klicken",descending:"F\u00fcr absteigende Sortierung hier klicken",sortingState:"${0} - ${1}",unsorted:"Diese Spalte nicht sortieren",indirectSelectionRadio:"Zeile ${0}, Einzelauswahl, Optionsfeld",indirectSelectionCheckBox:"Zeile ${0}, Mehrfachauswahl, Kontrollk\u00e4stchen",selectAll:"Alles ausw\u00e4hlen"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/grid/enhanced/nls/de/EnhancedGrid.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/grid/enhanced/nls/de/Filter.js] */
-//>>built
+all:"All"},ar:!0,ca:!0,cs:!0,da:!0,de:!0,el:!0,es:!0,fi:!0,fr:!0,he:!0,hr:!0,hu:!0,hr:!0,it:!0,ja:!0,kk:!0,ko:!0,nb:!0,nl:!0,pl:!0,pt:!0,"pt-pt":!0,ro:!0,ru:!0,sk:!0,sl:!0,sv:!0,th:!0,tr:!0,zh:!0,"zh-tw":!0});//>>built
+define("dojox/grid/enhanced/nls/de/EnhancedGrid",{singleSort:"Einfache Sortierung",nestedSort:"Verschachtelte Sortierung",ascending:"F\u00fcr aufsteigende Sortierung hier klicken",descending:"F\u00fcr absteigende Sortierung hier klicken",sortingState:"${0} - ${1}",unsorted:"Diese Spalte nicht sortieren",indirectSelectionRadio:"Zeile ${0}, Einzelauswahl, Optionsfeld",indirectSelectionCheckBox:"Zeile ${0}, Mehrfachauswahl, Kontrollk\u00e4stchen",selectAll:"Alles ausw\u00e4hlen"});//>>built
define("dojox/grid/enhanced/nls/de/Filter",{clearFilterDialogTitle:"Filter l\u00f6schen",filterDefDialogTitle:"Filter",ruleTitleTemplate:"Regel ${0}",conditionEqual:"gleich",conditionNotEqual:"ist nicht gleich",conditionLess:"ist kleiner als",conditionLessEqual:"kleiner-gleich",conditionLarger:"ist gr\u00f6\u00dfer als",conditionLargerEqual:"gr\u00f6\u00dfer-gleich",conditionContains:"enth\u00e4lt",conditionIs:"ist",conditionStartsWith:"beginnt mit",conditionEndWith:"endet mit",conditionNotContain:"enth\u00e4lt nicht",
conditionIsNot:"ist nicht",conditionNotStartWith:"beginnt nicht mit",conditionNotEndWith:"endet nicht mit",conditionBefore:"vor",conditionAfter:"nach",conditionRange:"Bereich",conditionIsEmpty:"ist leer",all:"alle",any:"beliebig",relationAll:"Alle Regeln",waiRelAll:"\u00dcbereinstimmung mit allen folgenden Regeln:",relationAny:"Beliebige Regeln",waiRelAny:"\u00dcbereinstimmung mit einer beliebigen der folgenden Regeln:",relationMsgFront:"\u00dcbereinstimmung:",relationMsgTail:"",and:"und",or:"oder",
addRuleButton:"Regel hinzuf\u00fcgen",waiAddRuleButton:"Neue Regel hinzuf\u00fcgen",removeRuleButton:"Regel entfernen",waiRemoveRuleButtonTemplate:"Regel ${0} entfernen",cancelButton:"Abbrechen",waiCancelButton:"Dialog abbrechen",clearButton:"Abw\u00e4hlen",waiClearButton:"Filter abw\u00e4hlen",filterButton:"Filter",waiFilterButton:"Filter \u00fcbergeben",columnSelectLabel:"Spalte",waiColumnSelectTemplate:"Spalte f\u00fcr Regel ${0}",conditionSelectLabel:"Bedingung",waiConditionSelectTemplate:"Bedingung f\u00fcr Regel ${0}",
valueBoxLabel:"Wert",waiValueBoxTemplate:"Filterwert f\u00fcr Regel ${0} eingeben",rangeTo:"bis",rangeTemplate:"von ${0} bis ${1}",statusTipHeaderColumn:"Spalte",statusTipHeaderCondition:"Regeln",statusTipTitle:"Filterleiste",statusTipMsg:"Kicken Sie auf die Filterleiste, um nach Werten in ${0} zu filtern.",anycolumn:"Beliebige Spalte",statusTipTitleNoFilter:"Filterleiste",statusTipTitleHasFilter:"Filter",statusTipRelAny:"Beliebige Regeln abgleichen.",statusTipRelAll:"Alle Regel abgleichen.",defaultItemsName:"Eintr\u00e4ge",
filterBarMsgHasFilterTemplate:"${0} von ${1} ${2} angezeigt.",filterBarMsgNoFilterTemplate:"Kein Filter angewendet",filterBarDefButton:"Filter definieren",waiFilterBarDefButton:"Tabelle filtern",a11yFilterBarDefButton:"Filter...",filterBarClearButton:"Filter l\u00f6schen",waiFilterBarClearButton:"Filter abw\u00e4hlen",closeFilterBarBtn:"Filterleiste schlie\u00dfen",clearFilterMsg:"Diese Aktion entfernt den Filter und zeigt alle verf\u00fcgbaren Datens\u00e4tze an.",anyColumnOption:"Beliebige Spalte",
-trueLabel:"Wahr",falseLabel:"Falsch"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/grid/enhanced/nls/de/Filter.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/grid/enhanced/nls/de/Pagination.js] */
-//>>built
+trueLabel:"Wahr",falseLabel:"Falsch"});//>>built
define("dojox/grid/enhanced/nls/de/Pagination",{descTemplate:"${2} - ${3} von ${1} ${0}",firstTip:"Erste Seite",lastTip:"Letzte Seite",nextTip:"N\u00e4chste Seite",prevTip:"Vorherige Seite",itemTitle:"Eintr\u00e4ge",singularItemTitle:"Eintrag",pageStepLabelTemplate:"Seite ${0}",pageSizeLabelTemplate:"${0} Eintr\u00e4ge pro Seite",allItemsLabelTemplate:"Alle Eintr\u00e4ge",gotoButtonTitle:"Wechsel zu einer bestimmten Seite",dialogTitle:"Wechseln zur Seite",dialogIndication:"Seitennummer angeben",pageCountIndication:" (${0} Seiten)",
-dialogConfirm:"Start",dialogCancel:"Abbrechen",all:"Alle"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/grid/enhanced/nls/de/Pagination.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/grid/enhanced/nls/ru/EnhancedGrid.js] */
-//>>built
-define("dojox/grid/enhanced/nls/ru/EnhancedGrid",{singleSort:"\u041e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430",nestedSort:"\u0412\u043b\u043e\u0436\u0435\u043d\u043d\u0430\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430",ascending:"\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043d\u0438\u044e",descending:"\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u043e \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044e",
-sortingState:"${0} - ${1}",unsorted:"\u041d\u0435 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0441\u0442\u043e\u043b\u0431\u0435\u0446",indirectSelectionRadio:"\u0421\u0442\u0440\u043e\u043a\u0430 ${0}, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0431\u043e\u0440, \u0440\u0430\u0434\u0438\u043e\u043a\u043d\u043e\u043f\u043a\u0430",indirectSelectionCheckBox:"\u0421\u0442\u0440\u043e\u043a\u0430 ${0}, \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0431\u043e\u0440, \u0444\u043b\u0430\u0436\u043e\u043a",
-selectAll:"\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/grid/enhanced/nls/ru/EnhancedGrid.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/grid/enhanced/nls/ru/Filter.js] */
-//>>built
-define("dojox/grid/enhanced/nls/ru/Filter",{clearFilterDialogTitle:"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440",filterDefDialogTitle:"\u0424\u0438\u043b\u044c\u0442\u0440",ruleTitleTemplate:"\u041f\u0440\u0430\u0432\u0438\u043b\u043e ${0}",conditionEqual:"\u0440\u0430\u0432\u043d\u043e",conditionNotEqual:"\u043d\u0435 \u0440\u0430\u0432\u043d\u043e",conditionLess:"\u043c\u0435\u043d\u044c\u0448\u0435 \u0447\u0435\u043c",conditionLessEqual:"\u043d\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0447\u0435\u043c",
-conditionLarger:"\u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0435\u043c",conditionLargerEqual:"\u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0435\u043c",conditionContains:"\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442",conditionIs:"-",conditionStartsWith:"\u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441",conditionEndWith:"\u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f",conditionNotContain:"\u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442",
-conditionIsNot:"\u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442",conditionNotStartWith:"\u043d\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441",conditionNotEndWith:"\u043d\u0435 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f",conditionBefore:"\u0434\u043e",conditionAfter:"\u043f\u043e\u0441\u043b\u0435",conditionRange:"\u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d",conditionIsEmpty:"\u043f\u0443\u0441\u0442",
-all:"\u0432\u0441\u0435",any:"\u043b\u044e\u0431\u043e\u0435",relationAll:"\u0432\u0441\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430",waiRelAll:"\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0441\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c:",relationAny:"\u043b\u044e\u0431\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430",waiRelAny:"\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u044e\u0431\u043e\u043c\u0443 \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0440\u0430\u0432\u0438\u043b:",
-relationMsgFront:"\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435:",relationMsgTail:"",and:"\u0438",or:"\u0438\u043b\u0438",addRuleButton:"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u043e",waiAddRuleButton:"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e",removeRuleButton:"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u043e",
-waiRemoveRuleButtonTemplate:"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u043e ${0}",cancelButton:"\u041e\u0442\u043c\u0435\u043d\u0430",waiCancelButton:"\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0434\u0438\u0430\u043b\u043e\u0433",clearButton:"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c",waiClearButton:"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440",filterButton:"\u0424\u0438\u043b\u044c\u0442\u0440",
-waiFilterButton:"\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440",columnSelectLabel:"\u0421\u0442\u043e\u043b\u0431\u0435\u0446",waiColumnSelectTemplate:"\u0421\u0442\u043e\u043b\u0431\u0435\u0446 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 ${0}",conditionSelectLabel:"\u0423\u0441\u043b\u043e\u0432\u0438\u0435",waiConditionSelectTemplate:"\u0423\u0441\u043b\u043e\u0432\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 ${0}",valueBoxLabel:"\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435",
-waiValueBoxTemplate:"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0444\u0438\u043b\u044c\u0442\u0440 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 ${0}",rangeTo:"\u043a",rangeTemplate:"\u043e\u0442 ${0} \u0434\u043e ${1}",statusTipHeaderColumn:"\u0421\u0442\u043e\u043b\u0431\u0435\u0446",statusTipHeaderCondition:"\u041f\u0440\u0430\u0432\u0438\u043b\u0430",statusTipTitle:"\u041f\u0430\u043d\u0435\u043b\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432",
-statusTipMsg:"\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u0432 ${0}.",anycolumn:"\u043b\u044e\u0431\u043e\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446",statusTipTitleNoFilter:"\u041f\u0430\u043d\u0435\u043b\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432",
-statusTipTitleHasFilter:"\u0424\u0438\u043b\u044c\u0442\u0440",statusTipRelAny:"\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043b\u044e\u0431\u043e\u043c\u0443 \u0438\u0437 \u043f\u0440\u0430\u0432\u0438\u043b.",statusTipRelAll:"\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0432\u0441\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c.",defaultItemsName:"\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432",filterBarMsgHasFilterTemplate:"\u041f\u043e\u043a\u0430\u0437\u0430\u043d\u043e ${0} \u0438\u0437 ${1} ${2}.",
-filterBarMsgNoFilterTemplate:"\u0424\u0438\u043b\u044c\u0442\u0440\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f",filterBarDefButton:"\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440",waiFilterBarDefButton:"\u0424\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443",a11yFilterBarDefButton:"\u0424\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c...",
-filterBarClearButton:"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440",waiFilterBarClearButton:"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440",closeFilterBarBtn:"\u0417\u0430\u043a\u0440\u044b\u0442\u044c \u043f\u0430\u043d\u0435\u043b\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432",clearFilterMsg:"\u042d\u0442\u0430 \u043e\u043f\u0446\u0438\u044f \u0443\u0434\u0430\u043b\u0438\u0442 \u0444\u0438\u043b\u044c\u0442\u0440 \u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438.",
-anyColumnOption:"\u041b\u044e\u0431\u043e\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446",trueLabel:"\u0418\u0441\u0442\u0438\u043d\u0430",falseLabel:"\u041b\u043e\u0436\u044c"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/grid/enhanced/nls/ru/Filter.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/grid/enhanced/nls/ru/Pagination.js] */
-//>>built
-define("dojox/grid/enhanced/nls/ru/Pagination",{descTemplate:"${2} - ${3} \u0438\u0437 ${1} ${0}",firstTip:"\u041f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430",lastTip:"\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430",nextTip:"\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430",prevTip:"\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430",
-itemTitle:"\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432",singularItemTitle:"\u044d\u043b\u0435\u043c\u0435\u043d\u0442",pageStepLabelTemplate:"\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 ${0}",pageSizeLabelTemplate:"${0} \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435",allItemsLabelTemplate:"\u0412\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b",gotoButtonTitle:"\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443",
-dialogTitle:"\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443",dialogIndication:"\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b",pageCountIndication:" (${0} \u0441\u0442\u0440\u0430\u043d\u0438\u0446)",dialogConfirm:"\u041f\u0435\u0440\u0435\u0439\u0442\u0438",dialogCancel:"\u041e\u0442\u043c\u0435\u043d\u0430",all:"\u0412\u0441\u0435"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/grid/enhanced/nls/ru/Pagination.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/widget/nls/ColorPicker.js] */
-//>>built
-define("dojox/widget/nls/ColorPicker",{root:{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Hue Selector",saturationPickerTitle:"Saturation Selector"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/widget/nls/ColorPicker.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/widget/nls/FilePicker.js] */
-//>>built
-define("dojox/widget/nls/FilePicker",{root:{name:"Name",path:"Path",size:"Size (in bytes)"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/widget/nls/FilePicker.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/widget/nls/Wizard.js] */
-//>>built
-define("dojox/widget/nls/Wizard",{root:{next:"Next",previous:"Previous",done:"Done"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/widget/nls/Wizard.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/widget/nls/de/ColorPicker.js] */
-//>>built
-define("dojox/widget/nls/de/ColorPicker",{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Farbtonauswahl",saturationPickerTitle:"S\u00e4ttigungsauswahl"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/widget/nls/de/ColorPicker.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/widget/nls/de/FilePicker.js] */
-//>>built
-define("dojox/widget/nls/de/FilePicker",{name:"Name",path:"Pfad",size:"Gr\u00f6\u00dfe (in Byte)"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/widget/nls/de/FilePicker.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/widget/nls/de/Wizard.js] */
-//>>built
-define("dojox/widget/nls/de/Wizard",{next:"Weiter",previous:"Zur\u00fcck",done:"Fertig"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/widget/nls/de/Wizard.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/widget/nls/ru/ColorPicker.js] */
-//>>built
-define("dojox/widget/nls/ru/ColorPicker",{redLabel:"\u043a",greenLabel:"\u0437",blueLabel:"\u0441",hueLabel:"\u043e",saturationLabel:"\u043d",valueLabel:"\u0437",degLabel:"\u00b0",hexLabel:"\u0448\u0435\u0441\u0442",huePickerTitle:"\u0412\u044b\u0431\u043e\u0440 \u043e\u0442\u0442\u0435\u043d\u043a\u0430",saturationPickerTitle:"\u0412\u044b\u0431\u043e\u0440 \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u0438"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/widget/nls/ru/ColorPicker.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/widget/nls/ru/FilePicker.js] */
-//>>built
-define("dojox/widget/nls/ru/FilePicker",{name:"\u0418\u043c\u044f",path:"\u041f\u0443\u0442\u044c",size:"\u0420\u0430\u0437\u043c\u0435\u0440 (\u0431\u0430\u0439\u0442)"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/widget/nls/ru/FilePicker.js] */
-/* START OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/widget/nls/ru/Wizard.js] */
-//>>built
-define("dojox/widget/nls/ru/Wizard",{next:"\u0414\u0430\u043b\u0435\u0435",previous:"\u041d\u0430\u0437\u0430\u0434",done:"\u0413\u043e\u0442\u043e\u0432\u043e"});
-/* END OF NLS BUNDLE ENTRY [dojo-deps/dist/dojox/widget/nls/ru/Wizard.js] */
-
-// END OF dojobundle.js
-
-(function(){var e=this.require;e({cache:{}});!e.async&&e(["dojo"]);e.boot&&e.apply(null,e.boot)})(); \ No newline at end of file
+dialogConfirm:"Start",dialogCancel:"Abbrechen",all:"Alle"});//>>built
+define("dojox/grid/enhanced/nls/fr/EnhancedGrid",{singleSort:"Tri simple",nestedSort:"Tri imbriqu\u00e9",ascending:"Cliquer pour trier par ordre croissant",descending:"Cliquer pour trier par ordre d\u00e9croissant",sortingState:"${0} - ${1}",unsorted:"Ne pas trier cette colonne",indirectSelectionRadio:"Ligne ${0}, s\u00e9lection unique, bouton radio",indirectSelectionCheckBox:"Ligne ${0}, s\u00e9lection multiple, case \u00e0 cocher",selectAll:"S\u00e9lectionner tout"});//>>built
+define("dojox/grid/enhanced/nls/fr/Filter",{clearFilterDialogTitle:"Effacer le filtre",filterDefDialogTitle:"Filtrer",ruleTitleTemplate:"R\u00e8gle ${0}",conditionEqual:"\u00e9gal",conditionNotEqual:"est diff\u00e9rent de",conditionLess:"est inf\u00e9rieur \u00e0",conditionLessEqual:"inf\u00e9rieur ou \u00e9gal",conditionLarger:"est sup\u00e9rieur \u00e0",conditionLargerEqual:"sup\u00e9rieur ou \u00e9gal",conditionContains:"contient",conditionIs:"est",conditionStartsWith:"commence par",conditionEndWith:"se termine par",
+conditionNotContain:"ne contient pas",conditionIsNot:"n'est pas",conditionNotStartWith:"ne commence pas par",conditionNotEndWith:"ne se termine pas par",conditionBefore:"avant",conditionAfter:"apr\u00e8s",conditionRange:"plage",conditionIsEmpty:"est vide",all:"toutes",any:"n'importe quelles",relationAll:"toutes les r\u00e8gles",waiRelAll:"Satisfaire \u00e0 toutes les r\u00e8gles suivantes :",relationAny:"n'importe quelles r\u00e8gles",waiRelAny:"Satisfaire \u00e0 l'une quelconque des r\u00e8gles suivantes :",
+relationMsgFront:"Satisfaire \u00e0 :",relationMsgTail:"",and:"et",or:"ou",addRuleButton:"Ajouter une r\u00e8gle",waiAddRuleButton:"Ajouter une nouvelle r\u00e8gle",removeRuleButton:"Supprimer la r\u00e8gle",waiRemoveRuleButtonTemplate:"Supprimer la r\u00e8gle ${0}",cancelButton:"Annuler",waiCancelButton:"Annuler cette bo\u00eete de dialogue",clearButton:"Effacer",waiClearButton:"Effacer le filtre",filterButton:"Filtrer",waiFilterButton:"Soumettre le filtre",columnSelectLabel:"Colonne",waiColumnSelectTemplate:"Colonne pour la r\u00e8gle ${0}",
+conditionSelectLabel:"Condition",waiConditionSelectTemplate:"Condition pour la r\u00e8gle ${0}",valueBoxLabel:"Valeur",waiValueBoxTemplate:"Saisir la valeur \u00e0 filtrer pour la r\u00e8gle ${0}",rangeTo:"\u00e0",rangeTemplate:"de ${0} \u00e0 ${1}",statusTipHeaderColumn:"Colonne",statusTipHeaderCondition:"R\u00e8gles",statusTipTitle:"Barre de filtre",statusTipMsg:"Cliquer sur la barre de filtre ici pour filtrer sur les valeurs de ${0}.",anycolumn:"n'importe quelle colonne",statusTipTitleNoFilter:"Barre de filtre",
+statusTipTitleHasFilter:"Filtrer",statusTipRelAny:"Satisfaire \u00e0 l'une quelconque des r\u00e8gles. ",statusTipRelAll:"Satisfaire \u00e0 toutes les r\u00e8gles. ",defaultItemsName:"\u00e9l\u00e9ments",filterBarMsgHasFilterTemplate:"${0} sur ${1} ${2} affich\u00e9s.",filterBarMsgNoFilterTemplate:"Aucun filtre appliqu\u00e9",filterBarDefButton:"D\u00e9finir le filtre",waiFilterBarDefButton:"Filtrer le tableau",a11yFilterBarDefButton:"Filtrer...",filterBarClearButton:"Effacer le filtre",waiFilterBarClearButton:"Effacer le filtre",
+closeFilterBarBtn:"Fermer la barre de filtre",clearFilterMsg:"Cela supprimera le filtre et affichera tous les enregistrements disponibles.",anyColumnOption:"N'importe quelle colonne",trueLabel:"Vrai",falseLabel:"Faux"});//>>built
+define("dojox/grid/enhanced/nls/fr/Pagination",{descTemplate:"${2} \u00e0 ${3} sur ${1} ${0}",firstTip:"Premi\u00e8re page",lastTip:"Derni\u00e8re page",nextTip:"Page suivante",prevTip:"Page pr\u00e9c\u00e9dente",itemTitle:"\u00e9l\u00e9ments",singularItemTitle:"\u00e9l\u00e9ment",pageStepLabelTemplate:"Page ${0}",pageSizeLabelTemplate:"${0} \u00e9l\u00e9ments par page",allItemsLabelTemplate:"Tous les \u00e9l\u00e9ments",gotoButtonTitle:"Aller \u00e0 une page donn\u00e9e",dialogTitle:"Aller \u00e0 la page",
+dialogIndication:"Indiquer le num\u00e9ro de page",pageCountIndication:" (${0} pages)",dialogConfirm:"Aller",dialogCancel:"Annuler",all:"Tout"});//>>built
+define("dojox/grid/enhanced/nls/it/EnhancedGrid",{singleSort:"Ordinamento singolo",nestedSort:"Ordinamento nidificato",ascending:"Fare clic per ordinare in modo crescente",descending:"Fare clic per ordinare in modo decrescente",sortingState:"${0} - ${1}",unsorted:"Non ordinare questa colonna",indirectSelectionRadio:"Riga ${0}, selezione singola, casella ad opzione",indirectSelectionCheckBox:"Riga ${0}, selezione multipla, check box",selectAll:"Seleziona tutto"});//>>built
+define("dojox/grid/enhanced/nls/it/Filter",{clearFilterDialogTitle:"Cancella filtro",filterDefDialogTitle:"Filtro",ruleTitleTemplate:"Regola ${0}",conditionEqual:"uguale a",conditionNotEqual:"diverso da",conditionLess:"minore di",conditionLessEqual:"minore o uguale",conditionLarger:"maggiore di",conditionLargerEqual:"maggiore o uguale",conditionContains:"contiene",conditionIs:"\u00e8",conditionStartsWith:"inizia con",conditionEndWith:"termina con",conditionNotContain:"non contiene",conditionIsNot:"non \u00e8",
+conditionNotStartWith:"non inizia con",conditionNotEndWith:"non termina con",conditionBefore:"prima",conditionAfter:"dopo",conditionRange:"intervallo",conditionIsEmpty:"\u00e8 vuoto",all:"tutto",any:"qualsiasi",relationAll:"tutte le regole",waiRelAll:"Corrispondenza con tutte le regole seguenti:",relationAny:"qualsiasi regola",waiRelAny:"Corrispondenza una qualsiasi delle regole seguenti:",relationMsgFront:"Corrispondenza:",relationMsgTail:"",and:"e",or:"o",addRuleButton:"Aggiungi regola",waiAddRuleButton:"Aggiungi una nuova regola",
+removeRuleButton:"Rimuovi regola",waiRemoveRuleButtonTemplate:"Rimuovi regola ${0}",cancelButton:"Annulla",waiCancelButton:"Annulla questa finestra di dialogo",clearButton:"Elimina",waiClearButton:"Cancella il filtro",filterButton:"Filtro",waiFilterButton:"Inoltra il filtro",columnSelectLabel:"Colonna",waiColumnSelectTemplate:"Colonna per la regola ${0}",conditionSelectLabel:"Condizione",waiConditionSelectTemplate:"Condizione per la regola ${0}",valueBoxLabel:"Valore",waiValueBoxTemplate:"Immettere il valore da filtrare per la regola ${0}",
+rangeTo:"a",rangeTemplate:"da ${0} a ${1}",statusTipHeaderColumn:"Colonna",statusTipHeaderCondition:"Regole",statusTipTitle:"Barra filtro",statusTipMsg:"Fare clic sulla barra filtro per filtrare in base ai valori in ${0}.",anycolumn:"qualsiasi colonna",statusTipTitleNoFilter:"Barra filtro",statusTipTitleHasFilter:"Filtro",statusTipRelAny:"Corrispondenza con qualsiasi regola.",statusTipRelAll:"Corrispondenza con tutte le regole.",defaultItemsName:"elementi",filterBarMsgHasFilterTemplate:"${0} di ${1} ${2} mostrate.",
+filterBarMsgNoFilterTemplate:"Nessun filtro applicato",filterBarDefButton:"Definisci filtro",waiFilterBarDefButton:"Filtra la tabella",a11yFilterBarDefButton:"Filtro...",filterBarClearButton:"Cancella filtro",waiFilterBarClearButton:"Cancella il filtro",closeFilterBarBtn:"Chiudi barra filtro",clearFilterMsg:"Questa operazione rimuover\u00e0 il filtro e visualizzer\u00e0 tutti i record disponibili.",anyColumnOption:"Qualsiasi colonna",trueLabel:"Vero",falseLabel:"Falso"});//>>built
+define("dojox/grid/enhanced/nls/it/Pagination",{descTemplate:"${2} - ${3} di ${1} ${0}",firstTip:"Prima pagina",lastTip:"Ultima pagina",nextTip:"Pagina successiva",prevTip:"Pagina precedente",itemTitle:"elementi",singularItemTitle:"elemento",pageStepLabelTemplate:"Pagina ${0}",pageSizeLabelTemplate:"${0} elementi per pagina",allItemsLabelTemplate:"Tutti gli elementi",gotoButtonTitle:"Vai a pagina specifica",dialogTitle:"Vai a pagina",dialogIndication:"Specifica numero pagina",pageCountIndication:" (${0} pagine)",
+dialogConfirm:"Vai",dialogCancel:"Annulla",all:"Tutto"});//>>built
+define("dojox/grid/enhanced/nls/nl/EnhancedGrid",{singleSort:"Enkelvoudig sorteren",nestedSort:"Genest sorteren",ascending:"Klik hier voor oplopend sorteren",descending:"Klik hier voor aflopend sorteren",sortingState:"${0} - ${1}",unsorted:"Deze kolom niet sorteren",indirectSelectionRadio:"Rij ${0}, enkele selectie, keuzerondje",indirectSelectionCheckBox:"Rij ${0}, meerdere selecties, selectievakje",selectAll:"Alles selecteren"});//>>built
+define("dojox/grid/enhanced/nls/nl/Filter",{clearFilterDialogTitle:"Filter wissen",filterDefDialogTitle:"Filter",ruleTitleTemplate:"Regel ${0}",conditionEqual:"gelijk aan",conditionNotEqual:"niet gelijk aan",conditionLess:"is kleiner dan",conditionLessEqual:"kleiner dan of gelijk aan",conditionLarger:"is groter dan",conditionLargerEqual:"groter dan of gelijk aan",conditionContains:"bevat",conditionIs:"is",conditionStartsWith:"begint met",conditionEndWith:"eindigt met",conditionNotContain:"bevat niet",
+conditionIsNot:"is niet",conditionNotStartWith:"begint niet met",conditionNotEndWith:"eindigt niet op",conditionBefore:"voor",conditionAfter:"na",conditionRange:"bereik",conditionIsEmpty:"is leeg",all:"alle",any:"een of meer",relationAll:"alle regels",waiRelAll:"Voldoen aan al deze regels:",relationAny:"een of meer regels",waiRelAny:"Voldoen aan een van deze regels:",relationMsgFront:"Voldoen aan:",relationMsgTail:"",and:"en",or:"of",addRuleButton:"Regel toevoegen",waiAddRuleButton:"Een nieuwe regel toevoegen",
+removeRuleButton:"Regel verwijderen",waiRemoveRuleButtonTemplate:"Regel ${0} verwijderen",cancelButton:"Annuleren",waiCancelButton:"Dit dialoogvenster annuleren",clearButton:"Leegmaken",waiClearButton:"Het filter wissen",filterButton:"Filter",waiFilterButton:"Het filter verzenden",columnSelectLabel:"Kolom",waiColumnSelectTemplate:"Kolom voor regel ${0}",conditionSelectLabel:"Voorwaarde",waiConditionSelectTemplate:"Voorwaarde voor regel ${0}",valueBoxLabel:"Waarde",waiValueBoxTemplate:"Geef een filterwaarde op voor regel ${0}",
+rangeTo:"tot",rangeTemplate:"van ${0} tot ${1}",statusTipHeaderColumn:"Kolom",statusTipHeaderCondition:"Regels",statusTipTitle:"Filterbalk",statusTipMsg:"Klik hier op de filterbalk om te filteren op waarden in ${0}.",anycolumn:"een kolom",statusTipTitleNoFilter:"Filterbalk",statusTipTitleHasFilter:"Filter",statusTipRelAny:"Voldoen aan een regel.",statusTipRelAll:"Voldoen aan alle regels.",defaultItemsName:"items",filterBarMsgHasFilterTemplate:"${0} van ${1} ${2} afgebeeld.",filterBarMsgNoFilterTemplate:"Geen filter toegepast",
+filterBarDefButton:"Filter defini\u00ebren",waiFilterBarDefButton:"De tabel filteren",a11yFilterBarDefButton:"Filteren...",filterBarClearButton:"Filter wissen",waiFilterBarClearButton:"Het filter wissen",closeFilterBarBtn:"Filterbalk sluiten",clearFilterMsg:"Hiermee verwijdert u het filter en worden alle beschikbare records afgebeeld.",anyColumnOption:"Een kolom",trueLabel:"Waar",falseLabel:"Onwaar"});//>>built
+define("dojox/grid/enhanced/nls/nl/Pagination",{descTemplate:"${2} - ${3} van ${1} ${0}",firstTip:"Eerste pagina",lastTip:"Laatste pagina",nextTip:"Volgende pagina",prevTip:"Vorige pagina",itemTitle:"items",singularItemTitle:"item",pageStepLabelTemplate:"Pagina ${0}",pageSizeLabelTemplate:"${0} items per pagina",allItemsLabelTemplate:"Alle items",gotoButtonTitle:"Naar een specifieke pagina gaan",dialogTitle:"Naar pagina gaan",dialogIndication:"Geef het paginanummer op:",pageCountIndication:" (${0} pagina's)",
+dialogConfirm:"Go",dialogCancel:"Annuleren",all:"Alles"});//>>built
+define("dojox/widget/nls/ColorPicker",{root:{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Hue Selector",saturationPickerTitle:"Saturation Selector"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});//>>built
+define("dojox/widget/nls/FilePicker",{root:{name:"Name",path:"Path",size:"Size (in bytes)"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});//>>built
+define("dojox/widget/nls/Wizard",{root:{next:"Next",previous:"Previous",done:"Done"},zh:!0,"zh-tw":!0,tr:!0,th:!0,sv:!0,sl:!0,sk:!0,ru:!0,ro:!0,pt:!0,"pt-pt":!0,pl:!0,nl:!0,nb:!0,ko:!0,kk:!0,ja:!0,it:!0,hu:!0,hr:!0,he:!0,fr:!0,fi:!0,es:!0,el:!0,de:!0,da:!0,cs:!0,ca:!0,az:!0,ar:!0});//>>built
+define("dojox/widget/nls/de/ColorPicker",{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"h",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Farbtonauswahl",saturationPickerTitle:"S\u00e4ttigungsauswahl"});//>>built
+define("dojox/widget/nls/de/FilePicker",{name:"Name",path:"Pfad",size:"Gr\u00f6\u00dfe (in Byte)"});//>>built
+define("dojox/widget/nls/de/Wizard",{next:"Weiter",previous:"Zur\u00fcck",done:"Fertig"});//>>built
+define("dojox/widget/nls/fr/ColorPicker",{redLabel:"r",greenLabel:"v",blueLabel:"b",hueLabel:"t",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"S\u00e9lecteur de teinte",saturationPickerTitle:"S\u00e9lecteur de saturation"});//>>built
+define("dojox/widget/nls/fr/FilePicker",{name:"Nom",path:"Chemin",size:"Taille (en octets)"});//>>built
+define("dojox/widget/nls/fr/Wizard",{next:"Suivant",previous:"Pr\u00e9c\u00e9dent",done:"Termin\u00e9"});//>>built
+define("dojox/widget/nls/it/ColorPicker",{redLabel:"r",greenLabel:"v",blueLabel:"b",hueLabel:"t",saturationLabel:"s",valueLabel:"v",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Selettore tonalit\u00e0",saturationPickerTitle:"Selettore saturazione"});//>>built
+define("dojox/widget/nls/it/FilePicker",{name:"Nome",path:"Percorso",size:"Dimensione (in byte)"});//>>built
+define("dojox/widget/nls/it/Wizard",{next:"Successivo",previous:"Indietro",done:"Fine"});//>>built
+define("dojox/widget/nls/nl/ColorPicker",{redLabel:"r",greenLabel:"g",blueLabel:"b",hueLabel:"t",saturationLabel:"i",valueLabel:"h",degLabel:"\u00b0",hexLabel:"hex",huePickerTitle:"Tint selecteren",saturationPickerTitle:"Intensiteit selecteren"});//>>built
+define("dojox/widget/nls/nl/FilePicker",{name:"Naam",path:"Pad",size:"Grootte (in bytes)"});//>>built
+define("dojox/widget/nls/nl/Wizard",{next:"Volgende",previous:"Vorige",done:"Klaar"});
+(function(){var f=this.require;f({cache:{}});!f.async&&f(["dojo"]);f.boot&&f.apply(null,f.boot)})(); \ No newline at end of file
diff --git a/js/3rdparty/webodf/editor/EditorSession.js b/js/3rdparty/webodf/editor/EditorSession.js
index 38298b2f..f2e91b69 100644
--- a/js/3rdparty/webodf/editor/EditorSession.js
+++ b/js/3rdparty/webodf/editor/EditorSession.js
@@ -1,74 +1,63 @@
/**
- * @license
* Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
*
* @licstart
- * The JavaScript code in this page is free software: you can redistribute it
- * and/or modify it under the terms of the GNU Affero General Public License
- * (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version. The code is distributed
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
+ * This file is part of WebODF.
*
- * You should have received a copy of the GNU Affero General Public License
- * along with this code. If not, see <http://www.gnu.org/licenses/>.
- *
- * As additional permission under GNU AGPL version 3 section 7, you
- * may distribute non-source (e.g., minimized or compacted) forms of
- * that code without the copy of the GNU GPL normally required by
- * section 4, provided you include this license notice and a URL
- * through which recipients can access the Corresponding Source.
+ * WebODF is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License (GNU AGPL)
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
*
- * As a special exception to the AGPL, any HTML file which merely makes function
- * calls to this code, and for that purpose includes it by reference shall be
- * deemed a separate work for copyright law purposes. In addition, the copyright
- * holders of this code give you permission to combine this code with free
- * software libraries that are released under the GNU LGPL. You may copy and
- * distribute such a system following the terms of the GNU AGPL for this code
- * and the LGPL for the libraries. If you modify this code, you may extend this
- * exception to your version of the code, but you are not obligated to do so.
- * If you do not wish to do so, delete this exception statement from your
- * version.
+ * WebODF is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
*
- * This license applies to this entire compilation.
+ * You should have received a copy of the GNU Affero General Public License
+ * along with WebODF. If not, see <http://www.gnu.org/licenses/>.
* @licend
+ *
* @source: http://www.webodf.org/
* @source: https://github.com/kogmbh/WebODF/
*/
-/*global define, runtime, core, gui, ops, document */
+/*global runtime, define, document, core, odf, gui, ops*/
define("webodf/editor/EditorSession", [
- "dojo/text!" + OC.filePath('documents', 'css', 'fonts.css')
+ "dojo/text!resources/fonts/fonts.css"
], function (fontsCSS) { // fontsCSS is retrieved as a string, using dojo's text retrieval AMD plugin
"use strict";
- fontsCSS = fontsCSS.replace(/\.\/fonts/g, OC.appswebroots['documents']+'/css/fonts');
-
+ runtime.loadClass("core.Async");
runtime.loadClass("core.DomUtils");
runtime.loadClass("odf.OdfUtils");
runtime.loadClass("ops.OdtDocument");
- runtime.loadClass("ops.StepsTranslator");
+ runtime.loadClass("ops.OdtStepsTranslator");
runtime.loadClass("ops.Session");
runtime.loadClass("odf.Namespaces");
runtime.loadClass("odf.OdfCanvas");
runtime.loadClass("odf.OdfUtils");
runtime.loadClass("gui.CaretManager");
runtime.loadClass("gui.Caret");
+ runtime.loadClass("gui.OdfFieldView");
runtime.loadClass("gui.SessionController");
runtime.loadClass("gui.SessionView");
+ runtime.loadClass("gui.HyperlinkTooltipView");
runtime.loadClass("gui.TrivialUndoManager");
runtime.loadClass("gui.SvgSelectionView");
runtime.loadClass("gui.SelectionViewManager");
runtime.loadClass("core.EventNotifier");
runtime.loadClass("gui.ShadowCursor");
+ runtime.loadClass("gui.CommonConstraints");
/**
* Instantiate a new editor session attached to an existing operation session
+ * @constructor
+ * @implements {core.EventSource}
* @param {!ops.Session} session
* @param {!string} localMemberId
- * @param {{viewOptions:gui.SessionViewOptions,directParagraphStylingEnabled:boolean}} config
- * @constructor
+ * @param {{viewOptions:gui.SessionViewOptions,directParagraphStylingEnabled:boolean,annotationsEnabled:boolean}} config
*/
var EditorSession = function EditorSession(session, localMemberId, config) {
var self = this,
@@ -77,12 +66,14 @@ define("webodf/editor/EditorSession", [
currentStyleName = null,
caretManager,
selectionViewManager,
+ hyperlinkTooltipView,
odtDocument = session.getOdtDocument(),
textns = odf.Namespaces.textns,
fontStyles = document.createElement('style'),
formatting = odtDocument.getFormatting(),
- domUtils = new core.DomUtils(),
- odfUtils = new odf.OdfUtils(),
+ domUtils = core.DomUtils,
+ odfUtils = odf.OdfUtils,
+ odfFieldView,
eventNotifier = new core.EventNotifier([
EditorSession.signalMemberAdded,
EditorSession.signalMemberUpdated,
@@ -95,7 +86,10 @@ define("webodf/editor/EditorSession", [
EditorSession.signalCommonStyleDeleted,
EditorSession.signalParagraphStyleModified,
EditorSession.signalUndoStackChanged]),
- shadowCursor = new gui.ShadowCursor(odtDocument);
+ shadowCursor = new gui.ShadowCursor(odtDocument),
+ sessionConstraints,
+ /**@const*/
+ NEXT = core.StepDirection.NEXT;
/**
* @return {Array.<!string>}
@@ -105,7 +99,9 @@ define("webodf/editor/EditorSession", [
availableFonts = {};
+ /*jslint regexp: true*/
regex = /font-family *: *(?:\'([^']*)\'|\"([^"]*)\")/gm;
+ /*jslint regexp: false*/
matches = regex.exec(fontsCSS);
while (matches) {
@@ -159,7 +155,7 @@ define("webodf/editor/EditorSession", [
i;
// encode
- for (i = 0; i < name.length; i++) {
+ for (i = 0; i < name.length; i += 1) {
letter = name[i];
// simple approach, can be improved to not skip other allowed chars
if (letter.match(/[a-zA-Z0-9.-_]/) !== null) {
@@ -188,7 +184,7 @@ define("webodf/editor/EditorSession", [
// then loop until result is really unique
while (formatting.hasParagraphStyle(result)) {
result = ncName + "_" + i + "_" + ncMemberId;
- i++;
+ i += 1;
}
return result;
@@ -197,7 +193,7 @@ define("webodf/editor/EditorSession", [
function trackCursor(cursor) {
var node;
- node = odtDocument.getParagraphElement(cursor.getNode());
+ node = odfUtils.getParagraphElement(cursor.getNode());
if (!node) {
return;
}
@@ -310,15 +306,6 @@ define("webodf/editor/EditorSession", [
};
/**
- * Round the step up to the next step
- * @param {!number} step
- * @return {!boolean}
- */
- function roundUp(step) {
- return step === ops.StepsTranslator.NEXT_STEP;
- }
-
- /**
* Applies the paragraph style with the given
* style name to all the paragraphs within
* the cursor selection.
@@ -331,7 +318,7 @@ define("webodf/editor/EditorSession", [
opQueue = [];
paragraphs.forEach(function (paragraph) {
- var paragraphStartPoint = odtDocument.convertDomPointToCursorStep(paragraph, 0, roundUp),
+ var paragraphStartPoint = odtDocument.convertDomPointToCursorStep(paragraph, 0, NEXT),
paragraphStyleName = paragraph.getAttributeNS(odf.Namespaces.textns, "style-name"),
opSetParagraphStyle;
@@ -370,13 +357,15 @@ define("webodf/editor/EditorSession", [
* element. If the style name is an empty string, the default style
* is returned.
* @param {!string} styleName
- * @return {Element}
+ * @return {?Element}
*/
- this.getParagraphStyleElement = function (styleName) {
+ function getParagraphStyleElement(styleName) {
return (styleName === "")
? formatting.getDefaultStyleElement('paragraph')
- : odtDocument.getParagraphStyleElement(styleName);
- };
+ : formatting.getStyleElement(styleName, 'paragraph');
+ }
+
+ this.getParagraphStyleElement = getParagraphStyleElement;
/**
* Returns if the style is used anywhere in the document
@@ -387,26 +376,22 @@ define("webodf/editor/EditorSession", [
return formatting.isStyleUsed(styleElement);
};
- function getDefaultParagraphStyleAttributes() {
- var styleNode = formatting.getDefaultStyleElement('paragraph');
- if (styleNode) {
- return formatting.getInheritedStyleAttributes(styleNode);
- }
-
- return null;
- }
-
/**
* Returns the attributes of a given paragraph style name
* (with inheritance). If the name is an empty string,
* the attributes of the default style are returned.
* @param {!string} styleName
- * @return {Object}
+ * @return {?odf.Formatting.StyleData}
*/
this.getParagraphStyleAttributes = function (styleName) {
- return (styleName === "")
- ? getDefaultParagraphStyleAttributes()
- : odtDocument.getParagraphStyleAttributes(styleName);
+ var styleNode = getParagraphStyleElement(styleName),
+ includeSystemDefault = styleName === "";
+
+ if (styleNode) {
+ return formatting.getInheritedStyleAttributes(styleNode, includeSystemDefault);
+ }
+
+ return null;
};
/**
@@ -438,8 +423,7 @@ define("webodf/editor/EditorSession", [
*/
this.cloneParagraphStyle = function (styleName, newStyleDisplayName) {
var newStyleName = uniqueParagraphStyleNCName(newStyleDisplayName),
- styleNode = self.getParagraphStyleElement(styleName),
- formatting = odtDocument.getFormatting(),
+ styleNode = getParagraphStyleElement(styleName),
op, setProperties, attributes, i;
setProperties = formatting.getStyleAttributes(styleNode);
@@ -549,18 +533,6 @@ define("webodf/editor/EditorSession", [
};
/**
- *
- * @param {!string} mimetype
- * @param {!string} content base64 encoded string
- * @param {!number} width
- * @param {!number} height
- */
- this.insertImage = function (mimetype, content, width, height) {
- self.sessionController.getTextController().removeCurrentSelection();
- self.sessionController.getImageController().insertImage(mimetype, content, width, height);
- };
-
- /**
* @param {!string} memberId
* @return {?ops.Member}
*/
@@ -569,11 +541,12 @@ define("webodf/editor/EditorSession", [
};
/**
- * @param {!function(!Object=)} callback, passing an error object in case of error
+ * @param {!function(!Object=)} callback passing an error object in case of error
* @return {undefined}
*/
- this.destroy = function(callback) {
- var head = document.getElementsByTagName('head')[0];
+ function destroy(callback) {
+ var head = document.getElementsByTagName('head')[0],
+ eventManager = self.sessionController.getEventManager();
head.removeChild(fontStyles);
@@ -589,37 +562,35 @@ define("webodf/editor/EditorSession", [
odtDocument.unsubscribe(ops.OdtDocument.signalParagraphChanged, trackCurrentParagraph);
odtDocument.unsubscribe(ops.OdtDocument.signalUndoStackChanged, undoStackModified);
- self.sessionView.destroy(function(err) {
- if (err) {
- callback(err);
- } else {
- delete self.sessionView;
- caretManager.destroy(function(err) {
- if (err) {
- callback(err);
- } else {
- selectionViewManager.destroy(function(err) {
- if (err) {
- callback(err);
- } else {
- self.sessionController.destroy(function(err) {
- if (err) {
- callback(err);
- } else {
- delete self.sessionController;
- callback();
- }
- });
- }
- });
- }
- });
- }
- });
+ eventManager.unsubscribe("mousemove", hyperlinkTooltipView.showTooltip);
+ eventManager.unsubscribe("mouseout", hyperlinkTooltipView.hideTooltip);
+ delete self.sessionView;
+ delete self.sessionController;
+ callback();
+ }
+
+ /**
+ * @param {!function(!Error=)} callback passing an error object in case of error
+ * @return {undefined}
+ */
+ this.destroy = function(callback) {
+ var cleanup = [
+ self.sessionView.destroy,
+ caretManager.destroy,
+ selectionViewManager.destroy,
+ self.sessionController.destroy,
+ hyperlinkTooltipView.destroy,
+ odfFieldView.destroy,
+ destroy
+ ];
+
+ core.Async.destroyAll(cleanup, callback);
};
function init() {
- var head = document.getElementsByTagName('head')[0];
+ var head = document.getElementsByTagName('head')[0],
+ odfCanvas = session.getOdtDocument().getOdfCanvas(),
+ eventManager;
// TODO: fonts.css should be rather done by odfCanvas, or?
fontStyles.type = 'text/css';
@@ -627,14 +598,34 @@ define("webodf/editor/EditorSession", [
fontStyles.appendChild(document.createTextNode(fontsCSS));
head.appendChild(fontStyles);
+ odfFieldView = new gui.OdfFieldView(odfCanvas);
+ odfFieldView.showFieldHighlight();
self.sessionController = new gui.SessionController(session, localMemberId, shadowCursor, {
+ annotationsEnabled: config.annotationsEnabled,
+ directTextStylingEnabled: config.directTextStylingEnabled,
directParagraphStylingEnabled: config.directParagraphStylingEnabled
});
- caretManager = new gui.CaretManager(self.sessionController);
+ sessionConstraints = self.sessionController.getSessionConstraints();
+
+ eventManager = self.sessionController.getEventManager();
+ hyperlinkTooltipView = new gui.HyperlinkTooltipView(odfCanvas,
+ self.sessionController.getHyperlinkClickHandler().getModifier);
+ eventManager.subscribe("mousemove", hyperlinkTooltipView.showTooltip);
+ eventManager.subscribe("mouseout", hyperlinkTooltipView.hideTooltip);
+
+ caretManager = new gui.CaretManager(self.sessionController, odfCanvas.getViewport());
selectionViewManager = new gui.SelectionViewManager(gui.SvgSelectionView);
- self.sessionView = new gui.SessionView(config.viewOptions, localMemberId, session, caretManager, selectionViewManager);
+ self.sessionView = new gui.SessionView(config.viewOptions, localMemberId, session, sessionConstraints, caretManager, selectionViewManager);
self.availableFonts = getAvailableFonts();
selectionViewManager.registerCursor(shadowCursor, true);
+
+ // Session Constraints can be applied once the controllers are instantiated.
+ if (config.reviewModeEnabled) {
+ // Disallow deleting other authors' annotations.
+ sessionConstraints.setState(gui.CommonConstraints.EDIT.ANNOTATIONS.ONLY_DELETE_OWN, true);
+ sessionConstraints.setState(gui.CommonConstraints.EDIT.REVIEW_MODE, true);
+ }
+
// Custom signals, that make sense in the Editor context. We do not want to expose webodf's ops signals to random bits of the editor UI.
odtDocument.subscribe(ops.Document.signalMemberAdded, onMemberAdded);
odtDocument.subscribe(ops.Document.signalMemberUpdated, onMemberUpdated);
diff --git a/js/3rdparty/webodf/editor/MemberListView.js b/js/3rdparty/webodf/editor/MemberListView.js
index b312411d..c188e2af 100644
--- a/js/3rdparty/webodf/editor/MemberListView.js
+++ b/js/3rdparty/webodf/editor/MemberListView.js
@@ -1,37 +1,23 @@
/**
- * @license
* Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
*
* @licstart
- * The JavaScript code in this page is free software: you can redistribute it
- * and/or modify it under the terms of the GNU Affero General Public License
- * (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version. The code is distributed
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
+ * This file is part of WebODF.
*
- * You should have received a copy of the GNU Affero General Public License
- * along with this code. If not, see <http://www.gnu.org/licenses/>.
- *
- * As additional permission under GNU AGPL version 3 section 7, you
- * may distribute non-source (e.g., minimized or compacted) forms of
- * that code without the copy of the GNU GPL normally required by
- * section 4, provided you include this license notice and a URL
- * through which recipients can access the Corresponding Source.
+ * WebODF is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License (GNU AGPL)
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
*
- * As a special exception to the AGPL, any HTML file which merely makes function
- * calls to this code, and for that purpose includes it by reference shall be
- * deemed a separate work for copyright law purposes. In addition, the copyright
- * holders of this code give you permission to combine this code with free
- * software libraries that are released under the GNU LGPL. You may copy and
- * distribute such a system following the terms of the GNU AGPL for this code
- * and the LGPL for the libraries. If you modify this code, you may extend this
- * exception to your version of the code, but you are not obligated to do so.
- * If you do not wish to do so, delete this exception statement from your
- * version.
+ * WebODF is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
*
- * This license applies to this entire compilation.
+ * You should have received a copy of the GNU Affero General Public License
+ * along with WebODF. If not, see <http://www.gnu.org/licenses/>.
* @licend
+ *
* @source: http://www.webodf.org/
* @source: https://github.com/kogmbh/WebODF/
*/
@@ -41,197 +27,163 @@
define("webodf/editor/MemberListView",
["webodf/editor/EditorSession"],
- function (EditorSession) {
- "use strict";
-
- /**
- * @param {!Element} memberListDiv
- * @constructor
- */
- return function MemberListView(memberListDiv) {
- var editorSession = null;
-
- runtime.assert(memberListDiv, "memberListDiv unavailable");
+ function (EditorSession) {
+ "use strict";
/**
- * @param {!string} memberId
- * @return {undefined}
+ * @param {!Element} memberListDiv
+ * @constructor
*/
- function updateAvatarButton(memberId, memberDetails) {
- var node = memberListDiv.firstChild;
-
- // this takes care of incorrectly implemented MemberModels,
- // which might end up returning undefined member data
- if (!memberDetails) {
- runtime.log("MemberModel sent undefined data for member \"" + memberId + "\".");
- return;
- }
+ return function MemberListView(memberListDiv) {
+ var editorSession = null;
+
+ runtime.assert(memberListDiv, "memberListDiv unavailable");
+
+ /**
+ * @param {!string} memberId
+ * @return {undefined}
+ */
+ function updateAvatarButton(memberId, memberDetails) {
+ var node = memberListDiv.firstChild;
+
+ // this takes care of incorrectly implemented MemberModels,
+ // which might end up returning undefined member data
+ if (!memberDetails) {
+ runtime.log("MemberModel sent undefined data for member \"" + memberId + "\".");
+ return;
+ }
- while (node) {
- if (node.memberId === memberId) {
- node.setAttribute('uid', memberDetails.uid);
- node.setAttribute('count', 1);
- node = node.firstChild;
- while (node) {
- if (node.localName === "img") {
- // update avatar image
- node.src = memberDetails.imageUrl;
- // update border color
- node.style.borderColor = memberDetails.color;
- } else if (node.localName === "span" && memberDetails.imageUrl){
- try {
- $(node).avatar(memberDetails.imageUrl, 60);
- } catch (e){}
- node.style.borderColor = memberDetails.color;
- } else if (node.localName === "div") {
- node.setAttribute('fullname', memberDetails.fullName);
+ while (node) {
+ if (node.memberId === memberId) {
+ node = node.firstChild;
+ while (node) {
+ if (node.localName === "img") {
+ // update avatar image
+ node.src = memberDetails.imageUrl;
+ // update border color
+ node.style.borderColor = memberDetails.color;
+ } else if (node.localName === "div") {
+ node.setAttribute('fullname', memberDetails.fullName);
+ }
+ node = node.nextSibling;
}
- node = node.nextSibling;
+ return;
}
- return;
+ node = node.nextSibling;
}
- node = node.nextSibling;
}
- }
- /**
- * @param {!string} memberId
- * @return {undefined}
- */
- function createAvatarButton(memberId) {
- var doc = memberListDiv.ownerDocument,
- htmlns = doc.documentElement.namespaceURI,
- avatarDiv = doc.createElementNS(htmlns, "div"),
- imageElement = doc.createElement("span"),
- fullnameNode = doc.createElement("div");
-
- avatarDiv.className = "memberListButton";
- fullnameNode.className = "memberListLabel";
- avatarDiv.appendChild(imageElement);
- avatarDiv.appendChild(fullnameNode);
- avatarDiv.memberId = memberId; // TODO: namespace?
-
- avatarDiv.onmouseover = function () {
- //avatar.getCaret().showHandle();
- };
- avatarDiv.onmouseout = function () {
- //avatar.getCaret().hideHandle();
- };
- avatarDiv.onclick = function () {
- if (memberId === editorSession.sessionController.getInputMemberId()){
- documentsMain.onNickChange(memberId, fullnameNode);
- }
- };
- if (memberId === editorSession.sessionController.getInputMemberId()){
- memberListDiv.insertBefore(avatarDiv, memberListDiv.firstChild);
- } else {
+ /**
+ * @param {!string} memberId
+ * @return {undefined}
+ */
+ function createAvatarButton(memberId) {
+ var doc = memberListDiv.ownerDocument,
+ htmlns = doc.documentElement.namespaceURI,
+ avatarDiv = doc.createElementNS(htmlns, "div"),
+ imageElement = doc.createElement("img"),
+ fullnameNode = doc.createElement("div");
+
+ avatarDiv.className = "webodfeditor-memberListButton";
+ fullnameNode.className = "webodfeditor-memberListLabel";
+ avatarDiv.appendChild(imageElement);
+ avatarDiv.appendChild(fullnameNode);
+ avatarDiv.memberId = memberId; // TODO: namespace?
+
+ avatarDiv.onclick = function () {
+ var caret = editorSession.sessionView.getCaret(memberId);
+ if (caret) {
+ caret.toggleHandleVisibility();
+ }
+ };
memberListDiv.appendChild(avatarDiv);
}
- }
- /**
- * @param {!string} memberId
- * @return {undefined}
- */
- function removeAvatarButton(memberId) {
- var node = memberListDiv.firstChild;
- while (node) {
- if (node.memberId === memberId) {
- var count = parseInt(node.getAttribute('count'));
- if (count>1){
- node.setAttribute('count', count-1);
- } else {
+ /**
+ * @param {!string} memberId
+ * @return {undefined}
+ */
+ function removeAvatarButton(memberId) {
+ var node = memberListDiv.firstChild;
+ while (node) {
+ if (node.memberId === memberId) {
memberListDiv.removeChild(node);
+ return;
}
- return;
+ node = node.nextSibling;
}
- node = node.nextSibling;
}
- }
- /**
- * @param {!string} memberId
- * @return {undefined}
- */
- function addMember(memberId) {
- var member = editorSession.getMember(memberId),
- properties = member.getProperties(),
- node = memberListDiv.firstChild,
- found = false;
- while (node) {
- if (node.getAttribute('uid') === properties.uid) {
- var count = parseInt(node.getAttribute('count'));
- node.setAttribute('count', count+1);
- found = true;
- break;
- }
- node = node.nextSibling;
- }
- if (!found){
+ /**
+ * @param {!string} memberId
+ * @return {undefined}
+ */
+ function addMember(memberId) {
+ var member = editorSession.getMember(memberId),
+ properties = member.getProperties();
createAvatarButton(memberId);
+ updateAvatarButton(memberId, properties);
}
- updateAvatarButton(memberId, properties);
- }
- /**
- * @param {!string} memberId
- * @return {undefined}
- */
- function updateMember(memberId) {
- var member = editorSession.getMember(memberId),
- properties = member.getProperties();
+ /**
+ * @param {!string} memberId
+ * @return {undefined}
+ */
+ function updateMember(memberId) {
+ var member = editorSession.getMember(memberId),
+ properties = member.getProperties();
- updateAvatarButton(memberId, properties);
- }
+ updateAvatarButton(memberId, properties);
+ }
- /**
- * @param {!string} memberId
- * @return {undefined}
- */
- function removeMember(memberId) {
- removeAvatarButton(memberId);
- }
-
- function disconnectFromEditorSession() {
- var node, nextNode;
-
- if (editorSession) {
- // unsubscribe from editorSession
- editorSession.unsubscribe(EditorSession.signalMemberAdded, addMember);
- editorSession.unsubscribe(EditorSession.signalMemberUpdated, updateMember);
- editorSession.unsubscribe(EditorSession.signalMemberRemoved, removeMember);
- // remove all current avatars
- node = memberListDiv.firstChild;
- while (node) {
- nextNode = node.nextSibling;
- memberListDiv.removeChild(node);
- node = nextNode;
- }
+ /**
+ * @param {!string} memberId
+ * @return {undefined}
+ */
+ function removeMember(memberId) {
+ removeAvatarButton(memberId);
}
- }
- /**
- * @param {!EditorSession} session
- * @return {undefined}
- */
- this.setEditorSession = function(session) {
- disconnectFromEditorSession();
-
- editorSession = session;
- if (editorSession) {
- editorSession.subscribe(EditorSession.signalMemberAdded, addMember);
- editorSession.subscribe(EditorSession.signalMemberUpdated, updateMember);
- editorSession.subscribe(EditorSession.signalMemberRemoved, removeMember);
+ function disconnectFromEditorSession() {
+ var node, nextNode;
+
+ if (editorSession) {
+ // unsubscribe from editorSession
+ editorSession.unsubscribe(EditorSession.signalMemberAdded, addMember);
+ editorSession.unsubscribe(EditorSession.signalMemberUpdated, updateMember);
+ editorSession.unsubscribe(EditorSession.signalMemberRemoved, removeMember);
+ // remove all current avatars
+ node = memberListDiv.firstChild;
+ while (node) {
+ nextNode = node.nextSibling;
+ memberListDiv.removeChild(node);
+ node = nextNode;
+ }
+ }
}
- };
- /**
- * @param {!function(!Object=)} callback, passing an error object in case of error
- * @return {undefined}
- */
- this.destroy = function (callback) {
- disconnectFromEditorSession();
- callback();
+ /**
+ * @param {!EditorSession} session
+ * @return {undefined}
+ */
+ this.setEditorSession = function(session) {
+ disconnectFromEditorSession();
+
+ editorSession = session;
+ if (editorSession) {
+ editorSession.subscribe(EditorSession.signalMemberAdded, addMember);
+ editorSession.subscribe(EditorSession.signalMemberUpdated, updateMember);
+ editorSession.subscribe(EditorSession.signalMemberRemoved, removeMember);
+ }
+ };
+
+ /**
+ * @param {!function(!Error=)} callback, passing an error object in case of error
+ * @return {undefined}
+ */
+ this.destroy = function (callback) {
+ disconnectFromEditorSession();
+ callback();
+ };
};
- };
});
diff --git a/js/3rdparty/webodf/editor/Tools.js b/js/3rdparty/webodf/editor/Tools.js
index 602edff0..e5e2e9ba 100644
--- a/js/3rdparty/webodf/editor/Tools.js
+++ b/js/3rdparty/webodf/editor/Tools.js
@@ -2,40 +2,27 @@
* Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
*
* @licstart
- * The JavaScript code in this page is free software: you can redistribute it
- * and/or modify it under the terms of the GNU Affero General Public License
- * (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version. The code is distributed
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
+ * This file is part of WebODF.
*
- * You should have received a copy of the GNU Affero General Public License
- * along with this code. If not, see <http://www.gnu.org/licenses/>.
- *
- * As additional permission under GNU AGPL version 3 section 7, you
- * may distribute non-source (e.g., minimized or compacted) forms of
- * that code without the copy of the GNU GPL normally required by
- * section 4, provided you include this license notice and a URL
- * through which recipients can access the Corresponding Source.
+ * WebODF is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License (GNU AGPL)
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
*
- * As a special exception to the AGPL, any HTML file which merely makes function
- * calls to this code, and for that purpose includes it by reference shall be
- * deemed a separate work for copyright law purposes. In addition, the copyright
- * holders of this code give you permission to combine this code with free
- * software libraries that are released under the GNU LGPL. You may copy and
- * distribute such a system following the terms of the GNU AGPL for this code
- * and the LGPL for the libraries. If you modify this code, you may extend this
- * exception to your version of the code, but you are not obligated to do so.
- * If you do not wish to do so, delete this exception statement from your
- * version.
+ * WebODF is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
*
- * This license applies to this entire compilation.
+ * You should have received a copy of the GNU Affero General Public License
+ * along with WebODF. If not, see <http://www.gnu.org/licenses/>.
* @licend
+ *
* @source: http://www.webodf.org/
* @source: https://github.com/kogmbh/WebODF/
*/
-/*global define,document,require,ops */
+/*global window, define, require, document, dijit, dojo, runtime, ops*/
define("webodf/editor/Tools", [
"dojo/ready",
@@ -52,32 +39,60 @@ define("webodf/editor/Tools", [
"webodf/editor/widgets/editHyperlinks",
"webodf/editor/widgets/imageInserter",
"webodf/editor/widgets/paragraphStylesDialog",
- "owncloud/widgets/zoomCombo",
- "owncloud/widgets/ocToolbar",
+ "webodf/editor/widgets/zoomSlider",
+ "webodf/editor/widgets/aboutDialog",
"webodf/editor/EditorSession"],
- function (ready, MenuItem, DropDownMenu, Button, DropDownButton, Toolbar, ParagraphAlignment, SimpleStyles, UndoRedoMenu, CurrentStyle, AnnotationControl, EditHyperlinks, ImageInserter, ParagraphStylesDialog, ZoomCombo, OcToolbar, EditorSession) {
+ function (ready, MenuItem, DropDownMenu, Button, DropDownButton, Toolbar, ParagraphAlignment, SimpleStyles, UndoRedoMenu, CurrentStyle, AnnotationControl, EditHyperlinks, ImageInserter, ParagraphStylesDialog, ZoomSlider, AboutDialog, EditorSession) {
"use strict";
- return function Tools(args) {
+ return function Tools(toolbarElementId, args) {
var tr = runtime.tr,
onToolDone = args.onToolDone,
loadOdtFile = args.loadOdtFile,
saveOdtFile = args.saveOdtFile,
+ saveAsOdtFile = args.saveAsOdtFile,
+ downloadOdtFile = args.downloadOdtFile,
close = args.close,
toolbar,
- loadButton, saveButton, closeButton,
+ loadButton, saveButton, closeButton, aboutButton,
+ saveAsButton, downloadButton,
formatDropDownMenu, formatMenuButton,
- paragraphStylesMenuItem, paragraphStylesDialog, simpleStyles, currentStyle,
- zoomCombo,
- ocToolbar,
- undoRedoMenu,
+ paragraphStylesMenuItem, paragraphStylesDialog,
editorSession,
- paragraphAlignment,
- imageInserter,
- annotationControl,
- editHyperlinks,
+ aboutDialog,
sessionSubscribers = [];
+ function placeAndStartUpWidget(widget) {
+ widget.placeAt(toolbar);
+ widget.startup();
+ }
+
+ /**
+ * Creates a tool and installs it, if the enabled flag is set to true.
+ * Only supports tool classes whose constructor has a single argument which
+ * is a callback to pass the created widget object to.
+ * @param {!function(new:Object, function(!Object):undefined)} Tool constructor method of the tool
+ * @param {!boolean} enabled
+ * @param {!Object|undefined=} config
+ * @return {?Object}
+ */
+ function createTool(Tool, enabled, config) {
+ var tool = null;
+
+ if (enabled) {
+ if (config) {
+ tool = new Tool(config, placeAndStartUpWidget);
+ } else {
+ tool = new Tool(placeAndStartUpWidget);
+ }
+ sessionSubscribers.push(tool);
+ tool.onToolDone = onToolDone;
+ tool.setEditorSession(editorSession);
+ }
+
+ return tool;
+ }
+
function handleCursorMoved(cursor) {
var disabled = cursor.getSelectionType() === ops.OdtCursor.RegionSelection;
if (formatMenuButton) {
@@ -89,6 +104,7 @@ define("webodf/editor/Tools", [
if (editorSession) {
editorSession.unsubscribe(EditorSession.signalCursorMoved, handleCursorMoved);
}
+
editorSession = session;
if (editorSession) {
editorSession.subscribe(EditorSession.signalCursorMoved, handleCursorMoved);
@@ -97,12 +113,18 @@ define("webodf/editor/Tools", [
sessionSubscribers.forEach(function (subscriber) {
subscriber.setEditorSession(editorSession);
});
+
+ [saveButton, saveAsButton, downloadButton, closeButton, formatMenuButton].forEach(function (button) {
+ if (button) {
+ button.setAttribute('disabled', !editorSession);
+ }
+ });
}
this.setEditorSession = setEditorSession;
/**
- * @param {!function(!Object=)} callback, passing an error object in case of error
+ * @param {!function(!Error=)} callback, passing an error object in case of error
* @return {undefined}
*/
this.destroy = function (callback) {
@@ -123,76 +145,31 @@ define("webodf/editor/Tools", [
// init
ready(function () {
- ocToolbar = new OcToolbar(function (widget) {
- widget.startup();
- });
-
- toolbar = new Toolbar({}, "toolbar");
-
- // Undo/Redo
- if (args.undoRedoEnabled) {
- undoRedoMenu = new UndoRedoMenu(function (widget) {
- widget.placeAt(toolbar);
- widget.startup();
- });
- sessionSubscribers.push(undoRedoMenu);
- undoRedoMenu.onToolDone = onToolDone;
- }
+ toolbar = new Toolbar({}, toolbarElementId);
- // Add annotation
- if (args.annotationsEnabled) {
- annotationControl = new AnnotationControl(function (widget) {
- widget.placeAt(toolbar);
- widget.startup();
+ // About
+ if (args.aboutEnabled) {
+ aboutButton = new Button({
+ label: tr('About WebODF Text Editor'),
+ showLabel: false,
+ iconClass: 'webodfeditor-dijitWebODFIcon'
});
- sessionSubscribers.push(annotationControl);
- annotationControl.onToolDone = onToolDone;
- }
-
- // Simple Style Selector [B, I, U, S]
- simpleStyles = new SimpleStyles(function (widget) {
- widget.placeAt(toolbar);
- widget.startup();
- });
- sessionSubscribers.push(simpleStyles);
- simpleStyles.onToolDone = onToolDone;
-
- // Paragraph direct alignment buttons
- if (args.directParagraphStylingEnabled) {
- paragraphAlignment = new ParagraphAlignment(function (widget) {
- widget.placeAt(toolbar);
- widget.startup();
+ aboutDialog = new AboutDialog(function (dialog) {
+ aboutButton.onClick = function () {
+ dialog.startup();
+ dialog.show();
+ };
});
- sessionSubscribers.push(paragraphAlignment);
- paragraphAlignment.onToolDone = onToolDone;
+ aboutDialog.onToolDone = onToolDone;
+ aboutButton.placeAt(toolbar);
}
-
- // Paragraph Style Selector
- currentStyle = new CurrentStyle(function (widget) {
- widget.placeAt(toolbar);
- widget.startup();
- });
- sessionSubscribers.push(currentStyle);
- currentStyle.onToolDone = onToolDone;
-
- // Zoom Level Selector
- zoomCombo = new ZoomCombo(function (widget) {
- widget.placeAt(toolbar);
- widget.startup();
- });
- sessionSubscribers.push(zoomCombo);
- zoomCombo.onToolDone = onToolDone;
-
// Load
if (loadOdtFile) {
loadButton = new Button({
label: tr('Open'),
showLabel: false,
iconClass: 'dijitIcon dijitIconFolderOpen',
- style: {
- float: 'left'
- },
onClick: function () {
loadOdtFile();
}
@@ -205,10 +182,8 @@ define("webodf/editor/Tools", [
saveButton = new Button({
label: tr('Save'),
showLabel: false,
+ disabled: true,
iconClass: 'dijitEditorIcon dijitEditorIconSave',
- style: {
- float: 'left'
- },
onClick: function () {
saveOdtFile();
onToolDone();
@@ -217,56 +192,96 @@ define("webodf/editor/Tools", [
saveButton.placeAt(toolbar);
}
- // Format menu
- formatDropDownMenu = new DropDownMenu({});
- paragraphStylesMenuItem = new MenuItem({
- label: tr("Paragraph...")
- });
- formatDropDownMenu.addChild(paragraphStylesMenuItem);
-
- paragraphStylesDialog = new ParagraphStylesDialog(function (dialog) {
- paragraphStylesMenuItem.onClick = function () {
- if (editorSession) {
- dialog.startup();
- dialog.show();
+ // SaveAs
+ if (saveAsOdtFile) {
+ saveAsButton = new Button({
+ label: tr('Save as...'),
+ showLabel: false,
+ disabled: true,
+ iconClass: 'webodfeditor-dijitSaveAsIcon',
+ onClick: function () {
+ saveAsOdtFile();
+ onToolDone();
}
- };
- });
- sessionSubscribers.push(paragraphStylesDialog);
- paragraphStylesDialog.onToolDone = onToolDone;
+ });
+ saveAsButton.placeAt(toolbar);
+ }
- if (args.hyperlinkEditingEnabled) {
- editHyperlinks = new EditHyperlinks(function (widget) {
- widget.placeAt(toolbar);
- widget.startup();
+ // Download
+ if (downloadOdtFile) {
+ downloadButton = new Button({
+ label: tr('Download'),
+ showLabel: true,
+ disabled: true,
+ style: {
+ float: 'right'
+ },
+ onClick: function () {
+ downloadOdtFile();
+ onToolDone();
+ }
});
- sessionSubscribers.push(editHyperlinks);
- editHyperlinks.onToolDone = onToolDone;
+ downloadButton.placeAt(toolbar);
}
- formatMenuButton = new DropDownButton({
- dropDown: formatDropDownMenu,
- label: tr('Format'),
- iconClass: "dijitIconEditTask",
- style: {
- float: 'left'
- }
- });
- formatMenuButton.placeAt(toolbar);
+ // Format menu
+ if (args.paragraphStyleEditingEnabled) {
+ formatDropDownMenu = new DropDownMenu({});
+ paragraphStylesMenuItem = new MenuItem({
+ label: tr("Paragraph...")
+ });
+ formatDropDownMenu.addChild(paragraphStylesMenuItem);
- if (args.imageInsertingEnabled) {
- imageInserter = new ImageInserter(function (widget) {
- widget.placeAt(toolbar);
- widget.startup();
+ paragraphStylesDialog = new ParagraphStylesDialog(function (dialog) {
+ paragraphStylesMenuItem.onClick = function () {
+ if (editorSession) {
+ dialog.startup();
+ dialog.show();
+ }
+ };
});
- sessionSubscribers.push(imageInserter);
- imageInserter.onToolDone = onToolDone;
+ sessionSubscribers.push(paragraphStylesDialog);
+ paragraphStylesDialog.onToolDone = onToolDone;
+
+ formatMenuButton = new DropDownButton({
+ dropDown: formatDropDownMenu,
+ disabled: true,
+ label: tr('Format'),
+ iconClass: "dijitIconEditTask"
+ });
+ formatMenuButton.placeAt(toolbar);
}
+ // Undo/Redo
+ createTool(UndoRedoMenu, args.undoRedoEnabled);
+
+ // Add annotation
+ createTool(AnnotationControl, args.annotationsEnabled);
+
+ // Simple Style Selector [B, I, U, S]
+ createTool(SimpleStyles, args.directTextStylingEnabled);
+
+ // Paragraph direct alignment buttons
+ createTool(ParagraphAlignment, args.directParagraphStylingEnabled);
+
+ // Paragraph Style Selector
+ createTool(CurrentStyle, args.paragraphStyleSelectingEnabled);
+
+ // Zoom Level Selector
+ createTool(ZoomSlider, args.zoomingEnabled);
+
+ // hyper links
+ createTool(EditHyperlinks, args.hyperlinkEditingEnabled);
+
+ // image insertion
+ createTool(ImageInserter, args.imageInsertingEnabled);
+
+ // close button
if (close) {
closeButton = new Button({
label: tr('Close'),
showLabel: false,
+ disabled: true,
iconClass: 'dijitEditorIcon dijitEditorIconCancel',
style: {
float: 'right'
@@ -277,7 +292,24 @@ define("webodf/editor/Tools", [
});
closeButton.placeAt(toolbar);
}
- toolbar.startup();
+
+ // This is an internal hook for debugging/testing.
+ // Yes, you discovered something interesting. But:
+ // Do NOT rely on it, it will not be supported and can and will change in any version.
+ // It is not officially documented for a reason. A real plugin system is only on the wishlist
+ // so far, please file your suggestions/needs at the official WebODF issue system.
+ // You have been warned.
+ if (window.wodo_plugins) {
+ window.wodo_plugins.forEach(function (plugin) {
+ runtime.log("Creating plugin: "+plugin.id);
+ require([plugin.id], function (Plugin) {
+ runtime.log("Creating as tool now: "+plugin.id);
+ createTool(Plugin, true, plugin.config);
+ });
+ });
+
+ }
+
setEditorSession(editorSession);
});
};
diff --git a/js/3rdparty/webodf/editor/backend/ServerFactory.js b/js/3rdparty/webodf/editor/backend/ServerFactory.js
new file mode 100644
index 00000000..67340de8
--- /dev/null
+++ b/js/3rdparty/webodf/editor/backend/ServerFactory.js
@@ -0,0 +1,50 @@
+/**
+ * Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
+ *
+ * @licstart
+ * This file is part of WebODF.
+ *
+ * WebODF is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License (GNU AGPL)
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * WebODF is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with WebODF. If not, see <http://www.gnu.org/licenses/>.
+ * @licend
+ *
+ * @source: http://www.webodf.org/
+ * @source: https://github.com/kogmbh/WebODF/
+ */
+
+/*global ops, SessionList*/
+/*jslint emptyblock: true, unparam: true*/
+
+/**
+ * @interface
+ */
+function ServerFactory() {"use strict"; }
+
+/**
+ * @return {!ops.Server}
+ */
+ServerFactory.prototype.createServer = function () {"use strict"; };
+
+/**
+ * @param {!string} sessionId
+ * @param {!string} memberId
+ * @param {!ops.Server} server
+ * @return {!SessionBackend}
+ */
+ServerFactory.prototype.createSessionBackend = function (sessionId, memberId, server) {"use strict"; };
+
+/**
+ * @param {!ops.Server} server
+ * @return {!SessionList}
+ */
+ServerFactory.prototype.createSessionList = function (server) {"use strict"; };
diff --git a/js/3rdparty/webodf/editor/server/pullbox/OperationRouter.js b/js/3rdparty/webodf/editor/backend/pullbox/OperationRouter.js
index de24b50f..145368d8 100644
--- a/js/3rdparty/webodf/editor/server/pullbox/OperationRouter.js
+++ b/js/3rdparty/webodf/editor/backend/pullbox/OperationRouter.js
@@ -1,5 +1,4 @@
/**
- * @license
* Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
*
* @licstart
@@ -23,9 +22,9 @@
* @source: https://github.com/kogmbh/WebODF/
*/
-/*global runtime, ops*/
+/*global define, runtime, core, ops*/
-define("webodf/editor/server/pullbox/OperationRouter", [], function () {
+define("webodf/editor/backend/pullbox/OperationRouter", [], function () {
"use strict";
// TODO: these eventid strings should be defined at OperationRouter interface
@@ -55,7 +54,6 @@ define("webodf/editor/server/pullbox/OperationRouter", [], function () {
* @implements ops.OperationRouter
*/
return function PullBoxOperationRouter(sessionId, memberId, server, odfContainer, errorCallback) {
- "use strict";
var operationFactory,
/**@type{function(!ops.Operation):boolean}*/
@@ -82,12 +80,8 @@ define("webodf/editor/server/pullbox/OperationRouter", [], function () {
unplayedServerOpspecQueue = [],
/** @type {!Array.<!Function>} sync request callbacks which should be called after the received ops have been applied server */
uncalledSyncRequestCallbacksQueue = [],
- /** @type {!Array.<!function(!boolean):undefined>} ops created since the last sync call to the server */
- hasLocalUnsyncedOpsStateSubscribers = [],
/**@type{!boolean}*/
hasLocalUnsyncedOps = false,
- /** @type {!Array.<!function(!boolean):undefined>} */
- hasSessionHostConnectionStateSubscribers = [],
/**@type{!boolean}*/
hasSessionHostConnection = true,
eventNotifier = new core.EventNotifier([
@@ -109,8 +103,7 @@ define("webodf/editor/server/pullbox/OperationRouter", [], function () {
* @return {undefined}
*/
function updateHasLocalUnsyncedOpsState() {
- var i,
- hasLocalUnsyncedOpsNow = (unsyncedClientOpspecQueue.length > 0);
+ var hasLocalUnsyncedOpsNow = (unsyncedClientOpspecQueue.length > 0);
// no change?
if (hasLocalUnsyncedOps === hasLocalUnsyncedOpsNow) {
@@ -126,8 +119,6 @@ define("webodf/editor/server/pullbox/OperationRouter", [], function () {
* @return {undefined}
*/
function updateHasSessionHostConnectionState(hasConnection) {
- var i;
-
// no change?
if (hasSessionHostConnection === hasConnection) {
return;
@@ -150,14 +141,14 @@ define("webodf/editor/server/pullbox/OperationRouter", [], function () {
isPlayingUnplayedServerOpSpecs = false;
// take start time
- startTime = (new Date()).getTime();
+ startTime = Date.now();
eventNotifier.emit(ops.OperationRouter.signalProcessingBatchStart, {});
// apply as much as possible in the given time
while (unplayedServerOpspecQueue.length > 0) {
// time over?
- if ((new Date().getTime()) - startTime > replayTime) {
+ if (Date.now() - startTime > replayTime) {
break;
}
@@ -239,14 +230,14 @@ define("webodf/editor/server/pullbox/OperationRouter", [], function () {
}
// store transformed server ops
- for (i = 0; i < transformResult.opsB.length; i += 1) {
- unplayedServerOpspecQueue.push(transformResult.opsB[i].spec());
+ for (i = 0; i < transformResult.opSpecsB.length; i += 1) {
+ unplayedServerOpspecQueue.push(transformResult.opSpecsB[i]);
}
// store opspecs of all transformed client opspecs
unsyncedClientOpspecQueue = [];
- for (i = 0; i < transformResult.opsA.length; i += 1) {
- unsyncedClientOpspecQueue.push(transformResult.opsA[i].spec());
+ for (i = 0; i < transformResult.opSpecsA.length; i += 1) {
+ unsyncedClientOpspecQueue.push(transformResult.opSpecsA[i]);
}
return true;
@@ -366,11 +357,12 @@ runtime.log("OperationRouter: sending sync_ops call");
response.error === "ENOMEMBER" ? "notMemberOfSession":
"unknownServerReply"
);
- return;
} else {
hasError = true;
runtime.log("Unexpected result on sync-ops call: "+response.result);
errorCallback("unknownServerReply");
+ }
+ if (hasError) {
return;
}
@@ -453,7 +445,7 @@ runtime.log("OperationRouter: opsSync requested for pushing");
runtime.log("OperationRouter: instant opsSync requested");
isInstantSyncRequested = true;
syncOps();
- };
+ }
this.requestReplay = function (done_cb) {
requestInstantOpsSync(done_cb);
@@ -467,7 +459,6 @@ runtime.log("OperationRouter: instant opsSync requested");
*/
this.setOperationFactory = function (f) {
operationFactory = f;
- operationTransformer.setOperationFactory(f);
};
/**
@@ -488,7 +479,7 @@ runtime.log("OperationRouter: instant opsSync requested");
*/
this.push = function (operations) {
var i, op, opspec,
- timestamp = (new Date()).getTime();
+ timestamp = Date.now();
if (hasError) {
return;
@@ -507,7 +498,7 @@ runtime.log("OperationRouter: instant opsSync requested");
op = operations[i];
opspec = op.spec();
- // note if any local ops modified
+ // note if any local ops modified
hasPushedModificationOps = hasPushedModificationOps || op.isEdit;
// add timestamp TODO: improve the useless recreation of the op
diff --git a/js/3rdparty/webodf/editor/server/pullbox/Server.js b/js/3rdparty/webodf/editor/backend/pullbox/Server.js
index 9f0b2551..be0ba53c 100644
--- a/js/3rdparty/webodf/editor/server/pullbox/Server.js
+++ b/js/3rdparty/webodf/editor/backend/pullbox/Server.js
@@ -1,5 +1,4 @@
/**
- * @license
* Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
*
* @licstart
@@ -23,9 +22,9 @@
* @source: https://github.com/kogmbh/WebODF/
*/
-/*global XMLHttpRequest, runtime, core, ops*/
+/*global define, runtime, core, XMLHttpRequest*/
-define("webodf/editor/server/pullbox/Server", [], function () {
+define("webodf/editor/backend/pullbox/Server", [], function () {
"use strict";
runtime.loadClass("core.Base64");
@@ -45,7 +44,7 @@ define("webodf/editor/server/pullbox/Server", [], function () {
args = args || {};
args.url = args.url || "/WSER";
- args.sessionStateToFileUrl = args.sessionStateToFileUrl || "/SS2F"
+ args.sessionStateToFileUrl = args.sessionStateToFileUrl || "/SS2F";
this.getGenesisUrl = function (sessionId) {
return "/session/" + sessionId + "/genesis";
@@ -76,20 +75,16 @@ define("webodf/editor/server/pullbox/Server", [], function () {
}
}
}
- function handleTimeout() {
- runtime.log("Timeout on call to server.");
- cbError(0, xhr.statusText);
- }
- runtime.log("Sending message to server: "+messageString);
+ runtime.log("Sending message to server: " + messageString);
// create body data for request from metadata and payload
// do the request
xhr.open('POST', args.url, true);
- xhr.setRequestHeader("Content-type","application/json");
if (token) {
xhr.setRequestHeader("requesttoken", token);
}
+ xhr.setRequestHeader("content-type", "application/json");
xhr.onreadystatechange = handleResult;
xhr.timeout = serverCallTimeout;
// TODO: seems handleResult is called on timeout as well, with xhr.status === 0
@@ -97,7 +92,7 @@ define("webodf/editor/server/pullbox/Server", [], function () {
try {
xhr.send(messageString);
} catch (e) {
- runtime.log("Problem with calling server: " + e + " " + data);
+ runtime.log("Problem with calling server: " + e);
cbError(-1, e.message);
}
}
diff --git a/js/3rdparty/webodf/editor/server/pullbox/ServerFactory.js b/js/3rdparty/webodf/editor/backend/pullbox/ServerFactory.js
index 626b5ed8..0ceb3a15 100644
--- a/js/3rdparty/webodf/editor/server/pullbox/ServerFactory.js
+++ b/js/3rdparty/webodf/editor/backend/pullbox/ServerFactory.js
@@ -1,5 +1,4 @@
/**
- * @license
* Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
*
* @licstart
@@ -25,11 +24,11 @@
/*global define, document, require, runtime, ops */
-define("webodf/editor/server/pullbox/ServerFactory", [
- "webodf/editor/server/pullbox/Server",
- "webodf/editor/server/pullbox/OperationRouter",
- "webodf/editor/server/pullbox/SessionList"],
- function (PullBoxServer, PullBoxOperationRouter, PullBoxSessionList) {
+define("webodf/editor/backend/pullbox/ServerFactory", [
+ "webodf/editor/backend/pullbox/Server",
+ "webodf/editor/backend/pullbox/SessionBackend",
+ "webodf/editor/backend/pullbox/SessionList"],
+ function (PullBoxServer, PullBoxSessionBackend, PullBoxSessionList) {
"use strict";
/**
@@ -40,8 +39,8 @@ define("webodf/editor/server/pullbox/ServerFactory", [
this.createServer = function (args) {
return new PullBoxServer(args);
};
- this.createOperationRouter = function (sid, mid, server, odfContainer, errorCallback) {
- return new PullBoxOperationRouter(sid, mid, server, odfContainer, errorCallback);
+ this.createSessionBackend = function (sid, mid, server) {
+ return new PullBoxSessionBackend(sid, mid, server);
};
this.createSessionList = function (server) {
return new PullBoxSessionList(server);
diff --git a/js/3rdparty/webodf/editor/backend/pullbox/SessionBackend.js b/js/3rdparty/webodf/editor/backend/pullbox/SessionBackend.js
new file mode 100644
index 00000000..1ea866f2
--- /dev/null
+++ b/js/3rdparty/webodf/editor/backend/pullbox/SessionBackend.js
@@ -0,0 +1,64 @@
+/**
+ * Copyright (C) 2014 KO GmbH <copyright@kogmbh.com>
+ *
+ * @licstart
+ * This file is part of WebODF.
+ *
+ * WebODF is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License (GNU AGPL)
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * WebODF is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with WebODF. If not, see <http://www.gnu.org/licenses/>.
+ * @licend
+ *
+ * @source: http://www.webodf.org/
+ * @source: https://github.com/kogmbh/WebODF/
+ */
+
+/*global define, ops*/
+
+
+define("webodf/editor/backend/pullbox/SessionBackend", [
+ "webodf/editor/backend/pullbox/OperationRouter"],
+ function (PullBoxOperationRouter) {
+ "use strict";
+
+ /**
+ * @constructor
+ * @implements SessionBackend
+ */
+ function PullBoxSessionBackend(sessionId, memberId, server) {
+
+ /**
+ * @return {!string}
+ */
+ this.getMemberId = function () {
+ return memberId;
+ };
+
+ /**
+ * @param {!odf.OdfContainer} odfContainer
+ * @param {!function(!Object)} errorCallback
+ * @return {!ops.OperationRouter}
+ */
+ this.createOperationRouter = function (odfContainer, errorCallback) {
+ return new PullBoxOperationRouter(sessionId, memberId, server, odfContainer, errorCallback);
+ };
+
+ /**
+ * @return {!string}
+ */
+ this.getGenesisUrl = function () {
+ return server.getGenesisUrl(sessionId);
+ };
+ }
+
+ return PullBoxSessionBackend;
+});
diff --git a/js/3rdparty/webodf/editor/server/pullbox/SessionList.js b/js/3rdparty/webodf/editor/backend/pullbox/SessionList.js
index 68b96169..fa8ccd09 100644
--- a/js/3rdparty/webodf/editor/server/pullbox/SessionList.js
+++ b/js/3rdparty/webodf/editor/backend/pullbox/SessionList.js
@@ -1,5 +1,4 @@
/**
- * @license
* Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
*
* @licstart
@@ -25,7 +24,7 @@
/*global define, ops, runtime */
-define("webodf/editor/server/pullbox/SessionList", [], function () {
+define("webodf/editor/backend/pullbox/SessionList", [], function () {
"use strict";
return function PullBoxSessionList(server) {
@@ -36,13 +35,13 @@ define("webodf/editor/server/pullbox/SessionList", [], function () {
function onSessionData(sessionData) {
var i,
- isNew = ! cachedSessionData.hasOwnProperty(sessionData.id);
+ isNew = !cachedSessionData.hasOwnProperty(sessionData.id);
// extend data with download url
sessionData.fileUrl = "/session/" + sessionData.id + "/last/" + sessionData.filename;
// cache
cachedSessionData[sessionData.id] = sessionData;
- runtime.log("get session data for:"+sessionData.title+", is new:"+isNew);
+ runtime.log("get session data for:" + sessionData.title + ", is new:" + isNew);
for (i = 0; i < subscribers.length; i += 1) {
if (isNew) {
@@ -70,7 +69,7 @@ define("webodf/editor/server/pullbox/SessionList", [], function () {
server.call({
command: "query_sessiondata_list"
- }, function(responseData) {
+ }, function (responseData) {
var response = runtime.fromJson(responseData),
sessionList, i,
unupdatedSessions = {};
@@ -92,7 +91,7 @@ define("webodf/editor/server/pullbox/SessionList", [], function () {
// add/update with all delivered sessions
sessionList = response.sessiondata_list;
- for (i = 0; i < sessionList.length; i++) {
+ for (i = 0; i < sessionList.length; i += 1) {
if (unupdatedSessions.hasOwnProperty(sessionList[i].id)) {
delete unupdatedSessions[sessionList[i].id];
}
@@ -111,8 +110,8 @@ define("webodf/editor/server/pullbox/SessionList", [], function () {
} else {
runtime.log("Meh, sessionlist data broken: " + responseData);
}
- }, function() {
- // ignore error for now
+ }, function (e) {
+ runtime.log(e);
});
}
@@ -136,7 +135,7 @@ define("webodf/editor/server/pullbox/SessionList", [], function () {
this.unsubscribe = function (subscriber) {
var i;
- for (i=0; i<subscribers.length; i+=1) {
+ for (i = 0; i < subscribers.length; i += 1) {
if (subscribers[i] === subscriber) {
break;
}
@@ -145,7 +144,7 @@ define("webodf/editor/server/pullbox/SessionList", [], function () {
runtime.assert((i < subscribers.length),
"tried to unsubscribe when not subscribed.");
- subscribers.splice(i,1);
+ subscribers.splice(i, 1);
};
this.setUpdatesEnabled = function (enabled) {
diff --git a/js/3rdparty/webodf/editor/server/ServerFactory.js b/js/3rdparty/webodf/editor/server/ServerFactory.js
deleted file mode 100644
index 23680445..00000000
--- a/js/3rdparty/webodf/editor/server/ServerFactory.js
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * @license
- * Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
- *
- * @licstart
- * The JavaScript code in this page is free software: you can redistribute it
- * and/or modify it under the terms of the GNU Affero General Public License
- * (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version. The code is distributed
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this code. If not, see <http://www.gnu.org/licenses/>.
- *
- * As additional permission under GNU AGPL version 3 section 7, you
- * may distribute non-source (e.g., minimized or compacted) forms of
- * that code without the copy of the GNU GPL normally required by
- * section 4, provided you include this license notice and a URL
- * through which recipients can access the Corresponding Source.
- *
- * As a special exception to the AGPL, any HTML file which merely makes function
- * calls to this code, and for that purpose includes it by reference shall be
- * deemed a separate work for copyright law purposes. In addition, the copyright
- * holders of this code give you permission to combine this code with free
- * software libraries that are released under the GNU LGPL. You may copy and
- * distribute such a system following the terms of the GNU AGPL for this code
- * and the LGPL for the libraries. If you modify this code, you may extend this
- * exception to your version of the code, but you are not obligated to do so.
- * If you do not wish to do so, delete this exception statement from your
- * version.
- *
- * This license applies to this entire compilation.
- * @licend
- * @source: http://www.webodf.org/
- * @source: https://github.com/kogmbh/WebODF/
- */
-
-/*global ops, SessionList*/
-
-/**
- * @interface
- */
-function ServerFactory() {"use strict"; };
-
-/**
- * @return {!ops.Server}
- */
-ServerFactory.prototype.createServer = function () {"use strict"; };
-
-/**
- * @param {!string} sessionId
- * @param {!string} memberId
- * @param {!ops.Server} server
- * @param {!odf.OdfContainer} odfContainer TODO: needed for pullbox writing to server at end, find better solution
- * @param {!function(!Object)} errorCallback
- * @return {!ops.OperationRouter}
- */
-ServerFactory.prototype.createOperationRouter = function (sessionId, memberId, server, odfContainer, errorCallback) {"use strict"; };
-
-/**
- * @param {!ops.Server} server
- * @return {!SessionList}
- */
-ServerFactory.prototype.createSessionList = function (server) {"use strict"; };
diff --git a/js/3rdparty/webodf/editor/widgets/aboutDialog.js b/js/3rdparty/webodf/editor/widgets/aboutDialog.js
new file mode 100644
index 00000000..a42463d2
--- /dev/null
+++ b/js/3rdparty/webodf/editor/widgets/aboutDialog.js
@@ -0,0 +1,67 @@
+/**
+ * Copyright (C) 2014 KO GmbH <copyright@kogmbh.com>
+ *
+ * @licstart
+ * This file is part of WebODF.
+ *
+ * WebODF is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License (GNU AGPL)
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * WebODF is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with WebODF. If not, see <http://www.gnu.org/licenses/>.
+ * @licend
+ *
+ * @source: http://www.webodf.org/
+ * @source: https://github.com/kogmbh/WebODF/
+ */
+
+/*global define, dojo, runtime, webodf */
+
+define("webodf/editor/widgets/aboutDialog", ["dijit/Dialog"], function (Dialog) {
+ "use strict";
+
+ var editorBase = dojo.config && dojo.config.paths && dojo.config.paths["webodf/editor"],
+ kogmbhImageUrl = editorBase + "/images/kogmbh.png";
+
+ runtime.assert(editorBase, "webodf/editor path not defined in dojoConfig");
+
+ return function AboutDialog(callback) {
+ var self = this;
+
+ /*jslint emptyblock: true*/
+ this.onToolDone = function () {};
+ /*jslint emptyblock: false*/
+
+ function init() {
+ // TODO: translation, once the the about text has been decided about
+ var dialog;
+
+ // Dialog
+ dialog = new Dialog({
+ style: "width: 400px",
+ title: "Wodo.TextEditor",
+ autofocus: false,
+ content: "<p>Wodo.TextEditor is an easy to use Javascript-based plugin for webpages. " +
+ "It provides a stand-alone editor for text documents in the OpenDocument Format. " +
+ "Done with WebODF.</p>" +
+ //TODO: add proper link directly to page about the component
+ "<p>Learn more on the <a href=\"http://webodf.org/\" target=\"_blank\">WebODF website</a>.</p>" +
+ "<p>Version " + webodf.Version + "</p>" +
+ "<p>Made by <a href=\"http://kogmbh.com\" target=\"_blank\"><img src=\"" + kogmbhImageUrl + "\" width=\"172\" height=\"40\" alt=\"KO GmbH\" style=\"vertical-align: top;\"></a>.</p>"
+ });
+ dialog.onHide = function () { self.onToolDone(); };
+
+ callback(dialog);
+ }
+
+ init();
+ };
+
+});
diff --git a/js/3rdparty/webodf/editor/widgets/annotation.js b/js/3rdparty/webodf/editor/widgets/annotation.js
index cf2d506c..9f0e4319 100644
--- a/js/3rdparty/webodf/editor/widgets/annotation.js
+++ b/js/3rdparty/webodf/editor/widgets/annotation.js
@@ -1,42 +1,28 @@
/**
- * @license
* Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
*
* @licstart
- * The JavaScript code in this page is free software: you can redistribute it
- * and/or modify it under the terms of the GNU Affero General Public License
- * (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version. The code is distributed
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
+ * This file is part of WebODF.
*
- * You should have received a copy of the GNU Affero General Public License
- * along with this code. If not, see <http://www.gnu.org/licenses/>.
- *
- * As additional permission under GNU AGPL version 3 section 7, you
- * may distribute non-source (e.g., minimized or compacted) forms of
- * that code without the copy of the GNU GPL normally required by
- * section 4, provided you include this license notice and a URL
- * through which recipients can access the Corresponding Source.
+ * WebODF is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License (GNU AGPL)
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
*
- * As a special exception to the AGPL, any HTML file which merely makes function
- * calls to this code, and for that purpose includes it by reference shall be
- * deemed a separate work for copyright law purposes. In addition, the copyright
- * holders of this code give you permission to combine this code with free
- * software libraries that are released under the GNU LGPL. You may copy and
- * distribute such a system following the terms of the GNU AGPL for this code
- * and the LGPL for the libraries. If you modify this code, you may extend this
- * exception to your version of the code, but you are not obligated to do so.
- * If you do not wish to do so, delete this exception statement from your
- * version.
+ * WebODF is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
*
- * This license applies to this entire compilation.
+ * You should have received a copy of the GNU Affero General Public License
+ * along with WebODF. If not, see <http://www.gnu.org/licenses/>.
* @licend
+ *
* @source: http://www.webodf.org/
* @source: https://github.com/kogmbh/WebODF/
*/
-/*global define, require */
+/*global define, require, runtime, gui */
define("webodf/editor/widgets/annotation", [
"dijit/form/Button"],
@@ -46,6 +32,7 @@ define("webodf/editor/widgets/annotation", [
var AnnotationControl = function (callback) {
var self = this,
+ editorSession,
widget = {},
addAnnotationButton,
annotationController;
@@ -83,21 +70,26 @@ define("webodf/editor/widgets/annotation", [
}
this.setEditorSession = function (session) {
- if (annotationController) {
+ if (editorSession) {
annotationController.unsubscribe(gui.AnnotationController.annotatableChanged, onAnnotatableChanged);
}
- annotationController = session && session.sessionController.getAnnotationController();
- if (annotationController) {
+
+ editorSession = session;
+ if (editorSession) {
+ annotationController = editorSession.sessionController.getAnnotationController();
annotationController.subscribe(gui.AnnotationController.annotatableChanged, onAnnotatableChanged);
+ onAnnotatableChanged(annotationController.isAnnotatable());
+ } else {
+ addAnnotationButton.setAttribute('disabled', true);
}
- onAnnotatableChanged(annotationController && annotationController.isAnnotatable());
};
+ /*jslint emptyblock: true*/
this.onToolDone = function () {};
+ /*jslint emptyblock: false*/
callback(widget);
};
return AnnotationControl;
- }
-);
+ });
diff --git a/js/3rdparty/webodf/editor/widgets/dialogWidgets/alignmentPane.js b/js/3rdparty/webodf/editor/widgets/dialogWidgets/alignmentPane.js
index 24136f05..80494296 100644
--- a/js/3rdparty/webodf/editor/widgets/dialogWidgets/alignmentPane.js
+++ b/js/3rdparty/webodf/editor/widgets/dialogWidgets/alignmentPane.js
@@ -1,50 +1,39 @@
/**
- * @license
* Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
*
* @licstart
- * The JavaScript code in this page is free software: you can redistribute it
- * and/or modify it under the terms of the GNU Affero General Public License
- * (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version. The code is distributed
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
+ * This file is part of WebODF.
*
- * You should have received a copy of the GNU Affero General Public License
- * along with this code. If not, see <http://www.gnu.org/licenses/>.
- *
- * As additional permission under GNU AGPL version 3 section 7, you
- * may distribute non-source (e.g., minimized or compacted) forms of
- * that code without the copy of the GNU GPL normally required by
- * section 4, provided you include this license notice and a URL
- * through which recipients can access the Corresponding Source.
+ * WebODF is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License (GNU AGPL)
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
*
- * As a special exception to the AGPL, any HTML file which merely makes function
- * calls to this code, and for that purpose includes it by reference shall be
- * deemed a separate work for copyright law purposes. In addition, the copyright
- * holders of this code give you permission to combine this code with free
- * software libraries that are released under the GNU LGPL. You may copy and
- * distribute such a system following the terms of the GNU AGPL for this code
- * and the LGPL for the libraries. If you modify this code, you may extend this
- * exception to your version of the code, but you are not obligated to do so.
- * If you do not wish to do so, delete this exception statement from your
- * version.
+ * WebODF is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
*
- * This license applies to this entire compilation.
+ * You should have received a copy of the GNU Affero General Public License
+ * along with WebODF. If not, see <http://www.gnu.org/licenses/>.
* @licend
+ *
* @source: http://www.webodf.org/
* @source: https://github.com/kogmbh/WebODF/
*/
/*global runtime,core,define,require,dijit */
-define("webodf/editor/widgets/dialogWidgets/alignmentPane", [], function () {
+define("webodf/editor/widgets/dialogWidgets/alignmentPane", [
+ "webodf/editor/widgets/dialogWidgets/idMangler"],
+function (IdMangler) {
"use strict";
runtime.loadClass("core.CSSUnits");
var AlignmentPane = function (callback) {
var self = this,
+ idMangler = new IdMangler(),
editorSession,
contentPane,
form;
@@ -67,10 +56,10 @@ define("webodf/editor/widgets/dialogWidgets/alignmentPane", [], function () {
s_textAlign;
if (style !== undefined) {
- s_topMargin = parseFloat(cssUnits.convertMeasure(style['fo:margin-top'], 'mm'));
- s_leftMargin = parseFloat(cssUnits.convertMeasure(style['fo:margin-left'], 'mm'));
- s_rightMargin = parseFloat(cssUnits.convertMeasure(style['fo:margin-right'], 'mm'));
- s_bottomMargin = parseFloat(cssUnits.convertMeasure(style['fo:margin-bottom'], 'mm'));
+ s_topMargin = cssUnits.convertMeasure(style['fo:margin-top'], 'mm');
+ s_leftMargin = cssUnits.convertMeasure(style['fo:margin-left'], 'mm');
+ s_rightMargin = cssUnits.convertMeasure(style['fo:margin-right'], 'mm');
+ s_bottomMargin = cssUnits.convertMeasure(style['fo:margin-bottom'], 'mm');
s_textAlign = style['fo:text-align'];
form.attr('value', {
@@ -91,7 +80,7 @@ define("webodf/editor/widgets/dialogWidgets/alignmentPane", [], function () {
}
};
- this.setEditorSession = function(session) {
+ this.setEditorSession = function (session) {
editorSession = session;
};
@@ -99,24 +88,24 @@ define("webodf/editor/widgets/dialogWidgets/alignmentPane", [], function () {
require([
"dojo",
"dojo/ready",
- "dojo/dom-construct",
"dijit/layout/ContentPane"],
- function (dojo, ready, domConstruct, ContentPane) {
+ function (dojo, ready, ContentPane) {
var editorBase = dojo.config && dojo.config.paths &&
dojo.config.paths['webodf/editor'];
- runtime.assert(editorBase, "webodf/editor path not defined in dojoConfig");
- ready(function () {
- contentPane = new ContentPane({
- title: runtime.tr("Alignment"),
- href: editorBase+"/widgets/dialogWidgets/alignmentPane.html",
- preload: true
+ runtime.assert(editorBase, "webodf/editor path not defined in dojoConfig");
+ ready(function () {
+ contentPane = new ContentPane({
+ title: runtime.tr("Alignment"),
+ href: editorBase+"/widgets/dialogWidgets/alignmentPane.html",
+ preload: true,
+ ioMethod: idMangler.ioMethod
+ });
+ contentPane.onLoad = function () {
+ form = idMangler.byId('alignmentPaneForm');
+ runtime.translateContent(form.domNode);
+ };
+ return cb();
});
- contentPane.onLoad = function () {
- form = dijit.byId('alignmentPaneForm');
- runtime.translateContent(form.domNode);
- };
- return cb();
- });
});
}
diff --git a/js/3rdparty/webodf/editor/widgets/dialogWidgets/editHyperlinkPane.html b/js/3rdparty/webodf/editor/widgets/dialogWidgets/editHyperlinkPane.html
index ad6b5a11..49bb1fa3 100644
--- a/js/3rdparty/webodf/editor/widgets/dialogWidgets/editHyperlinkPane.html
+++ b/js/3rdparty/webodf/editor/widgets/dialogWidgets/editHyperlinkPane.html
@@ -18,7 +18,7 @@
<label text-i18n="URL" for="linkUrl"></label><br/>
<input data-dojo-type="dijit/form/TextBox" id="linkUrl"
value="http://"
- data-dojo-props="trim:true"
+ data-dojo-props="trim:true, intermediateChanges:true"
name="linkUrl" />
</div>
<div>
diff --git a/js/3rdparty/webodf/editor/widgets/dialogWidgets/editHyperlinkPane.js b/js/3rdparty/webodf/editor/widgets/dialogWidgets/editHyperlinkPane.js
index d696e787..dbdd5fe2 100644
--- a/js/3rdparty/webodf/editor/widgets/dialogWidgets/editHyperlinkPane.js
+++ b/js/3rdparty/webodf/editor/widgets/dialogWidgets/editHyperlinkPane.js
@@ -1,37 +1,23 @@
/**
- * @license
* Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
*
* @licstart
- * The JavaScript code in this page is free software: you can redistribute it
- * and/or modify it under the terms of the GNU Affero General Public License
- * (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version. The code is distributed
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
+ * This file is part of WebODF.
*
- * You should have received a copy of the GNU Affero General Public License
- * along with this code. If not, see <http://www.gnu.org/licenses/>.
- *
- * As additional permission under GNU AGPL version 3 section 7, you
- * may distribute non-source (e.g., minimized or compacted) forms of
- * that code without the copy of the GNU GPL normally required by
- * section 4, provided you include this license notice and a URL
- * through which recipients can access the Corresponding Source.
+ * WebODF is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License (GNU AGPL)
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
*
- * As a special exception to the AGPL, any HTML file which merely makes function
- * calls to this code, and for that purpose includes it by reference shall be
- * deemed a separate work for copyright law purposes. In addition, the copyright
- * holders of this code give you permission to combine this code with free
- * software libraries that are released under the GNU LGPL. You may copy and
- * distribute such a system following the terms of the GNU AGPL for this code
- * and the LGPL for the libraries. If you modify this code, you may extend this
- * exception to your version of the code, but you are not obligated to do so.
- * If you do not wish to do so, delete this exception statement from your
- * version.
+ * WebODF is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
*
- * This license applies to this entire compilation.
+ * You should have received a copy of the GNU Affero General Public License
+ * along with WebODF. If not, see <http://www.gnu.org/licenses/>.
* @licend
+ *
* @source: http://www.webodf.org/
* @source: https://github.com/kogmbh/WebODF/
*/
@@ -40,9 +26,10 @@
define("webodf/editor/widgets/dialogWidgets/editHyperlinkPane", [
"dojo",
- "dijit/layout/ContentPane"],
+ "dijit/layout/ContentPane",
+ "webodf/editor/widgets/dialogWidgets/idMangler"],
- function (dojo, ContentPane) {
+ function (dojo, ContentPane, IdMangler) {
"use strict";
runtime.loadClass("core.CSSUnits");
@@ -50,9 +37,11 @@ define("webodf/editor/widgets/dialogWidgets/editHyperlinkPane", [
var EditHyperlinkPane = function () {
var self = this,
editorBase = dojo.config && dojo.config.paths && dojo.config.paths['webodf/editor'],
+ idMangler = new IdMangler(),
contentPane,
form,
displayTextField,
+ linkField,
initialValue;
runtime.assert(editorBase, "webodf/editor path not defined in dojoConfig");
@@ -75,17 +64,24 @@ define("webodf/editor/widgets/dialogWidgets/editHyperlinkPane", [
title: runtime.tr("editLink"),
href: editorBase+"/widgets/dialogWidgets/editHyperlinkPane.html",
preload: true,
+ ioMethod: idMangler.ioMethod,
onLoad : function () {
- form = dijit.byId('editHyperlinkPaneForm');
+ form = idMangler.byId('editHyperlinkPaneForm');
form.onSubmit = onSave;
- dijit.byId('cancelHyperlinkChangeButton').onClick = onCancel;
- displayTextField = dijit.byId('linkDisplayText');
+ idMangler.byId('cancelHyperlinkChangeButton').onClick = onCancel;
+ displayTextField = idMangler.byId('linkDisplayText');
+ linkField = idMangler.byId('linkUrl');
+ linkField.on("change", function(value) {
+ displayTextField.set('placeHolder', value);
+ });
+
runtime.translateContent(form.domNode);
if (initialValue) {
form.set('value', initialValue);
displayTextField.set('disabled', initialValue.isReadOnlyText);
initialValue = undefined;
}
+ displayTextField.set('placeHolder', linkField.value);
}
});
diff --git a/js/3rdparty/webodf/editor/widgets/dialogWidgets/fontEffectsPane.js b/js/3rdparty/webodf/editor/widgets/dialogWidgets/fontEffectsPane.js
index d766087f..eb049463 100644
--- a/js/3rdparty/webodf/editor/widgets/dialogWidgets/fontEffectsPane.js
+++ b/js/3rdparty/webodf/editor/widgets/dialogWidgets/fontEffectsPane.js
@@ -1,48 +1,37 @@
/**
- * @license
* Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
*
* @licstart
- * The JavaScript code in this page is free software: you can redistribute it
- * and/or modify it under the terms of the GNU Affero General Public License
- * (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version. The code is distributed
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
+ * This file is part of WebODF.
*
- * You should have received a copy of the GNU Affero General Public License
- * along with this code. If not, see <http://www.gnu.org/licenses/>.
- *
- * As additional permission under GNU AGPL version 3 section 7, you
- * may distribute non-source (e.g., minimized or compacted) forms of
- * that code without the copy of the GNU GPL normally required by
- * section 4, provided you include this license notice and a URL
- * through which recipients can access the Corresponding Source.
+ * WebODF is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License (GNU AGPL)
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
*
- * As a special exception to the AGPL, any HTML file which merely makes function
- * calls to this code, and for that purpose includes it by reference shall be
- * deemed a separate work for copyright law purposes. In addition, the copyright
- * holders of this code give you permission to combine this code with free
- * software libraries that are released under the GNU LGPL. You may copy and
- * distribute such a system following the terms of the GNU AGPL for this code
- * and the LGPL for the libraries. If you modify this code, you may extend this
- * exception to your version of the code, but you are not obligated to do so.
- * If you do not wish to do so, delete this exception statement from your
- * version.
+ * WebODF is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
*
- * This license applies to this entire compilation.
+ * You should have received a copy of the GNU Affero General Public License
+ * along with WebODF. If not, see <http://www.gnu.org/licenses/>.
* @licend
+ *
* @source: http://www.webodf.org/
* @source: https://github.com/kogmbh/WebODF/
*/
/*global runtime,define,require,document,dijit */
-define("webodf/editor/widgets/dialogWidgets/fontEffectsPane", [], function () {
+define("webodf/editor/widgets/dialogWidgets/fontEffectsPane", [
+ "webodf/editor/widgets/dialogWidgets/idMangler"],
+function (IdMangler) {
"use strict";
var FontEffectsPane = function (callback) {
var self = this,
+ idMangler = new IdMangler(),
editorSession,
contentPane,
form,
@@ -117,35 +106,36 @@ define("webodf/editor/widgets/dialogWidgets/fontEffectsPane", [], function () {
};
+ /*jslint unparam: true*/
function init(cb) {
require([
"dojo",
"dojo/ready",
- "dojo/dom-construct",
"dijit/layout/ContentPane",
- "dojox/widget/ColorPicker",
+ "dojox/widget/ColorPicker", // referenced in fontEffectsPane.html
"webodf/editor/widgets/fontPicker"
- ], function (dojo, ready, domConstruct, ContentPane, ColorPicker, FontPicker) {
+ ], function (dojo, ready, ContentPane, ColorPicker, FontPicker) {
var editorBase = dojo.config && dojo.config.paths &&
dojo.config.paths['webodf/editor'];
runtime.assert(editorBase, "webodf/editor path not defined in dojoConfig");
ready(function () {
contentPane = new ContentPane({
title: runtime.tr("Font Effects"),
- href: editorBase+"/widgets/dialogWidgets/fontEffectsPane.html",
- preload: true
+ href: editorBase + "/widgets/dialogWidgets/fontEffectsPane.html",
+ preload: true,
+ ioMethod: idMangler.ioMethod
});
contentPane.onLoad = function () {
- var textColorTB = dijit.byId('textColorTB'),
- backgroundColorTB = dijit.byId('backgroundColorTB');
+ var textColorTB = idMangler.byId('textColorTB'),
+ backgroundColorTB = idMangler.byId('backgroundColorTB');
- form = dijit.byId('fontEffectsPaneForm');
+ form = idMangler.byId('fontEffectsPaneForm');
runtime.translateContent(form.domNode);
- preview = document.getElementById('previewText');
- textColorPicker = dijit.byId('textColorPicker');
- backgroundColorPicker = dijit.byId('backgroundColorPicker');
+ preview = idMangler.getElementById('previewText');
+ textColorPicker = idMangler.byId('textColorPicker');
+ backgroundColorPicker = idMangler.byId('backgroundColorPicker');
// Bind dojox widgets' values to invisible form elements, for easy parsing
textColorPicker.onChange = function (value) {
@@ -157,7 +147,7 @@ define("webodf/editor/widgets/dialogWidgets/fontEffectsPane", [], function () {
fontPicker = new FontPicker(function (picker) {
picker.widget().startup();
- document.getElementById('fontPicker').appendChild(picker.widget().domNode);
+ idMangler.getElementById('fontPicker').appendChild(picker.widget().domNode);
picker.widget().name = 'fontName';
picker.setEditorSession(editorSession);
});
@@ -191,6 +181,7 @@ define("webodf/editor/widgets/dialogWidgets/fontEffectsPane", [], function () {
});
});
}
+ /*jslint unparam: false*/
this.setEditorSession = function(session) {
editorSession = session;
diff --git a/js/3rdparty/webodf/editor/widgets/dialogWidgets/idMangler.js b/js/3rdparty/webodf/editor/widgets/dialogWidgets/idMangler.js
new file mode 100644
index 00000000..4118b146
--- /dev/null
+++ b/js/3rdparty/webodf/editor/widgets/dialogWidgets/idMangler.js
@@ -0,0 +1,90 @@
+/**
+ * Copyright (C) 2014 KO GmbH <copyright@kogmbh.com>
+ *
+ * @licstart
+ * This file is part of WebODF.
+ *
+ * WebODF is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License (GNU AGPL)
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * WebODF is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with WebODF. If not, see <http://www.gnu.org/licenses/>.
+ * @licend
+ *
+ * @source: http://www.webodf.org/
+ * @source: https://github.com/kogmbh/WebODF/
+ */
+
+/*global define, document, dojo, dijit */
+
+define("webodf/editor/widgets/dialogWidgets/idMangler", ["dojo", "dijit"], function (dojo, dijit) {
+ "use strict";
+ var instanceCount = 0;
+
+ /**
+ * Mangles html id attributes and associated references so that the same HTML code can be copied into
+ * a page multiple times without identifier clashes. This also provides helper functions for retrieving
+ * these now-mangled identifiers.
+ * @constructor
+ */
+ function IdMangler() {
+ var suffix;
+
+ /**
+ * Returns the supplied text with identifiers mangled
+ * @param {!string} text
+ * @return {!string}
+ */
+ function mangleIds(text) {
+ /*jslint regexp: true*/
+ var newText = text.replace(/((id|for|data-dojo-id)\s*=\s*["'][^"']+)/g, "$1" + suffix);
+ /*jslint regexp: false*/
+ return newText;
+ }
+ this.mangleIds = mangleIds;
+
+ /**
+ * Replacement method for ContentPane's ioMethod
+ * @return {*} See http://dojotoolkit.org/api/?qs=1.9/dojo/_base/xhr#1_9dojo__base_xhr_get for return details
+ */
+ this.ioMethod = function() {
+ var args = Array.prototype.slice.call(arguments, 0);
+ return dojo.xhr.get.apply(dojo, args).then(function(html) {
+ return mangleIds(html);
+ });
+ };
+
+ /**
+ * Replacement for dijit.byId
+ * @param {!string} id
+ * @return {*} See http://dojotoolkit.org/api/?qs=1.9/dojo/_base/xhr#1_9dijit_registry_byId for return details
+ */
+ this.byId = function(id) {
+ return dijit.byId(id + suffix);
+ };
+
+ /**
+ * Replacement for document.getElementById
+ * @param {!string} id
+ * @return {HTMLElement|*}
+ */
+ this.getElementById = function(id) {
+ return document.getElementById(id + suffix);
+ };
+
+ function init() {
+ suffix = "_" + instanceCount;
+ instanceCount += 1;
+ }
+ init();
+ }
+
+ return IdMangler;
+});
diff --git a/js/3rdparty/webodf/editor/widgets/editHyperlinks.js b/js/3rdparty/webodf/editor/widgets/editHyperlinks.js
index c1fc8401..6622ebae 100644
--- a/js/3rdparty/webodf/editor/widgets/editHyperlinks.js
+++ b/js/3rdparty/webodf/editor/widgets/editHyperlinks.js
@@ -1,42 +1,28 @@
/**
- * @license
* Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
*
* @licstart
- * The JavaScript code in this page is free software: you can redistribute it
- * and/or modify it under the terms of the GNU Affero General Public License
- * (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version. The code is distributed
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
+ * This file is part of WebODF.
*
- * You should have received a copy of the GNU Affero General Public License
- * along with this code. If not, see <http://www.gnu.org/licenses/>.
- *
- * As additional permission under GNU AGPL version 3 section 7, you
- * may distribute non-source (e.g., minimized or compacted) forms of
- * that code without the copy of the GNU GPL normally required by
- * section 4, provided you include this license notice and a URL
- * through which recipients can access the Corresponding Source.
+ * WebODF is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License (GNU AGPL)
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
*
- * As a special exception to the AGPL, any HTML file which merely makes function
- * calls to this code, and for that purpose includes it by reference shall be
- * deemed a separate work for copyright law purposes. In addition, the copyright
- * holders of this code give you permission to combine this code with free
- * software libraries that are released under the GNU LGPL. You may copy and
- * distribute such a system following the terms of the GNU AGPL for this code
- * and the LGPL for the libraries. If you modify this code, you may extend this
- * exception to your version of the code, but you are not obligated to do so.
- * If you do not wish to do so, delete this exception statement from your
- * version.
+ * WebODF is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
*
- * This license applies to this entire compilation.
+ * You should have received a copy of the GNU Affero General Public License
+ * along with WebODF. If not, see <http://www.gnu.org/licenses/>.
* @licend
+ *
* @source: http://www.webodf.org/
* @source: https://github.com/kogmbh/WebODF/
*/
-/*global define,require,document,odf */
+/*global define, require, document, odf, runtime, core, gui */
define("webodf/editor/widgets/editHyperlinks", [
"webodf/editor/EditorSession",
@@ -49,6 +35,8 @@ define("webodf/editor/widgets/editHyperlinks", [
"use strict";
runtime.loadClass("odf.OdfUtils");
+ runtime.loadClass("odf.TextSerializer");
+ runtime.loadClass("core.EventSubscriptions");
var EditHyperlinks = function (callback) {
var self = this,
@@ -58,85 +46,29 @@ define("webodf/editor/widgets/editHyperlinks", [
linkEditorContent,
editHyperlinkButton,
removeHyperlinkButton,
- odfUtils = new odf.OdfUtils(),
+ odfUtils = odf.OdfUtils,
+ textSerializer = new odf.TextSerializer(),
+ eventSubscriptions = new core.EventSubscriptions(),
dialog;
- linkEditorContent = new EditHyperlinkPane();
- dialog = new TooltipDialog({
- title: runtime.tr("Edit link"),
- content: linkEditorContent.widget()
- });
-
- editHyperlinkButton = new DropDownButton({
- label: runtime.tr('Edit link'),
- showLabel: false,
- iconClass: 'dijitEditorIcon dijitEditorIconCreateLink',
- dropDown: dialog
- });
-
- removeHyperlinkButton = new Button({
- label: runtime.tr('Remove link'),
- showLabel: false,
- disabled: true,
- iconClass: 'dijitEditorIcon dijitEditorIconUnlink',
- onClick: function () {
- hyperlinkController.removeHyperlinks();
- self.onToolDone();
- }
- });
-
- linkEditorContent.onSave = function () {
- var hyperlinkData = linkEditorContent.value();
- editHyperlinkButton.closeDropDown(false);
- if (hyperlinkData.isReadOnlyText == "true") {
- hyperlinkController.removeHyperlinks();
- hyperlinkController.addHyperlink(hyperlinkData.linkUrl);
- } else {
- hyperlinkController.addHyperlink(hyperlinkData.linkUrl, hyperlinkData.linkDisplayText);
- }
- self.onToolDone();
- };
-
- linkEditorContent.onCancel = function () {
- editHyperlinkButton.closeDropDown(false);
- self.onToolDone();
- };
-
- widget.children = [editHyperlinkButton, removeHyperlinkButton];
- widget.startup = function () {
- widget.children.forEach(function (element) {
- element.startup();
- });
- };
-
- widget.placeAt = function (container) {
- widget.children.forEach(function (element) {
- element.placeAt(container);
- });
- return widget;
- };
-
- function checkHyperlinkButtons() {
+ function updateLinkEditorContent() {
var selection = editorSession.getSelectedRange(),
- textContent,
linksInSelection = editorSession.getSelectedHyperlinks(),
linkTarget = linksInSelection[0] ? odfUtils.getHyperlinkTarget(linksInSelection[0]) : "http://";
if (selection && selection.collapsed && linksInSelection.length === 1) {
// Selection is collapsed within a single hyperlink. Assume user is modifying the hyperlink
- textContent = selection.cloneRange();
- textContent.selectNodeContents(linksInSelection[0]);
linkEditorContent.set({
- linkDisplayText: textContent.toString(),
+ linkDisplayText: textSerializer.writeToString(linksInSelection[0]),
linkUrl: linkTarget,
isReadOnlyText: true
});
- textContent.detach();
} else if (selection && !selection.collapsed) {
// User has selected part of a hyperlink or a block of text. Assume user is attempting to modify the
// existing hyperlink, or wants to convert the selection into a hyperlink
linkEditorContent.set({
- linkDisplayText: selection.toString(),
+ // TODO Improve performance by rewriting to not clone the range contents
+ linkDisplayText: textSerializer.writeToString(selection.cloneContents()),
linkUrl: linkTarget,
isReadOnlyText: true
});
@@ -148,33 +80,122 @@ define("webodf/editor/widgets/editHyperlinks", [
isReadOnlyText: false
});
}
+ }
- // The 3rd parameter is false to avoid firing onChange when setting the value programmatically.
- removeHyperlinkButton.set('disabled', linksInSelection.length === 0, false);
+ function updateHyperlinkButtons() {
+ var controllerEnabled = hyperlinkController && hyperlinkController.isEnabled(),
+ linksInSelection;
+
+ // Enable to disable all widgets initially
+ widget.children.forEach(function (element) {
+ element.set('disabled', controllerEnabled !== true, false);
+ });
+ if (controllerEnabled) {
+ // Specifically enable the remove hyperlink button only if there are links in the current selection
+ linksInSelection = editorSession.getSelectedHyperlinks();
+ removeHyperlinkButton.set('disabled', linksInSelection.length === 0, false);
+ }
}
- this.setEditorSession = function (session) {
- if (editorSession) {
- editorSession.unsubscribe(EditorSession.signalCursorMoved, checkHyperlinkButtons);
- editorSession.unsubscribe(EditorSession.signalParagraphChanged, checkHyperlinkButtons);
- editorSession.unsubscribe(EditorSession.signalParagraphStyleModified, checkHyperlinkButtons);
+ function updateSelectedLink(hyperlinkData) {
+ var selection = editorSession.getSelectedRange(),
+ selectionController = editorSession.sessionController.getSelectionController(),
+ selectedLinkRange,
+ linksInSelection = editorSession.getSelectedHyperlinks();
+
+ if (hyperlinkData.isReadOnlyText === "true") {
+ if (selection && selection.collapsed && linksInSelection.length === 1) {
+ // Editing the single link the cursor is currently within
+ selectedLinkRange = selection.cloneRange();
+ selectedLinkRange.selectNode(linksInSelection[0]);
+ selectionController.selectRange(selectedLinkRange, true);
+ }
+ hyperlinkController.removeHyperlinks();
+ hyperlinkController.addHyperlink(hyperlinkData.linkUrl);
+ } else {
+ hyperlinkController.addHyperlink(hyperlinkData.linkUrl, hyperlinkData.linkDisplayText);
+ linksInSelection = editorSession.getSelectedHyperlinks();
+ selectedLinkRange = selection.cloneRange();
+ selectedLinkRange.selectNode(linksInSelection[0]);
+ selectionController.selectRange(selectedLinkRange, true);
}
+ }
+
+ this.setEditorSession = function (session) {
+ eventSubscriptions.unsubscribeAll();
+ hyperlinkController = undefined;
editorSession = session;
- hyperlinkController = session && session.sessionController.getHyperlinkController();
- widget.children.forEach(function (element) {
- element.setAttribute('disabled', !hyperlinkController);
- });
if (editorSession) {
- editorSession.subscribe(EditorSession.signalCursorMoved, checkHyperlinkButtons);
- editorSession.subscribe(EditorSession.signalParagraphChanged, checkHyperlinkButtons);
- editorSession.subscribe(EditorSession.signalParagraphStyleModified, checkHyperlinkButtons);
- checkHyperlinkButtons();
+ hyperlinkController = editorSession.sessionController.getHyperlinkController();
+ eventSubscriptions.addFrameSubscription(editorSession, EditorSession.signalCursorMoved, updateHyperlinkButtons);
+ eventSubscriptions.addFrameSubscription(editorSession, EditorSession.signalParagraphChanged, updateHyperlinkButtons);
+ eventSubscriptions.addFrameSubscription(editorSession, EditorSession.signalParagraphStyleModified, updateHyperlinkButtons);
+ eventSubscriptions.addSubscription(hyperlinkController, gui.HyperlinkController.enabledChanged, updateHyperlinkButtons);
}
+ updateHyperlinkButtons();
};
+ /*jslint emptyblock: true*/
this.onToolDone = function () {};
+ /*jslint emptyblock: false*/
+
+ function init() {
+ textSerializer.filter = new odf.OdfNodeFilter();
- callback(widget);
+ linkEditorContent = new EditHyperlinkPane();
+ dialog = new TooltipDialog({
+ title: runtime.tr("Edit link"),
+ content: linkEditorContent.widget(),
+ onShow: updateLinkEditorContent
+ });
+
+ editHyperlinkButton = new DropDownButton({
+ label: runtime.tr('Edit link'),
+ showLabel: false,
+ disabled: true,
+ iconClass: 'dijitEditorIcon dijitEditorIconCreateLink',
+ dropDown: dialog
+ });
+
+ removeHyperlinkButton = new Button({
+ label: runtime.tr('Remove link'),
+ showLabel: false,
+ disabled: true,
+ iconClass: 'dijitEditorIcon dijitEditorIconUnlink',
+ onClick: function () {
+ hyperlinkController.removeHyperlinks();
+ self.onToolDone();
+ }
+ });
+
+ linkEditorContent.onSave = function () {
+ var hyperlinkData = linkEditorContent.value();
+ editHyperlinkButton.closeDropDown(false);
+ updateSelectedLink(hyperlinkData);
+ self.onToolDone();
+ };
+
+ linkEditorContent.onCancel = function () {
+ editHyperlinkButton.closeDropDown(false);
+ self.onToolDone();
+ };
+
+ widget.children = [editHyperlinkButton, removeHyperlinkButton];
+ widget.startup = function () {
+ widget.children.forEach(function (element) {
+ element.startup();
+ });
+ };
+
+ widget.placeAt = function (container) {
+ widget.children.forEach(function (element) {
+ element.placeAt(container);
+ });
+ return widget;
+ };
+ callback(widget);
+ }
+ init();
};
return EditHyperlinks;
diff --git a/js/3rdparty/webodf/editor/widgets/fontPicker.js b/js/3rdparty/webodf/editor/widgets/fontPicker.js
index 372df253..d243c686 100644
--- a/js/3rdparty/webodf/editor/widgets/fontPicker.js
+++ b/js/3rdparty/webodf/editor/widgets/fontPicker.js
@@ -2,35 +2,22 @@
* Copyright (C) 2012 KO GmbH <copyright@kogmbh.com>
*
* @licstart
- * The JavaScript code in this page is free software: you can redistribute it
- * and/or modify it under the terms of the GNU Affero General Public License
- * (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version. The code is distributed
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
+ * This file is part of WebODF.
*
- * You should have received a copy of the GNU Affero General Public License
- * along with this code. If not, see <http://www.gnu.org/licenses/>.
- *
- * As additional permission under GNU AGPL version 3 section 7, you
- * may distribute non-source (e.g., minimized or compacted) forms of
- * that code without the copy of the GNU GPL normally required by
- * section 4, provided you include this license notice and a URL
- * through which recipients can access the Corresponding Source.
+ * WebODF is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License (GNU AGPL)
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
*
- * As a special exception to the AGPL, any HTML file which merely makes function
- * calls to this code, and for that purpose includes it by reference shall be
- * deemed a separate work for copyright law purposes. In addition, the copyright
- * holders of this code give you permission to combine this code with free
- * software libraries that are released under the GNU LGPL. You may copy and
- * distribute such a system following the terms of the GNU AGPL for this code
- * and the LGPL for the libraries. If you modify this code, you may extend this
- * exception to your version of the code, but you are not obligated to do so.
- * If you do not wish to do so, delete this exception statement from your
- * version.
+ * WebODF is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
*
- * This license applies to this entire compilation.
+ * You should have received a copy of the GNU Affero General Public License
+ * along with WebODF. If not, see <http://www.gnu.org/licenses/>.
* @licend
+ *
* @source: http://www.webodf.org/
* @source: https://github.com/kogmbh/WebODF/
*/
@@ -49,17 +36,21 @@ define("webodf/editor/widgets/fontPicker", [
var self = this,
editorSession,
select,
- editorFonts = [],
- documentFonts = [],
- selectionList = [];
+ documentFonts = [];
select = new Select({
name: 'FontPicker',
+ disabled: true,
maxHeight: 200,
style: {
width: '150px'
}
});
+ // prevent browser translation service messing up ids
+ select.domNode.setAttribute("translate", "no");
+ select.domNode.classList.add("notranslate");
+ select.dropDown.domNode.setAttribute("translate", "no");
+ select.dropDown.domNode.classList.add("notranslate");
this.widget = function () {
return select;
@@ -93,8 +84,12 @@ define("webodf/editor/widgets/fontPicker", [
this.onRemove = null;
function populateFonts() {
- var i, name, family;
- editorFonts = editorSession ? editorSession.availableFonts : [];
+ var i,
+ name,
+ family,
+ editorFonts = editorSession ? editorSession.availableFonts : [],
+ selectionList = [];
+
documentFonts = editorSession ? editorSession.getDeclaredFonts() : [];
// First populate the fonts used in the document
@@ -102,7 +97,7 @@ define("webodf/editor/widgets/fontPicker", [
name = documentFonts[i].name;
family = documentFonts[i].family || name;
selectionList.push({
- label: '<span style="font-family: ' + htmlEntities.encode(family) + ';">' + htmlEntities.encode(name) + '</span>',
+ label: '<span style="font-family: ' + htmlEntities.encode(family) + ';">' + htmlEntities.encode(name)+ '</span>',
value: name
});
}
@@ -127,9 +122,10 @@ define("webodf/editor/widgets/fontPicker", [
this.setEditorSession = function(session) {
editorSession = session;
populateFonts();
+ select.setAttribute('disabled', !editorSession);
};
-
populateFonts();
+
callback(self);
};
diff --git a/js/3rdparty/webodf/editor/widgets/imageInserter.js b/js/3rdparty/webodf/editor/widgets/imageInserter.js
index 607fb2ba..ddac5215 100644
--- a/js/3rdparty/webodf/editor/widgets/imageInserter.js
+++ b/js/3rdparty/webodf/editor/widgets/imageInserter.js
@@ -1,42 +1,28 @@
/**
- * @license
* Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
*
* @licstart
- * The JavaScript code in this page is free software: you can redistribute it
- * and/or modify it under the terms of the GNU Affero General Public License
- * (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version. The code is distributed
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
+ * This file is part of WebODF.
*
- * You should have received a copy of the GNU Affero General Public License
- * along with this code. If not, see <http://www.gnu.org/licenses/>.
- *
- * As additional permission under GNU AGPL version 3 section 7, you
- * may distribute non-source (e.g., minimized or compacted) forms of
- * that code without the copy of the GNU GPL normally required by
- * section 4, provided you include this license notice and a URL
- * through which recipients can access the Corresponding Source.
+ * WebODF is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License (GNU AGPL)
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
*
- * As a special exception to the AGPL, any HTML file which merely makes function
- * calls to this code, and for that purpose includes it by reference shall be
- * deemed a separate work for copyright law purposes. In addition, the copyright
- * holders of this code give you permission to combine this code with free
- * software libraries that are released under the GNU LGPL. You may copy and
- * distribute such a system following the terms of the GNU AGPL for this code
- * and the LGPL for the libraries. If you modify this code, you may extend this
- * exception to your version of the code, but you are not obligated to do so.
- * If you do not wish to do so, delete this exception statement from your
- * version.
+ * WebODF is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
*
- * This license applies to this entire compilation.
+ * You should have received a copy of the GNU Affero General Public License
+ * along with WebODF. If not, see <http://www.gnu.org/licenses/>.
* @licend
+ *
* @source: http://www.webodf.org/
* @source: https://github.com/kogmbh/WebODF/
*/
-/*global define,require,document,Image,FileReader,window,runtime,ops */
+/*global define, require, document, Image, FileReader, window, runtime, ops, gui */
define("webodf/editor/widgets/imageInserter", [
"dijit/form/Button",
@@ -50,8 +36,21 @@ define("webodf/editor/widgets/imageInserter", [
widget = {},
insertImageButton,
editorSession,
- fileLoader;
+ fileLoader,
+ textController,
+ imageController;
+ /**
+ *
+ * @param {!string} mimetype
+ * @param {!string} content base64 encoded string
+ * @param {!number} width
+ * @param {!number} height
+ */
+ function insertImage(mimetype, content, width, height) {
+ textController.removeCurrentSelection();
+ imageController.insertImage(mimetype, content, width, height);
+ }
/**
* @param {!string} content as datauri
@@ -67,9 +66,7 @@ define("webodf/editor/widgets/imageInserter", [
hiddenImage.onload = function () {
// remove the data:image/jpg;base64, bit
content = content.substring(content.indexOf(",") + 1);
- if (editorSession) {
- editorSession.insertImage(mimetype, content, hiddenImage.width, hiddenImage.height);
- }
+ insertImage(mimetype, content, hiddenImage.width, hiddenImage.height);
// clean up
document.body.removeChild(hiddenImage);
self.onToolDone();
@@ -137,27 +134,43 @@ define("webodf/editor/widgets/imageInserter", [
return widget;
};
+ function enableButtons(isEnabled) {
+ widget.children.forEach(function (element) {
+ element.setAttribute('disabled', !isEnabled);
+ });
+ }
function handleCursorMoved(cursor) {
- var disabled = cursor.getSelectionType() === ops.OdtCursor.RegionSelection;
- // LO/AOO pops up the picture/frame option dialog if image is selected when pressing the button
- // Since we only support inline images, disable the button for now.
- insertImageButton.setAttribute('disabled', disabled);
+ if (imageController.isEnabled()) {
+ var disabled = cursor.getSelectionType() === ops.OdtCursor.RegionSelection;
+ // LO/AOO pops up the picture/frame option dialog if image is selected when pressing the button
+ // Since we only support inline images, disable the button for now.
+ insertImageButton.setAttribute('disabled', disabled);
+ }
}
this.setEditorSession = function (session) {
if (editorSession) {
editorSession.unsubscribe(EditorSession.signalCursorMoved, handleCursorMoved);
+ imageController.unsubscribe(gui.ImageController.enabledChanged, enableButtons);
}
+
editorSession = session;
if (editorSession) {
+ textController = editorSession.sessionController.getTextController();
+ imageController = editorSession.sessionController.getImageController();
+
editorSession.subscribe(EditorSession.signalCursorMoved, handleCursorMoved);
+ imageController.subscribe(gui.ImageController.enabledChanged, enableButtons);
+
+ enableButtons(imageController.isEnabled());
+ } else {
+ enableButtons(false);
}
- widget.children.forEach(function (element) {
- element.setAttribute("disabled", !session);
- });
};
+ /*jslint emptyblock: true*/
this.onToolDone = function () {};
+ /*jslint emptyblock: false*/
callback(widget);
};
diff --git a/js/3rdparty/webodf/editor/widgets/paragraphAlignment.js b/js/3rdparty/webodf/editor/widgets/paragraphAlignment.js
index afc7958f..d0f35ad9 100644
--- a/js/3rdparty/webodf/editor/widgets/paragraphAlignment.js
+++ b/js/3rdparty/webodf/editor/widgets/paragraphAlignment.js
@@ -1,49 +1,35 @@
/**
- * @license
* Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
*
* @licstart
- * The JavaScript code in this page is free software: you can redistribute it
- * and/or modify it under the terms of the GNU Affero General Public License
- * (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version. The code is distributed
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
+ * This file is part of WebODF.
*
- * You should have received a copy of the GNU Affero General Public License
- * along with this code. If not, see <http://www.gnu.org/licenses/>.
- *
- * As additional permission under GNU AGPL version 3 section 7, you
- * may distribute non-source (e.g., minimized or compacted) forms of
- * that code without the copy of the GNU GPL normally required by
- * section 4, provided you include this license notice and a URL
- * through which recipients can access the Corresponding Source.
+ * WebODF is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License (GNU AGPL)
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
*
- * As a special exception to the AGPL, any HTML file which merely makes function
- * calls to this code, and for that purpose includes it by reference shall be
- * deemed a separate work for copyright law purposes. In addition, the copyright
- * holders of this code give you permission to combine this code with free
- * software libraries that are released under the GNU LGPL. You may copy and
- * distribute such a system following the terms of the GNU AGPL for this code
- * and the LGPL for the libraries. If you modify this code, you may extend this
- * exception to your version of the code, but you are not obligated to do so.
- * If you do not wish to do so, delete this exception statement from your
- * version.
+ * WebODF is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
*
- * This license applies to this entire compilation.
+ * You should have received a copy of the GNU Affero General Public License
+ * along with WebODF. If not, see <http://www.gnu.org/licenses/>.
* @licend
+ *
* @source: http://www.webodf.org/
* @source: https://github.com/kogmbh/WebODF/
*/
-/*global define,require,ops,gui */
+/*global define, require, ops, gui, runtime */
define("webodf/editor/widgets/paragraphAlignment", [
"dijit/form/ToggleButton",
"dijit/form/Button",
"webodf/editor/EditorSession"],
- function (ToggleButton, Button, EditorSession) {
+ function (ToggleButton, Button) {
"use strict";
var ParagraphAlignment = function (callback) {
@@ -133,8 +119,7 @@ define("webodf/editor/widgets/paragraphAlignment", [
justifyRight,
justifyFull,
outdent,
- indent
- ];
+ indent ];
widget.startup = function () {
widget.children.forEach(function (element) {
@@ -166,44 +151,44 @@ define("webodf/editor/widgets/paragraphAlignment", [
});
}
- function handleCursorMoved(cursor) {
- var disabled = cursor.getSelectionType() === ops.OdtCursor.RegionSelection;
+ function enableStyleButtons(enabledFeatures) {
widget.children.forEach(function (element) {
- element.setAttribute('disabled', disabled);
+ element.setAttribute('disabled', !enabledFeatures.directParagraphStyling);
});
}
this.setEditorSession = function (session) {
- if (directFormattingController) {
+ if (editorSession) {
directFormattingController.unsubscribe(gui.DirectFormattingController.paragraphStylingChanged, updateStyleButtons);
+ directFormattingController.unsubscribe(gui.DirectFormattingController.enabledChanged, enableStyleButtons);
}
- directFormattingController = session && session.sessionController.getDirectFormattingController();
- if (directFormattingController) {
- directFormattingController.subscribe(gui.DirectFormattingController.paragraphStylingChanged, updateStyleButtons);
- }
- widget.children.forEach(function (element) {
- element.setAttribute('disabled', !directFormattingController);
- });
- updateStyleButtons({
- isAlignedLeft: directFormattingController ? directFormattingController.isAlignedLeft() : false,
- isAlignedCenter: directFormattingController ? directFormattingController.isAlignedCenter() : false,
- isAlignedRight: directFormattingController ? directFormattingController.isAlignedRight() : false,
- isAlignedJustified: directFormattingController ? directFormattingController.isAlignedJustified() : false
- });
- if (editorSession) {
- editorSession.unsubscribe(EditorSession.signalCursorMoved, handleCursorMoved);
- }
editorSession = session;
if (editorSession) {
- editorSession.subscribe(EditorSession.signalCursorMoved, handleCursorMoved);
+ directFormattingController = editorSession.sessionController.getDirectFormattingController();
+
+ directFormattingController.subscribe(gui.DirectFormattingController.paragraphStylingChanged, updateStyleButtons);
+ directFormattingController.subscribe(gui.DirectFormattingController.enabledChanged, enableStyleButtons);
+
+ enableStyleButtons(directFormattingController.enabledFeatures());
+ } else {
+ enableStyleButtons({directParagraphStyling: false});
}
+
+ updateStyleButtons({
+ isAlignedLeft: editorSession ? directFormattingController.isAlignedLeft() : false,
+ isAlignedCenter: editorSession ? directFormattingController.isAlignedCenter() : false,
+ isAlignedRight: editorSession ? directFormattingController.isAlignedRight() : false,
+ isAlignedJustified: editorSession ? directFormattingController.isAlignedJustified() : false
+ });
};
+ /*jslint emptyblock: true*/
this.onToolDone = function () {};
+ /*jslint emptyblock: false*/
callback(widget);
};
return ParagraphAlignment;
-});
+ });
diff --git a/js/3rdparty/webodf/editor/widgets/paragraphStyles.js b/js/3rdparty/webodf/editor/widgets/paragraphStyles.js
index 0e1acec3..c17b59fd 100644
--- a/js/3rdparty/webodf/editor/widgets/paragraphStyles.js
+++ b/js/3rdparty/webodf/editor/widgets/paragraphStyles.js
@@ -1,51 +1,37 @@
/**
- * @license
* Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
*
* @licstart
- * The JavaScript code in this page is free software: you can redistribute it
- * and/or modify it under the terms of the GNU Affero General Public License
- * (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version. The code is distributed
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
+ * This file is part of WebODF.
*
- * You should have received a copy of the GNU Affero General Public License
- * along with this code. If not, see <http://www.gnu.org/licenses/>.
- *
- * As additional permission under GNU AGPL version 3 section 7, you
- * may distribute non-source (e.g., minimized or compacted) forms of
- * that code without the copy of the GNU GPL normally required by
- * section 4, provided you include this license notice and a URL
- * through which recipients can access the Corresponding Source.
+ * WebODF is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License (GNU AGPL)
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
*
- * As a special exception to the AGPL, any HTML file which merely makes function
- * calls to this code, and for that purpose includes it by reference shall be
- * deemed a separate work for copyright law purposes. In addition, the copyright
- * holders of this code give you permission to combine this code with free
- * software libraries that are released under the GNU LGPL. You may copy and
- * distribute such a system following the terms of the GNU AGPL for this code
- * and the LGPL for the libraries. If you modify this code, you may extend this
- * exception to your version of the code, but you are not obligated to do so.
- * If you do not wish to do so, delete this exception statement from your
- * version.
+ * WebODF is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
*
- * This license applies to this entire compilation.
+ * You should have received a copy of the GNU Affero General Public License
+ * along with WebODF. If not, see <http://www.gnu.org/licenses/>.
* @licend
+ *
* @source: http://www.webodf.org/
* @source: https://github.com/kogmbh/WebODF/
*/
-/*global define,require */
+/*global define, require, runtime, ops */
-define("webodf/editor/widgets/paragraphStyles",
- [
- "dojox/html/entities",
- "webodf/editor/EditorSession"
- ],
+define("webodf/editor/widgets/paragraphStyles", [
+ "dijit/form/Select",
+ "dojox/html/entities",
+ "webodf/editor/EditorSession"],
- function (htmlEntities, EditorSession) {
+ function (Select, htmlEntities, EditorSession) {
"use strict";
+
/**
* @constructor
*/
@@ -84,15 +70,13 @@ define("webodf/editor/widgets/paragraphStyles",
// events
this.onAdd = null;
this.onRemove = null;
+ /*jslint emptyblock: true*/
this.onChange = function () {};
+ /*jslint emptyblock: false*/
function populateStyles() {
var i, selectionList, availableStyles;
- if (! select) {
- return;
- }
-
// Populate the Default Style always
selectionList = [{
label: runtime.tr("Default Style"),
@@ -102,7 +86,7 @@ define("webodf/editor/widgets/paragraphStyles",
for (i = 0; i < availableStyles.length; i += 1) {
selectionList.push({
- label: htmlEntities.encode(availableStyles[i].displayName),
+ label: htmlEntities.encode(availableStyles[i].displayName) || htmlEntities.encode(availableStyles[i].name),
value: availableStyles[i].name
});
}
@@ -120,12 +104,10 @@ define("webodf/editor/widgets/paragraphStyles",
}
newStyleElement = editorSession.getParagraphStyleElement(styleInfo.name);
- if (select) {
- select.addOption({
- value: styleInfo.name,
- label: htmlEntities.encode(newStyleElement.getAttributeNS(stylens, 'display-name'))
- });
- }
+ select.addOption({
+ label: htmlEntities.encode(newStyleElement.getAttributeNS(stylens, 'display-name')),
+ value: styleInfo.name
+ });
if (self.onAdd) {
self.onAdd(styleInfo.name);
@@ -137,45 +119,16 @@ define("webodf/editor/widgets/paragraphStyles",
return;
}
- if (select) {
- select.removeOption(styleInfo.name);
- }
+ select.removeOption(styleInfo.name);
if (self.onRemove) {
self.onRemove(styleInfo.name);
}
}
- function init(cb) {
- require(["dijit/form/Select"], function (Select) {
- select = new Select({
- name: 'ParagraphStyles',
- maxHeight: 200,
- style: {
- width: '100px'
- }
- });
-
- populateStyles();
-
- // Call ParagraphStyles's onChange handler every time
- // the select's onchange is called, and pass the value
- // as reported by ParagraphStyles.value(), because we do not
- // want to expose the internal naming like ":default" outside this
- // class.
- select.onChange = function () {
- self.onChange(self.value());
- };
-
- return cb();
- });
- }
-
function handleCursorMoved(cursor) {
var disabled = cursor.getSelectionType() === ops.OdtCursor.RegionSelection;
- if (select) {
- select.setAttribute('disabled', disabled);
- }
+ select.setAttribute('disabled', disabled);
}
this.setEditorSession = function(session) {
@@ -184,19 +137,48 @@ define("webodf/editor/widgets/paragraphStyles",
editorSession.unsubscribe(EditorSession.signalCommonStyleDeleted, removeStyle);
editorSession.unsubscribe(EditorSession.signalCursorMoved, handleCursorMoved);
}
+
editorSession = session;
if (editorSession) {
editorSession.subscribe(EditorSession.signalCommonStyleCreated, addStyle);
editorSession.subscribe(EditorSession.signalCommonStyleDeleted, removeStyle);
editorSession.subscribe(EditorSession.signalCursorMoved, handleCursorMoved);
- populateStyles();
}
+ select.setAttribute('disabled', !editorSession);
+
+ populateStyles();
};
// init
- init(function () {
+ function init() {
+ select = new Select({
+ name: 'ParagraphStyles',
+ maxHeight: 200,
+ style: {
+ width: '100px'
+ }
+ });
+ // prevent browser translation service messing up ids
+ select.domNode.setAttribute("translate", "no");
+ select.domNode.classList.add("notranslate");
+ select.dropDown.domNode.setAttribute("translate", "no");
+ select.dropDown.domNode.classList.add("notranslate");
+
+ populateStyles();
+
+ // Call ParagraphStyles's onChange handler every time
+ // the select's onchange is called, and pass the value
+ // as reported by ParagraphStyles.value(), because we do not
+ // want to expose the internal naming like ":default" outside this
+ // class.
+ select.onChange = function () {
+ self.onChange(self.value());
+ };
+
return callback(self);
- });
+ }
+
+ init();
};
return ParagraphStyles;
diff --git a/js/3rdparty/webodf/editor/widgets/paragraphStylesDialog.js b/js/3rdparty/webodf/editor/widgets/paragraphStylesDialog.js
index 708e9f53..1629a89b 100644
--- a/js/3rdparty/webodf/editor/widgets/paragraphStylesDialog.js
+++ b/js/3rdparty/webodf/editor/widgets/paragraphStylesDialog.js
@@ -1,47 +1,36 @@
/**
- * @license
* Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
*
* @licstart
- * The JavaScript code in this page is free software: you can redistribute it
- * and/or modify it under the terms of the GNU Affero General Public License
- * (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version. The code is distributed
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
+ * This file is part of WebODF.
*
- * You should have received a copy of the GNU Affero General Public License
- * along with this code. If not, see <http://www.gnu.org/licenses/>.
- *
- * As additional permission under GNU AGPL version 3 section 7, you
- * may distribute non-source (e.g., minimized or compacted) forms of
- * that code without the copy of the GNU GPL normally required by
- * section 4, provided you include this license notice and a URL
- * through which recipients can access the Corresponding Source.
+ * WebODF is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License (GNU AGPL)
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
*
- * As a special exception to the AGPL, any HTML file which merely makes function
- * calls to this code, and for that purpose includes it by reference shall be
- * deemed a separate work for copyright law purposes. In addition, the copyright
- * holders of this code give you permission to combine this code with free
- * software libraries that are released under the GNU LGPL. You may copy and
- * distribute such a system following the terms of the GNU AGPL for this code
- * and the LGPL for the libraries. If you modify this code, you may extend this
- * exception to your version of the code, but you are not obligated to do so.
- * If you do not wish to do so, delete this exception statement from your
- * version.
+ * WebODF is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
*
- * This license applies to this entire compilation.
+ * You should have received a copy of the GNU Affero General Public License
+ * along with WebODF. If not, see <http://www.gnu.org/licenses/>.
* @licend
+ *
* @source: http://www.webodf.org/
* @source: https://github.com/kogmbh/WebODF/
*/
-/*global define,require,dojo,dijit */
+/*global define, require, dojo, dijit, runtime */
-define("webodf/editor/widgets/paragraphStylesDialog", [], function () {
+define("webodf/editor/widgets/paragraphStylesDialog", [
+ "webodf/editor/widgets/dialogWidgets/idMangler"],
+function (IdMangler) {
"use strict";
return function ParagraphStylesDialog(callback) {
var self = this,
+ idMangler = new IdMangler(),
editorSession,
dialog,
stylePicker, alignmentPane, fontEffectsPane;
@@ -51,35 +40,25 @@ define("webodf/editor/widgets/paragraphStylesDialog", [], function () {
"dijit/Dialog",
"dijit/TooltipDialog",
"dijit/popup",
+ "dijit/layout/LayoutContainer",
"dijit/layout/TabContainer",
"dijit/layout/ContentPane",
"dijit/form/Button",
- "dijit/form/DropDownButton",
- "dijit/form/RadioButton"], function (Dialog, TooltipDialog, popup, TabContainer, ContentPane, Button, DropDownButton, RadioButton) {
- var i,
- tr = runtime.tr,
+ "dijit/form/DropDownButton"], function (Dialog, TooltipDialog, popup, LayoutContainer, TabContainer, ContentPane, Button, DropDownButton) {
+ var tr = runtime.tr,
+ mainLayoutContainer,
tabContainer,
- flowPane,
- numberingPane,
- tabsPane,
- capsPane,
- bordersPane,
- backgroundPane,
- indentsPane,
+ topBar,
actionBar,
- okButton,
- cancelButton,
cloneButton,
deleteButton,
cloneTooltip,
cloneDropDown,
- newStyleName = null,
/**
* Mapping of the properties from edit pane properties to the attributes of style:text-properties
* @const@type{Array.<!{propertyName:string,attributeName:string,unit:string}>}
*/
- textPropertyMapping = [
- {
+ textPropertyMapping = [{
propertyName: 'fontSize',
attributeName: 'fo:font-size',
unit: 'pt'
@@ -109,8 +88,7 @@ define("webodf/editor/widgets/paragraphStylesDialog", [], function () {
* Mapping of the properties from edit pane properties to the attributes of style:paragraph-properties
* @const@type{Array.<!{propertyName:string,attributeName:string,unit:string}>}
*/
- paragraphPropertyMapping = [
- {
+ paragraphPropertyMapping = [{
propertyName: 'topMargin',
attributeName: 'fo:margin-top',
unit: 'mm'
@@ -129,14 +107,16 @@ define("webodf/editor/widgets/paragraphStylesDialog", [], function () {
}, {
propertyName: 'textAlign',
attributeName: 'fo:text-align'
- }];
+ }],
+ originalFontEffectsPaneValue,
+ originalAlignmentPaneValue;
/**
* Sets attributes of a node by the properties of the object properties,
* based on the mapping defined in propertyMapping.
* @param {!Object} properties
* @param {!Array.<!{propertyName:string,attributeName:string,unit:string}>} propertyMapping
- * @return {undefined}
+ * @return {!Object}
*/
function mappedProperties(properties, propertyMapping) {
var i, m, value,
@@ -153,10 +133,33 @@ define("webodf/editor/widgets/paragraphStylesDialog", [], function () {
return result;
}
+ /**
+ * Returns an flat object containing only the key-value mappings
+ * from the 'new' flat object which are different from the 'old' object's.
+ * @param {!Object} oldProperties
+ * @param {!Object} newProperties
+ * @return {!Object}
+ */
+ function updatedProperties(oldProperties, newProperties) {
+ var properties = {};
+ Object.keys(newProperties).forEach(function (key) {
+ if (newProperties[key] !== oldProperties[key]) {
+ properties[key] = newProperties[key];
+ }
+ });
+ return properties;
+ }
+
function accept() {
editorSession.updateParagraphStyle(stylePicker.value(), {
- "style:paragraph-properties": mappedProperties(alignmentPane.value(), paragraphPropertyMapping),
- "style:text-properties": mappedProperties(fontEffectsPane.value(), textPropertyMapping)
+ "style:paragraph-properties": mappedProperties(
+ updatedProperties(originalAlignmentPaneValue, alignmentPane.value()),
+ paragraphPropertyMapping
+ ),
+ "style:text-properties": mappedProperties(
+ updatedProperties(originalFontEffectsPaneValue, fontEffectsPane.value()),
+ textPropertyMapping
+ )
});
dialog.hide();
@@ -166,6 +169,24 @@ define("webodf/editor/widgets/paragraphStylesDialog", [], function () {
dialog.hide();
}
+ function setStyle(value) {
+ if (value !== stylePicker.value()) {
+ stylePicker.setValue(value);
+ }
+
+ alignmentPane.setStyle(value);
+ fontEffectsPane.setStyle(value);
+ originalAlignmentPaneValue = alignmentPane.value();
+ originalFontEffectsPaneValue = fontEffectsPane.value();
+
+ // If it is a default (nameless) style or is used, make it undeletable.
+ if (value === "" || editorSession.isStyleUsed(editorSession.getParagraphStyleElement(value))) {
+ deleteButton.domNode.style.display = 'none';
+ } else {
+ deleteButton.domNode.style.display = 'block';
+ }
+ }
+
/**
* Creates and enqueues a paragraph-style cloning operation.
* Remembers the id of the created style in newStyleName, so the
@@ -174,7 +195,8 @@ define("webodf/editor/widgets/paragraphStylesDialog", [], function () {
* @param {!string} newStyleDisplayName display name of the new style
*/
function cloneStyle(styleName, newStyleDisplayName) {
- newStyleName = editorSession.cloneParagraphStyle(styleName, newStyleDisplayName);
+ var newStyleName = editorSession.cloneParagraphStyle(styleName, newStyleDisplayName);
+ setStyle(newStyleName);
}
function deleteStyle(styleName) {
@@ -185,10 +207,20 @@ define("webodf/editor/widgets/paragraphStylesDialog", [], function () {
title: tr("Paragraph Styles")
});
+ mainLayoutContainer = new LayoutContainer({
+ style: "height: 520px; width: 450px;"
+ });
+
+ topBar = new ContentPane({
+ region: "top",
+ style: "margin: 0; padding: 0"
+ });
+ mainLayoutContainer.addChild(topBar);
+
cloneTooltip = new TooltipDialog({
- content:
- '<h2 style="margin: 0;">'+tr("Clone this Style")+'</h2><br/>' +
- '<label for="name">'+tr("New Name:")+'</label> <input data-dojo-type="dijit/form/TextBox" id="name" name="name"><br/><br/>',
+ content: idMangler.mangleIds(
+ '<h2 style="margin: 0;">' + tr("Clone this Style") + '</h2><br/>' +
+ '<label for="name">' + tr("New Name:") + '</label> <input data-dojo-type="dijit/form/TextBox" id="name" name="name"><br/><br/>'),
style: "width: 300px;"
});
cloneButton = new Button({
@@ -207,7 +239,7 @@ define("webodf/editor/widgets/paragraphStylesDialog", [], function () {
dropDown: cloneTooltip,
style: "float: right; margin-bottom: 5px;"
});
- dialog.addChild(cloneDropDown, 1);
+ topBar.addChild(cloneDropDown, 1);
deleteButton = new Button({
label: tr("Delete"),
@@ -218,22 +250,22 @@ define("webodf/editor/widgets/paragraphStylesDialog", [], function () {
deleteStyle(stylePicker.value());
}
});
- dialog.addChild(deleteButton, 2);
+ topBar.addChild(deleteButton, 2);
// Tab Container
tabContainer = new TabContainer({
- style: "height: 100%; width: 100%;"
+ region: "center"
});
- dialog.addChild(tabContainer, 3);
+ mainLayoutContainer.addChild(tabContainer);
actionBar = dojo.create("div", {
"class": "dijitDialogPaneActionBar"
});
- okButton = new dijit.form.Button({
+ new dijit.form.Button({
label: tr("OK"),
onClick: accept
}).placeAt(actionBar);
- cancelButton = new dijit.form.Button({
+ new dijit.form.Button({
label: tr("Cancel"),
onClick: cancel
}).placeAt(actionBar);
@@ -247,38 +279,23 @@ define("webodf/editor/widgets/paragraphStylesDialog", [], function () {
], function (ParagraphStyles, AlignmentPane, FontEffectsPane) {
var p, a, f;
- function openStyle(value) {
- alignmentPane.setStyle(value);
- fontEffectsPane.setStyle(value);
- // If it is a default (nameless) style or is used, make it undeletable.
- if (value === "" || editorSession.isStyleUsed(editorSession.getParagraphStyleElement(value))) {
- deleteButton.domNode.style.display = 'none';
- } else {
- deleteButton.domNode.style.display = 'block';
- }
- }
-
p = new ParagraphStyles(function (paragraphStyles) {
stylePicker = paragraphStyles;
stylePicker.widget().startup();
stylePicker.widget().domNode.style.float = "left";
stylePicker.widget().domNode.style.width = "350px";
stylePicker.widget().domNode.style.marginTop = "5px";
- dialog.addChild(stylePicker.widget(), 0);
-
- stylePicker.onAdd = function (name) {
- if (newStyleName === name) {
- stylePicker.setValue(name);
- newStyleName = null; // reset 'flag' name
- }
- };
+ topBar.addChild(stylePicker.widget(), 0);
- stylePicker.onRemove = function (name) {
- // Set the first style name as current
- stylePicker.setValue(stylePicker.widget().getOptions(0));
+ stylePicker.onRemove = function () {
+ // The style picker automatically falls back
+ // to the first entry if the currently selected
+ // entry is deleted. So it is safe to simply
+ // open the new auto-selected entry after removal.
+ setStyle(stylePicker.value());
};
- stylePicker.onChange = openStyle;
+ stylePicker.onChange = setStyle;
stylePicker.setEditorSession(editorSession);
});
a = new AlignmentPane(function (pane) {
@@ -296,26 +313,23 @@ define("webodf/editor/widgets/paragraphStylesDialog", [], function () {
dialog.onShow = function () {
var currentStyle = editorSession.getCurrentParagraphStyle();
- // setting the stylepicker value if the style name is the same
- // will not trigger onChange, so specifically open the style in
- // the panes.
- if (stylePicker.value() === currentStyle) {
- openStyle(currentStyle);
- } else {
- stylePicker.setValue(currentStyle);
- }
+ setStyle(currentStyle);
};
dialog.onHide = self.onToolDone;
+
+ // only done to make jslint see the var used
+ return p || a || f;
});
- tabContainer.startup();
+ dialog.addChild(mainLayoutContainer);
+ mainLayoutContainer.startup();
return callback(dialog);
});
}
- this.setEditorSession = function(session) {
+ this.setEditorSession = function (session) {
editorSession = session;
if (stylePicker) {
stylePicker.setEditorSession(session);
@@ -331,7 +345,9 @@ define("webodf/editor/widgets/paragraphStylesDialog", [], function () {
}
};
+ /*jslint emptyblock: true*/
this.onToolDone = function () {};
+ /*jslint emptyblock: false*/
// init
makeWidget(function (dialog) {
diff --git a/js/3rdparty/webodf/editor/widgets/simpleStyles.js b/js/3rdparty/webodf/editor/widgets/simpleStyles.js
index 00595750..c8b0edfa 100644
--- a/js/3rdparty/webodf/editor/widgets/simpleStyles.js
+++ b/js/3rdparty/webodf/editor/widgets/simpleStyles.js
@@ -1,53 +1,38 @@
/**
- * @license
* Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
*
* @licstart
- * The JavaScript code in this page is free software: you can redistribute it
- * and/or modify it under the terms of the GNU Affero General Public License
- * (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version. The code is distributed
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
+ * This file is part of WebODF.
*
- * You should have received a copy of the GNU Affero General Public License
- * along with this code. If not, see <http://www.gnu.org/licenses/>.
- *
- * As additional permission under GNU AGPL version 3 section 7, you
- * may distribute non-source (e.g., minimized or compacted) forms of
- * that code without the copy of the GNU GPL normally required by
- * section 4, provided you include this license notice and a URL
- * through which recipients can access the Corresponding Source.
+ * WebODF is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License (GNU AGPL)
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
*
- * As a special exception to the AGPL, any HTML file which merely makes function
- * calls to this code, and for that purpose includes it by reference shall be
- * deemed a separate work for copyright law purposes. In addition, the copyright
- * holders of this code give you permission to combine this code with free
- * software libraries that are released under the GNU LGPL. You may copy and
- * distribute such a system following the terms of the GNU AGPL for this code
- * and the LGPL for the libraries. If you modify this code, you may extend this
- * exception to your version of the code, but you are not obligated to do so.
- * If you do not wish to do so, delete this exception statement from your
- * version.
+ * WebODF is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
*
- * This license applies to this entire compilation.
+ * You should have received a copy of the GNU Affero General Public License
+ * along with WebODF. If not, see <http://www.gnu.org/licenses/>.
* @licend
+ *
* @source: http://www.webodf.org/
* @source: https://github.com/kogmbh/WebODF/
*/
-/*global define,require,gui,ops */
+/*global define, require, runtime, gui, ops */
define("webodf/editor/widgets/simpleStyles", [
"webodf/editor/widgets/fontPicker",
"dijit/form/ToggleButton",
- "dijit/form/NumberSpinner",
- "webodf/editor/EditorSession"],
+ "dijit/form/NumberSpinner"],
- function (FontPicker, ToggleButton, NumberSpinner, EditorSession) {
+ function (FontPicker, ToggleButton, NumberSpinner) {
"use strict";
- var SimpleStyles = function(callback) {
+ var SimpleStyles = function (callback) {
var self = this,
editorSession,
widget = {},
@@ -114,7 +99,7 @@ define("webodf/editor/widgets/simpleStyles", [
showLabel: false,
value: 12,
smallDelta: 1,
- constraints: {min:6, max:96},
+ constraints: {min: 6, max: 96},
intermediateChanges: true,
onChange: function (value) {
directFormattingController.setFontSize(value);
@@ -130,10 +115,12 @@ define("webodf/editor/widgets/simpleStyles", [
}
});
+ /*jslint emptyblock: true*/
fontPicker = new FontPicker(function () {});
+ /*jslint emptyblock: false*/
fontPickerWidget = fontPicker.widget();
fontPickerWidget.setAttribute('disabled', true);
- fontPickerWidget.onChange = function(value) {
+ fontPickerWidget.onChange = function (value) {
directFormattingController.setFontName(value);
self.onToolDone();
};
@@ -155,16 +142,16 @@ define("webodf/editor/widgets/simpleStyles", [
function updateStyleButtons(changes) {
// The 3rd parameter to set(...) is false to avoid firing onChange when setting the value programmatically.
var updateCalls = {
- isBold: function(value) { boldButton.set('checked', value, false); },
- isItalic: function(value) { italicButton.set('checked', value, false); },
- hasUnderline: function(value) { underlineButton.set('checked', value, false); },
- hasStrikeThrough: function(value) { strikethroughButton.set('checked', value, false); },
- fontSize: function(value) {
+ isBold: function (value) { boldButton.set('checked', value, false); },
+ isItalic: function (value) { italicButton.set('checked', value, false); },
+ hasUnderline: function (value) { underlineButton.set('checked', value, false); },
+ hasStrikeThrough: function (value) { strikethroughButton.set('checked', value, false); },
+ fontSize: function (value) {
fontSizeSpinner.set('intermediateChanges', false); // Necessary due to https://bugs.dojotoolkit.org/ticket/11588
fontSizeSpinner.set('value', value, false);
fontSizeSpinner.set('intermediateChanges', true);
},
- fontName: function(value) { fontPickerWidget.set('value', value, false); }
+ fontName: function (value) { fontPickerWidget.set('value', value, false); }
};
Object.keys(changes).forEach(function (key) {
@@ -175,44 +162,44 @@ define("webodf/editor/widgets/simpleStyles", [
});
}
- function handleCursorMoved(cursor) {
- var disabled = cursor.getSelectionType() === ops.OdtCursor.RegionSelection;
+ function enableStyleButtons(enabledFeatures) {
widget.children.forEach(function (element) {
- element.setAttribute('disabled', disabled);
+ element.setAttribute('disabled', !enabledFeatures.directTextStyling);
});
}
- this.setEditorSession = function(session) {
- if (directFormattingController) {
+ this.setEditorSession = function (session) {
+ if (editorSession) {
directFormattingController.unsubscribe(gui.DirectFormattingController.textStylingChanged, updateStyleButtons);
+ directFormattingController.unsubscribe(gui.DirectFormattingController.enabledChanged, enableStyleButtons);
}
- directFormattingController = session && session.sessionController.getDirectFormattingController();
- fontPicker.setEditorSession(session);
- if (directFormattingController) {
- directFormattingController.subscribe(gui.DirectFormattingController.textStylingChanged, updateStyleButtons);
- }
- widget.children.forEach(function (element) {
- element.setAttribute('disabled', !directFormattingController);
- });
- updateStyleButtons({
- isBold: directFormattingController ? directFormattingController.isBold() : false,
- isItalic: directFormattingController ? directFormattingController.isItalic() : false,
- hasUnderline: directFormattingController ? directFormattingController.hasUnderline() : false,
- hasStrikeThrough: directFormattingController ? directFormattingController.hasStrikeThrough() : false,
- fontSize: directFormattingController ? directFormattingController.fontSize() : undefined,
- fontName: directFormattingController ? directFormattingController.fontName() : undefined
- });
- if (editorSession) {
- editorSession.unsubscribe(EditorSession.signalCursorMoved, handleCursorMoved);
- }
editorSession = session;
+ fontPicker.setEditorSession(editorSession);
if (editorSession) {
- editorSession.subscribe(EditorSession.signalCursorMoved, handleCursorMoved);
+ directFormattingController = editorSession.sessionController.getDirectFormattingController();
+
+ directFormattingController.subscribe(gui.DirectFormattingController.textStylingChanged, updateStyleButtons);
+ directFormattingController.subscribe(gui.DirectFormattingController.enabledChanged, enableStyleButtons);
+
+ enableStyleButtons(directFormattingController.enabledFeatures());
+ } else {
+ enableStyleButtons({ directTextStyling: false});
}
+
+ updateStyleButtons({
+ isBold: editorSession ? directFormattingController.isBold() : false,
+ isItalic: editorSession ? directFormattingController.isItalic() : false,
+ hasUnderline: editorSession ? directFormattingController.hasUnderline() : false,
+ hasStrikeThrough: editorSession ? directFormattingController.hasStrikeThrough() : false,
+ fontSize: editorSession ? directFormattingController.fontSize() : undefined,
+ fontName: editorSession ? directFormattingController.fontName() : undefined
+ });
};
+ /*jslint emptyblock: true*/
this.onToolDone = function () {};
+ /*jslint emptyblock: false*/
callback(widget);
};
diff --git a/js/3rdparty/webodf/editor/widgets/toolbarWidgets/currentStyle.js b/js/3rdparty/webodf/editor/widgets/toolbarWidgets/currentStyle.js
index 7d864849..5503ceeb 100644
--- a/js/3rdparty/webodf/editor/widgets/toolbarWidgets/currentStyle.js
+++ b/js/3rdparty/webodf/editor/widgets/toolbarWidgets/currentStyle.js
@@ -1,37 +1,23 @@
/**
- * @license
* Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
*
* @licstart
- * The JavaScript code in this page is free software: you can redistribute it
- * and/or modify it under the terms of the GNU Affero General Public License
- * (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version. The code is distributed
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
+ * This file is part of WebODF.
*
- * You should have received a copy of the GNU Affero General Public License
- * along with this code. If not, see <http://www.gnu.org/licenses/>.
- *
- * As additional permission under GNU AGPL version 3 section 7, you
- * may distribute non-source (e.g., minimized or compacted) forms of
- * that code without the copy of the GNU GPL normally required by
- * section 4, provided you include this license notice and a URL
- * through which recipients can access the Corresponding Source.
+ * WebODF is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License (GNU AGPL)
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
*
- * As a special exception to the AGPL, any HTML file which merely makes function
- * calls to this code, and for that purpose includes it by reference shall be
- * deemed a separate work for copyright law purposes. In addition, the copyright
- * holders of this code give you permission to combine this code with free
- * software libraries that are released under the GNU LGPL. You may copy and
- * distribute such a system following the terms of the GNU AGPL for this code
- * and the LGPL for the libraries. If you modify this code, you may extend this
- * exception to your version of the code, but you are not obligated to do so.
- * If you do not wish to do so, delete this exception statement from your
- * version.
+ * WebODF is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
*
- * This license applies to this entire compilation.
+ * You should have received a copy of the GNU Affero General Public License
+ * along with WebODF. If not, see <http://www.gnu.org/licenses/>.
* @licend
+ *
* @source: http://www.webodf.org/
* @source: https://github.com/kogmbh/WebODF/
*/
@@ -41,62 +27,63 @@
define("webodf/editor/widgets/toolbarWidgets/currentStyle",
["webodf/editor/EditorSession"],
- function (EditorSession) {
- "use strict";
+ function (EditorSession) {
+ "use strict";
- return function CurrentStyle(callback) {
- var self = this,
- editorSession,
- paragraphStyles;
+ return function CurrentStyle(callback) {
+ var self = this,
+ editorSession,
+ paragraphStyles;
- function selectParagraphStyle(info) {
- if (paragraphStyles) {
- if (info.type === 'style') {
- paragraphStyles.setValue(info.styleName);
+ function selectParagraphStyle(info) {
+ if (paragraphStyles) {
+ if (info.type === 'style') {
+ paragraphStyles.setValue(info.styleName);
+ }
}
}
- }
- function setParagraphStyle() {
- if (editorSession) {
- editorSession.setCurrentParagraphStyle(paragraphStyles.value());
+ function setParagraphStyle() {
+ if (editorSession) {
+ editorSession.setCurrentParagraphStyle(paragraphStyles.value());
+ }
+ self.onToolDone();
}
- self.onToolDone();
- }
- function makeWidget(callback) {
- require(["webodf/editor/widgets/paragraphStyles"], function (ParagraphStyles) {
- var p;
+ function makeWidget(callback) {
+ require(["webodf/editor/widgets/paragraphStyles"], function (ParagraphStyles) {
+ var p = new ParagraphStyles(function (pStyles) {
+ paragraphStyles = pStyles;
- p = new ParagraphStyles(function (pStyles) {
- paragraphStyles = pStyles;
+ paragraphStyles.widget().onChange = setParagraphStyle;
- paragraphStyles.widget().onChange = setParagraphStyle;
-
- paragraphStyles.setEditorSession(editorSession);
- return callback(paragraphStyles.widget());
+ paragraphStyles.setEditorSession(editorSession);
+ return callback(paragraphStyles.widget());
+ });
+ return p; // make sure p is not unused
});
- });
- }
-
- this.setEditorSession = function(session) {
- if (editorSession) {
- editorSession.unsubscribe(EditorSession.signalParagraphChanged, selectParagraphStyle);
- }
- editorSession = session;
- if (paragraphStyles) {
- paragraphStyles.setEditorSession(editorSession);
}
- if (editorSession) {
- editorSession.subscribe(EditorSession.signalParagraphChanged, selectParagraphStyle);
- // TODO: selectParagraphStyle(editorSession.getCurrentParagraphStyle());
- }
- };
- this.onToolDone = function () {};
+ this.setEditorSession = function (session) {
+ if (editorSession) {
+ editorSession.unsubscribe(EditorSession.signalParagraphChanged, selectParagraphStyle);
+ }
+ editorSession = session;
+ if (paragraphStyles) {
+ paragraphStyles.setEditorSession(editorSession);
+ }
+ if (editorSession) {
+ editorSession.subscribe(EditorSession.signalParagraphChanged, selectParagraphStyle);
+ // TODO: selectParagraphStyle(editorSession.getCurrentParagraphStyle());
+ }
+ };
+
+ /*jslint emptyblock: true*/
+ this.onToolDone = function () {};
+ /*jslint emptyblock: false*/
- makeWidget(function (widget) {
- return callback(widget);
- });
- };
-});
+ makeWidget(function (widget) {
+ return callback(widget);
+ });
+ };
+ });
diff --git a/js/3rdparty/webodf/editor/widgets/undoRedoMenu.js b/js/3rdparty/webodf/editor/widgets/undoRedoMenu.js
index e266615e..9c2f2c39 100644
--- a/js/3rdparty/webodf/editor/widgets/undoRedoMenu.js
+++ b/js/3rdparty/webodf/editor/widgets/undoRedoMenu.js
@@ -1,42 +1,28 @@
/**
- * @license
* Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
*
* @licstart
- * The JavaScript code in this page is free software: you can redistribute it
- * and/or modify it under the terms of the GNU Affero General Public License
- * (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version. The code is distributed
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
+ * This file is part of WebODF.
*
- * You should have received a copy of the GNU Affero General Public License
- * along with this code. If not, see <http://www.gnu.org/licenses/>.
- *
- * As additional permission under GNU AGPL version 3 section 7, you
- * may distribute non-source (e.g., minimized or compacted) forms of
- * that code without the copy of the GNU GPL normally required by
- * section 4, provided you include this license notice and a URL
- * through which recipients can access the Corresponding Source.
+ * WebODF is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License (GNU AGPL)
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
*
- * As a special exception to the AGPL, any HTML file which merely makes function
- * calls to this code, and for that purpose includes it by reference shall be
- * deemed a separate work for copyright law purposes. In addition, the copyright
- * holders of this code give you permission to combine this code with free
- * software libraries that are released under the GNU LGPL. You may copy and
- * distribute such a system following the terms of the GNU AGPL for this code
- * and the LGPL for the libraries. If you modify this code, you may extend this
- * exception to your version of the code, but you are not obligated to do so.
- * If you do not wish to do so, delete this exception statement from your
- * version.
+ * WebODF is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
*
- * This license applies to this entire compilation.
+ * You should have received a copy of the GNU Affero General Public License
+ * along with WebODF. If not, see <http://www.gnu.org/licenses/>.
* @licend
+ *
* @source: http://www.webodf.org/
* @source: https://github.com/kogmbh/WebODF/
*/
-/*global define,require*/
+/*global define, require, runtime*/
define("webodf/editor/widgets/undoRedoMenu",
["webodf/editor/EditorSession", "dijit/form/Button"],
@@ -100,18 +86,25 @@ define("webodf/editor/widgets/undoRedoMenu",
}
}
- this.setEditorSession = function(session) {
+ this.setEditorSession = function (session) {
if (editorSession) {
editorSession.unsubscribe(EditorSession.signalUndoStackChanged, checkUndoButtons);
}
+
editorSession = session;
if (editorSession) {
editorSession.subscribe(EditorSession.signalUndoStackChanged, checkUndoButtons);
// TODO: checkUndoButtons(editorSession.getundoredoavailablalalo());
+ } else {
+ widget.children.forEach(function (element) {
+ element.setAttribute('disabled', true);
+ });
}
};
+ /*jslint emptyblock: true*/
this.onToolDone = function () {};
+ /*jslint emptyblock: false*/
// init
callback(widget);
diff --git a/js/3rdparty/webodf/editor/widgets/zoomSlider.js b/js/3rdparty/webodf/editor/widgets/zoomSlider.js
index a5e1e370..bf37cd8f 100644
--- a/js/3rdparty/webodf/editor/widgets/zoomSlider.js
+++ b/js/3rdparty/webodf/editor/widgets/zoomSlider.js
@@ -1,62 +1,71 @@
/**
- * @license
* Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
*
* @licstart
- * The JavaScript code in this page is free software: you can redistribute it
- * and/or modify it under the terms of the GNU Affero General Public License
- * (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version. The code is distributed
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
+ * This file is part of WebODF.
*
- * You should have received a copy of the GNU Affero General Public License
- * along with this code. If not, see <http://www.gnu.org/licenses/>.
- *
- * As additional permission under GNU AGPL version 3 section 7, you
- * may distribute non-source (e.g., minimized or compacted) forms of
- * that code without the copy of the GNU GPL normally required by
- * section 4, provided you include this license notice and a URL
- * through which recipients can access the Corresponding Source.
+ * WebODF is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License (GNU AGPL)
+ * as published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
*
- * As a special exception to the AGPL, any HTML file which merely makes function
- * calls to this code, and for that purpose includes it by reference shall be
- * deemed a separate work for copyright law purposes. In addition, the copyright
- * holders of this code give you permission to combine this code with free
- * software libraries that are released under the GNU LGPL. You may copy and
- * distribute such a system following the terms of the GNU AGPL for this code
- * and the LGPL for the libraries. If you modify this code, you may extend this
- * exception to your version of the code, but you are not obligated to do so.
- * If you do not wish to do so, delete this exception statement from your
- * version.
+ * WebODF is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
*
- * This license applies to this entire compilation.
+ * You should have received a copy of the GNU Affero General Public License
+ * along with WebODF. If not, see <http://www.gnu.org/licenses/>.
* @licend
+ *
* @source: http://www.webodf.org/
* @source: https://github.com/kogmbh/WebODF/
*/
-/*global define,require*/
+/*global define, require, gui*/
define("webodf/editor/widgets/zoomSlider", [
- "webodf/editor/EditorSession"],
- function (EditorSession) {
- "use strict";
+ "dijit/form/HorizontalSlider"],
- return function ZoomSlider(callback) {
- var self = this,
- editorSession,
- slider,
- extremeZoomFactor = 4;
+ function (HorizontalSlider) {
+ "use strict";
// The slider zooms from -1 to +1, which corresponds
// to zoom levels of 1/extremeZoomFactor to extremeZoomFactor.
- function makeWidget(callback) {
- require(["dijit/form/HorizontalSlider", "dijit/form/NumberTextBox", "dojo"], function (HorizontalSlider, NumberTextBox, dojo) {
- var widget = {};
+ return function ZoomSlider(callback) {
+ var self = this,
+ editorSession,
+ slider,
+ extremeZoomFactor = 4;
+
+ function updateSlider(zoomLevel) {
+ slider.set('value', Math.log(zoomLevel) / Math.log(extremeZoomFactor), false);
+ }
+
+ this.setEditorSession = function (session) {
+ var zoomHelper;
+ if (editorSession) {
+ editorSession.getOdfCanvas().getZoomHelper().unsubscribe(gui.ZoomHelper.signalZoomChanged, updateSlider);
+ }
+
+ editorSession = session;
+ if (editorSession) {
+ zoomHelper = editorSession.getOdfCanvas().getZoomHelper();
+ zoomHelper.subscribe(gui.ZoomHelper.signalZoomChanged, updateSlider);
+ updateSlider(zoomHelper.getZoomLevel());
+ }
+ slider.setAttribute('disabled', !editorSession);
+ };
+ /*jslint emptyblock: true*/
+ this.onToolDone = function () {};
+ /*jslint emptyblock: false*/
+
+ // init
+ function init() {
slider = new HorizontalSlider({
name: 'zoomSlider',
+ disabled: true,
value: 0,
minimum: -1,
maximum: 1,
@@ -75,35 +84,10 @@ define("webodf/editor/widgets/zoomSlider", [
}
self.onToolDone();
};
-
- return callback(slider);
- });
- }
- function updateSlider(zoomLevel) {
- if (slider) {
- slider.set('value', Math.log(zoomLevel) / Math.log(extremeZoomFactor), false);
+ return callback(slider);
}
- }
- this.setEditorSession = function(session) {
- var zoomHelper;
- if (editorSession) {
- editorSession.getOdfCanvas().getZoomHelper().unsubscribe(gui.ZoomHelper.signalZoomChanged, updateSlider);
- }
- editorSession = session;
- if (editorSession) {
- zoomHelper = editorSession.getOdfCanvas().getZoomHelper();
- zoomHelper.subscribe(gui.ZoomHelper.signalZoomChanged, updateSlider);
- updateSlider(zoomHelper.getZoomLevel());
- }
+ init();
};
-
- this.onToolDone = function () {};
-
- // init
- makeWidget(function (widget) {
- return callback(widget);
- });
- };
-});
+ });
diff --git a/js/3rdparty/webodf/webodf-debug.js b/js/3rdparty/webodf/webodf-debug.js
index a890800a..ead4635f 100644
--- a/js/3rdparty/webodf/webodf-debug.js
+++ b/js/3rdparty/webodf/webodf-debug.js
@@ -1,4 +1,30 @@
-var webodf_version = "0.4.2-2050-g8d8fc02-dirty";
+/*
+
+ This is a generated file. DO NOT EDIT.
+
+ Copyright (C) 2010-2015 KO GmbH <copyright@kogmbh.com>
+
+ @licstart
+ This file is the compiled version of the WebODF library.
+
+ WebODF is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Affero General Public License (GNU AGPL)
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version.
+
+ WebODF is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with WebODF. If not, see <http://www.gnu.org/licenses/>.
+ @licend
+
+ @source: http://www.webodf.org/
+ @source: https://github.com/kogmbh/WebODF/
+*/
+var webodf_version = "0.5.7-66-g25bf592";
function Runtime() {
}
Runtime.prototype.getVariable = function(name) {
@@ -21,10 +47,6 @@ Runtime.prototype.loadXML = function(path, callback) {
};
Runtime.prototype.writeFile = function(path, data, callback) {
};
-Runtime.prototype.isFile = function(path, callback) {
-};
-Runtime.prototype.getFileSize = function(path, callback) {
-};
Runtime.prototype.deleteFile = function(path, callback) {
};
Runtime.prototype.log = function(msgOrCategory, msg) {
@@ -53,433 +75,376 @@ Runtime.prototype.requestAnimationFrame = function(callback) {
};
Runtime.prototype.cancelAnimationFrame = function(requestId) {
};
-Runtime.prototype.assert = function(condition, message, callback) {
+Runtime.prototype.assert = function(condition, message) {
};
var IS_COMPILED_CODE = true;
Runtime.byteArrayToString = function(bytearray, encoding) {
function byteArrayToString(bytearray) {
var s = "", i, l = bytearray.length;
- for(i = 0;i < l;i += 1) {
- s += String.fromCharCode(bytearray[i] & 255)
+ for (i = 0;i < l;i += 1) {
+ s += String.fromCharCode(bytearray[i] & 255);
}
- return s
+ return s;
}
function utf8ByteArrayToString(bytearray) {
- var s = "", i, l = bytearray.length, chars = [], c0, c1, c2, c3, codepoint;
- for(i = 0;i < l;i += 1) {
+ var s = "", startPos, i, l = bytearray.length, chars = [], c0, c1, c2, c3, codepoint;
+ if (l >= 3 && bytearray[0] === 239 && bytearray[1] === 187 && bytearray[2] === 191) {
+ startPos = 3;
+ } else {
+ startPos = 0;
+ }
+ for (i = startPos;i < l;i += 1) {
c0 = (bytearray[i]);
- if(c0 < 128) {
- chars.push(c0)
- }else {
+ if (c0 < 128) {
+ chars.push(c0);
+ } else {
i += 1;
c1 = (bytearray[i]);
- if(c0 >= 194 && c0 < 224) {
- chars.push((c0 & 31) << 6 | c1 & 63)
- }else {
+ if (c0 >= 194 && c0 < 224) {
+ chars.push((c0 & 31) << 6 | c1 & 63);
+ } else {
i += 1;
c2 = (bytearray[i]);
- if(c0 >= 224 && c0 < 240) {
- chars.push((c0 & 15) << 12 | (c1 & 63) << 6 | c2 & 63)
- }else {
+ if (c0 >= 224 && c0 < 240) {
+ chars.push((c0 & 15) << 12 | (c1 & 63) << 6 | c2 & 63);
+ } else {
i += 1;
c3 = (bytearray[i]);
- if(c0 >= 240 && c0 < 245) {
+ if (c0 >= 240 && c0 < 245) {
codepoint = (c0 & 7) << 18 | (c1 & 63) << 12 | (c2 & 63) << 6 | c3 & 63;
codepoint -= 65536;
- chars.push((codepoint >> 10) + 55296, (codepoint & 1023) + 56320)
+ chars.push((codepoint >> 10) + 55296, (codepoint & 1023) + 56320);
}
}
}
}
- if(chars.length === 1E3) {
+ if (chars.length >= 1E3) {
s += String.fromCharCode.apply(null, chars);
- chars.length = 0
+ chars.length = 0;
}
}
- return s + String.fromCharCode.apply(null, chars)
+ return s + String.fromCharCode.apply(null, chars);
}
var result;
- if(encoding === "utf8") {
- result = utf8ByteArrayToString(bytearray)
- }else {
- if(encoding !== "binary") {
- this.log("Unsupported encoding: " + encoding)
+ if (encoding === "utf8") {
+ result = utf8ByteArrayToString(bytearray);
+ } else {
+ if (encoding !== "binary") {
+ this.log("Unsupported encoding: " + encoding);
}
- result = byteArrayToString(bytearray)
+ result = byteArrayToString(bytearray);
}
- return result
+ return result;
};
Runtime.getVariable = function(name) {
try {
- return eval(name)
- }catch(e) {
- return undefined
+ return eval(name);
+ } catch (e) {
+ return undefined;
}
};
Runtime.toJson = function(anything) {
- return JSON.stringify(anything)
+ return JSON.stringify(anything);
};
Runtime.fromJson = function(jsonstr) {
- return JSON.parse(jsonstr)
+ return JSON.parse(jsonstr);
};
Runtime.getFunctionName = function getFunctionName(f) {
var m;
- if(f.name === undefined) {
+ if (f.name === undefined) {
m = (new RegExp("function\\s+(\\w+)")).exec(f);
- return m && m[1]
+ return m && m[1];
+ }
+ return f.name;
+};
+Runtime.assert = function(condition, message) {
+ if (!condition) {
+ this.log("alert", "ASSERTION FAILED:\n" + message);
+ throw new Error(message);
}
- return f.name
};
-function BrowserRuntime(logoutput) {
- var self = this, cache = {};
+function BrowserRuntime() {
+ var self = this;
function getUtf8LengthForString(string) {
var l = string.length, i, n, j = 0;
- for(i = 0;i < l;i += 1) {
+ for (i = 0;i < l;i += 1) {
n = string.charCodeAt(i);
j += 1 + (n > 128) + (n > 2048);
- if(n > 55040 && n < 57344) {
+ if (n > 55040 && n < 57344) {
j += 1;
- i += 1
+ i += 1;
}
}
- return j
+ return j;
}
function utf8ByteArrayFromString(string, length, addBOM) {
var l = string.length, bytearray, i, n, j;
bytearray = new Uint8Array(new ArrayBuffer(length));
- if(addBOM) {
+ if (addBOM) {
bytearray[0] = 239;
bytearray[1] = 187;
bytearray[2] = 191;
- j = 3
- }else {
- j = 0
+ j = 3;
+ } else {
+ j = 0;
}
- for(i = 0;i < l;i += 1) {
+ for (i = 0;i < l;i += 1) {
n = string.charCodeAt(i);
- if(n < 128) {
+ if (n < 128) {
bytearray[j] = n;
- j += 1
- }else {
- if(n < 2048) {
+ j += 1;
+ } else {
+ if (n < 2048) {
bytearray[j] = 192 | n >>> 6;
bytearray[j + 1] = 128 | n & 63;
- j += 2
- }else {
- if(n <= 55040 || n >= 57344) {
+ j += 2;
+ } else {
+ if (n <= 55040 || n >= 57344) {
bytearray[j] = 224 | n >>> 12 & 15;
bytearray[j + 1] = 128 | n >>> 6 & 63;
bytearray[j + 2] = 128 | n & 63;
- j += 3
- }else {
+ j += 3;
+ } else {
i += 1;
n = (n - 55296 << 10 | string.charCodeAt(i) - 56320) + 65536;
bytearray[j] = 240 | n >>> 18 & 7;
bytearray[j + 1] = 128 | n >>> 12 & 63;
bytearray[j + 2] = 128 | n >>> 6 & 63;
bytearray[j + 3] = 128 | n & 63;
- j += 4
+ j += 4;
}
}
}
}
- return bytearray
+ return bytearray;
}
function utf8ByteArrayFromXHRString(string, wishLength) {
var addBOM = false, length = getUtf8LengthForString(string);
- if(typeof wishLength === "number") {
- if(wishLength !== length && wishLength !== length + 3) {
- return undefined
+ if (typeof wishLength === "number") {
+ if (wishLength !== length && wishLength !== length + 3) {
+ return undefined;
}
addBOM = length + 3 === wishLength;
- length = wishLength
+ length = wishLength;
}
- return utf8ByteArrayFromString(string, length, addBOM)
+ return utf8ByteArrayFromString(string, length, addBOM);
}
function byteArrayFromString(string) {
var l = string.length, a = new Uint8Array(new ArrayBuffer(l)), i;
- for(i = 0;i < l;i += 1) {
- a[i] = string.charCodeAt(i) & 255
+ for (i = 0;i < l;i += 1) {
+ a[i] = string.charCodeAt(i) & 255;
}
- return a
+ return a;
}
this.byteArrayFromString = function(string, encoding) {
var result;
- if(encoding === "utf8") {
- result = utf8ByteArrayFromString(string, getUtf8LengthForString(string), false)
- }else {
- if(encoding !== "binary") {
- self.log("unknown encoding: " + encoding)
+ if (encoding === "utf8") {
+ result = utf8ByteArrayFromString(string, getUtf8LengthForString(string), false);
+ } else {
+ if (encoding !== "binary") {
+ self.log("unknown encoding: " + encoding);
}
- result = byteArrayFromString(string)
+ result = byteArrayFromString(string);
}
- return result
+ return result;
};
this.byteArrayToString = Runtime.byteArrayToString;
this.getVariable = Runtime.getVariable;
this.fromJson = Runtime.fromJson;
this.toJson = Runtime.toJson;
function log(msgOrCategory, msg) {
- var node, doc, category;
- if(msg !== undefined) {
- category = msgOrCategory
- }else {
- msg = msgOrCategory
- }
- if(logoutput) {
- doc = logoutput.ownerDocument;
- if(category) {
- node = doc.createElement("span");
- node.className = category;
- node.appendChild(doc.createTextNode(category));
- logoutput.appendChild(node);
- logoutput.appendChild(doc.createTextNode(" "))
- }
- node = doc.createElement("span");
- if(msg.length > 0 && msg[0] === "<") {
- node.innerHTML = msg
- }else {
- node.appendChild(doc.createTextNode(msg))
- }
- logoutput.appendChild(node);
- logoutput.appendChild(doc.createElement("br"))
- }else {
- if(console) {
- console.log(msg)
- }
- }
- if(category === "alert") {
- alert(msg)
+ var category;
+ if (msg !== undefined) {
+ category = msgOrCategory;
+ } else {
+ msg = msgOrCategory;
}
- }
- function assert(condition, message, callback) {
- if(!condition) {
- log("alert", "ASSERTION FAILED:\n" + message);
- if(callback) {
- callback()
- }
- throw message;
+ console.log(msg);
+ if (self.enableAlerts && category === "alert") {
+ alert(msg);
}
}
function arrayToUint8Array(buffer) {
var l = buffer.length, i, a = new Uint8Array(new ArrayBuffer(l));
- for(i = 0;i < l;i += 1) {
- a[i] = buffer[i]
+ for (i = 0;i < l;i += 1) {
+ a[i] = buffer[i];
}
- return a
+ return a;
}
function stringToBinaryWorkaround(xhr) {
var cl, data;
cl = xhr.getResponseHeader("Content-Length");
- if(cl) {
- cl = parseInt(cl, 10)
+ if (cl) {
+ cl = parseInt(cl, 10);
}
- if(cl && cl !== xhr.responseText.length) {
- data = utf8ByteArrayFromXHRString(xhr.responseText, cl)
+ if (cl && cl !== xhr.responseText.length) {
+ data = utf8ByteArrayFromXHRString(xhr.responseText, cl);
}
- if(data === undefined) {
- data = byteArrayFromString(xhr.responseText)
+ if (data === undefined) {
+ data = byteArrayFromString(xhr.responseText);
}
- return data
+ return data;
}
function handleXHRResult(path, encoding, xhr) {
var r, d, a, data;
- if(xhr.status === 0 && !xhr.responseText) {
- r = {err:"File " + path + " is empty.", data:null}
- }else {
- if(xhr.status === 200 || xhr.status === 0) {
- if(xhr.response && typeof xhr.response !== "string") {
- if(encoding === "binary") {
+ if (xhr.status === 0 && !xhr.responseText) {
+ r = {err:"File " + path + " is empty.", data:null};
+ } else {
+ if (xhr.status === 200 || xhr.status === 0) {
+ if (xhr.response && typeof xhr.response !== "string") {
+ if (encoding === "binary") {
d = (xhr.response);
- data = new Uint8Array(d)
- }else {
- data = String(xhr.response)
+ data = new Uint8Array(d);
+ } else {
+ data = String(xhr.response);
}
- }else {
- if(encoding === "binary") {
- if(xhr.responseBody !== null && String(typeof VBArray) !== "undefined") {
+ } else {
+ if (encoding === "binary") {
+ if (xhr.responseBody !== null && String(typeof VBArray) !== "undefined") {
a = (new VBArray(xhr.responseBody)).toArray();
- data = arrayToUint8Array(a)
- }else {
- data = stringToBinaryWorkaround(xhr)
+ data = arrayToUint8Array(a);
+ } else {
+ data = stringToBinaryWorkaround(xhr);
}
- }else {
- data = xhr.responseText
+ } else {
+ data = xhr.responseText;
}
}
- cache[path] = data;
- r = {err:null, data:data}
- }else {
- r = {err:xhr.responseText || xhr.statusText, data:null}
+ r = {err:null, data:data};
+ } else {
+ r = {err:xhr.responseText || xhr.statusText, data:null};
}
}
- return r
+ return r;
}
function createXHR(path, encoding, async) {
var xhr = new XMLHttpRequest;
xhr.open("GET", path, async);
- if(xhr.overrideMimeType) {
- if(encoding !== "binary") {
- xhr.overrideMimeType("text/plain; charset=" + encoding)
- }else {
- xhr.overrideMimeType("text/plain; charset=x-user-defined")
+ if (xhr.overrideMimeType) {
+ if (encoding !== "binary") {
+ xhr.overrideMimeType("text/plain; charset=" + encoding);
+ } else {
+ xhr.overrideMimeType("text/plain; charset=x-user-defined");
}
}
- return xhr
+ return xhr;
}
function readFile(path, encoding, callback) {
- if(cache.hasOwnProperty(path)) {
- callback(null, cache[path]);
- return
- }
var xhr = createXHR(path, encoding, true);
function handleResult() {
var r;
- if(xhr.readyState === 4) {
+ if (xhr.readyState === 4) {
r = handleXHRResult(path, encoding, xhr);
- callback(r.err, r.data)
+ callback(r.err, r.data);
}
}
xhr.onreadystatechange = handleResult;
try {
- xhr.send(null)
- }catch(e) {
- callback(e.message, null)
+ xhr.send(null);
+ } catch (e) {
+ callback(e.message, null);
}
}
function read(path, offset, length, callback) {
readFile(path, "binary", function(err, result) {
var r = null;
- if(result) {
- if(typeof result === "string") {
- throw"This should not happen.";
+ if (result) {
+ if (typeof result === "string") {
+ throw "This should not happen.";
}
- r = (result.subarray(offset, offset + length))
+ r = (result.subarray(offset, offset + length));
}
- callback(err, r)
- })
+ callback(err, r);
+ });
}
function readFileSync(path, encoding) {
var xhr = createXHR(path, encoding, false), r;
try {
xhr.send(null);
r = handleXHRResult(path, encoding, xhr);
- if(r.err) {
+ if (r.err) {
throw r.err;
}
- if(r.data === null) {
- throw"No data read from " + path + ".";
+ if (r.data === null) {
+ throw "No data read from " + path + ".";
}
- }catch(e) {
+ } catch (e) {
throw e;
}
- return r.data
+ return r.data;
}
function writeFile(path, data, callback) {
- cache[path] = data;
var xhr = new XMLHttpRequest, d;
function handleResult() {
- if(xhr.readyState === 4) {
- if(xhr.status === 0 && !xhr.responseText) {
- callback("File " + path + " is empty.")
- }else {
- if(xhr.status >= 200 && xhr.status < 300 || xhr.status === 0) {
- callback(null)
- }else {
- callback("Status " + String(xhr.status) + ": " + xhr.responseText || xhr.statusText)
+ if (xhr.readyState === 4) {
+ if (xhr.status === 0 && !xhr.responseText) {
+ callback("File " + path + " is empty.");
+ } else {
+ if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 0) {
+ callback(null);
+ } else {
+ callback("Status " + String(xhr.status) + ": " + xhr.responseText || xhr.statusText);
}
}
}
}
xhr.open("PUT", path, true);
xhr.onreadystatechange = handleResult;
- if(data.buffer && !xhr.sendAsBinary) {
- d = data.buffer
- }else {
- d = self.byteArrayToString(data, "binary")
+ if (data.buffer && !xhr.sendAsBinary) {
+ d = data.buffer;
+ } else {
+ d = self.byteArrayToString(data, "binary");
}
try {
- if(xhr.sendAsBinary) {
- xhr.sendAsBinary(d)
- }else {
- xhr.send(d)
+ if (xhr.sendAsBinary) {
+ xhr.sendAsBinary(d);
+ } else {
+ xhr.send(d);
}
- }catch(e) {
+ } catch (e) {
self.log("HUH? " + e + " " + data);
- callback(e.message)
+ callback(e.message);
}
}
function deleteFile(path, callback) {
- delete cache[path];
var xhr = new XMLHttpRequest;
xhr.open("DELETE", path, true);
xhr.onreadystatechange = function() {
- if(xhr.readyState === 4) {
- if(xhr.status < 200 && xhr.status >= 300) {
- callback(xhr.responseText)
- }else {
- callback(null)
+ if (xhr.readyState === 4) {
+ if (xhr.status < 200 && xhr.status >= 300) {
+ callback(xhr.responseText);
+ } else {
+ callback(null);
}
}
};
- xhr.send(null)
+ xhr.send(null);
}
function loadXML(path, callback) {
var xhr = new XMLHttpRequest;
function handleResult() {
- if(xhr.readyState === 4) {
- if(xhr.status === 0 && !xhr.responseText) {
- callback("File " + path + " is empty.", null)
- }else {
- if(xhr.status === 200 || xhr.status === 0) {
- callback(null, xhr.responseXML)
- }else {
- callback(xhr.responseText, null)
+ if (xhr.readyState === 4) {
+ if (xhr.status === 0 && !xhr.responseText) {
+ callback("File " + path + " is empty.", null);
+ } else {
+ if (xhr.status === 200 || xhr.status === 0) {
+ callback(null, xhr.responseXML);
+ } else {
+ callback(xhr.responseText, null);
}
}
}
}
xhr.open("GET", path, true);
- if(xhr.overrideMimeType) {
- xhr.overrideMimeType("text/xml")
+ if (xhr.overrideMimeType) {
+ xhr.overrideMimeType("text/xml");
}
xhr.onreadystatechange = handleResult;
try {
- xhr.send(null)
- }catch(e) {
- callback(e.message, null)
- }
- }
- function isFile(path, callback) {
- self.getFileSize(path, function(size) {
- callback(size !== -1)
- })
- }
- function getFileSize(path, callback) {
- if(cache.hasOwnProperty(path) && typeof cache[path] !== "string") {
- callback(cache[path].length);
- return
+ xhr.send(null);
+ } catch (e) {
+ callback(e.message, null);
}
- var xhr = new XMLHttpRequest;
- xhr.open("HEAD", path, true);
- xhr.onreadystatechange = function() {
- if(xhr.readyState !== 4) {
- return
- }
- var cl = xhr.getResponseHeader("Content-Length");
- if(cl) {
- callback(parseInt(cl, 10))
- }else {
- readFile(path, "binary", function(err, data) {
- if(!err) {
- callback(data.length)
- }else {
- callback(-1)
- }
- })
- }
- };
- xhr.send(null)
}
this.readFile = readFile;
this.read = read;
@@ -487,241 +452,215 @@ function BrowserRuntime(logoutput) {
this.writeFile = writeFile;
this.deleteFile = deleteFile;
this.loadXML = loadXML;
- this.isFile = isFile;
- this.getFileSize = getFileSize;
this.log = log;
- this.assert = assert;
+ this.enableAlerts = true;
+ this.assert = Runtime.assert;
this.setTimeout = function(f, msec) {
return setTimeout(function() {
- f()
- }, msec)
+ f();
+ }, msec);
};
this.clearTimeout = function(timeoutID) {
- clearTimeout(timeoutID)
+ clearTimeout(timeoutID);
};
this.libraryPaths = function() {
- return["lib"]
+ return ["lib"];
};
this.setCurrentDirectory = function() {
};
this.currentDirectory = function() {
- return""
+ return "";
};
this.type = function() {
- return"BrowserRuntime"
+ return "BrowserRuntime";
};
this.getDOMImplementation = function() {
- return window.document.implementation
+ return window.document.implementation;
};
this.parseXML = function(xml) {
var parser = new DOMParser;
- return parser.parseFromString(xml, "text/xml")
+ return parser.parseFromString(xml, "text/xml");
};
this.exit = function(exitCode) {
- log("Calling exit with code " + String(exitCode) + ", but exit() is not implemented.")
+ log("Calling exit with code " + String(exitCode) + ", but exit() is not implemented.");
};
this.getWindow = function() {
- return window
+ return window;
};
this.requestAnimationFrame = function(callback) {
- var rAF = window.requestAnimationFrame || (window.webkitRequestAnimationFrame || (window.mozRequestAnimationFrame || window.msRequestAnimationFrame)), requestId = 0;
- if(rAF) {
+ var rAF = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame, requestId = 0;
+ if (rAF) {
rAF.bind(window);
- requestId = (rAF)(callback)
- }else {
- return setTimeout(callback, 15)
+ requestId = (rAF)(callback);
+ } else {
+ return setTimeout(callback, 15);
}
- return requestId
+ return requestId;
};
this.cancelAnimationFrame = function(requestId) {
- var cAF = window.cancelAnimationFrame || (window.webkitCancelAnimationFrame || (window.mozCancelAnimationFrame || window.msCancelAnimationFrame));
- if(cAF) {
+ var cAF = window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || window.msCancelAnimationFrame;
+ if (cAF) {
cAF.bind(window);
- (cAF)(requestId)
- }else {
- clearTimeout(requestId)
+ (cAF)(requestId);
+ } else {
+ clearTimeout(requestId);
}
- }
+ };
}
function NodeJSRuntime() {
var self = this, fs = require("fs"), pathmod = require("path"), currentDirectory = "", parser, domImplementation;
function bufferToUint8Array(buffer) {
var l = buffer.length, i, a = new Uint8Array(new ArrayBuffer(l));
- for(i = 0;i < l;i += 1) {
- a[i] = buffer[i]
+ for (i = 0;i < l;i += 1) {
+ a[i] = buffer[i];
}
- return a
+ return a;
}
this.byteArrayFromString = function(string, encoding) {
var buf = new Buffer(string, encoding), i, l = buf.length, a = new Uint8Array(new ArrayBuffer(l));
- for(i = 0;i < l;i += 1) {
- a[i] = buf[i]
+ for (i = 0;i < l;i += 1) {
+ a[i] = buf[i];
}
- return a
+ return a;
};
this.byteArrayToString = Runtime.byteArrayToString;
this.getVariable = Runtime.getVariable;
this.fromJson = Runtime.fromJson;
this.toJson = Runtime.toJson;
- function isFile(path, callback) {
- path = pathmod.resolve(currentDirectory, path);
- fs.stat(path, function(err, stats) {
- callback(!err && stats.isFile())
- })
- }
function readFile(path, encoding, callback) {
function convert(err, data) {
- if(err) {
- return callback(err, null)
+ if (err) {
+ return callback(err, null);
}
- if(!data) {
- return callback("No data for " + path + ".", null)
+ if (!data) {
+ return callback("No data for " + path + ".", null);
}
var d;
- if(typeof data === "string") {
+ if (typeof data === "string") {
d = (data);
- return callback(err, d)
+ return callback(err, d);
}
d = (data);
- callback(err, bufferToUint8Array(d))
+ callback(err, bufferToUint8Array(d));
}
path = pathmod.resolve(currentDirectory, path);
- if(encoding !== "binary") {
- fs.readFile(path, encoding, convert)
- }else {
- fs.readFile(path, null, convert)
+ if (encoding !== "binary") {
+ fs.readFile(path, encoding, convert);
+ } else {
+ fs.readFile(path, null, convert);
}
}
this.readFile = readFile;
function loadXML(path, callback) {
readFile(path, "utf-8", function(err, data) {
- if(err) {
- return callback(err, null)
+ if (err) {
+ return callback(err, null);
}
- if(!data) {
- return callback("No data for " + path + ".", null)
+ if (!data) {
+ return callback("No data for " + path + ".", null);
}
var d = (data);
- callback(null, self.parseXML(d))
- })
+ callback(null, self.parseXML(d));
+ });
}
this.loadXML = loadXML;
this.writeFile = function(path, data, callback) {
var buf = new Buffer(data);
path = pathmod.resolve(currentDirectory, path);
fs.writeFile(path, buf, "binary", function(err) {
- callback(err || null)
- })
+ callback(err || null);
+ });
};
this.deleteFile = function(path, callback) {
path = pathmod.resolve(currentDirectory, path);
- fs.unlink(path, callback)
+ fs.unlink(path, callback);
};
this.read = function(path, offset, length, callback) {
path = pathmod.resolve(currentDirectory, path);
fs.open(path, "r+", 666, function(err, fd) {
- if(err) {
+ if (err) {
callback(err, null);
- return
+ return;
}
var buffer = new Buffer(length);
fs.read(fd, buffer, 0, length, offset, function(err) {
fs.close(fd);
- callback(err, bufferToUint8Array(buffer))
- })
- })
+ callback(err, bufferToUint8Array(buffer));
+ });
+ });
};
this.readFileSync = function(path, encoding) {
var s, enc = encoding === "binary" ? null : encoding, r = fs.readFileSync(path, enc);
- if(r === null) {
- throw"File " + path + " could not be read.";
+ if (r === null) {
+ throw "File " + path + " could not be read.";
}
- if(encoding === "binary") {
+ if (encoding === "binary") {
+ s = (r);
+ s = bufferToUint8Array(s);
+ } else {
s = (r);
- s = bufferToUint8Array(s)
- }else {
- s = (r)
}
- return s
- };
- this.isFile = isFile;
- this.getFileSize = function(path, callback) {
- path = pathmod.resolve(currentDirectory, path);
- fs.stat(path, function(err, stats) {
- if(err) {
- callback(-1)
- }else {
- callback(stats.size)
- }
- })
+ return s;
};
function log(msgOrCategory, msg) {
var category;
- if(msg !== undefined) {
- category = msgOrCategory
- }else {
- msg = msgOrCategory
+ if (msg !== undefined) {
+ category = msgOrCategory;
+ } else {
+ msg = msgOrCategory;
}
- if(category === "alert") {
- process.stderr.write("\n!!!!! ALERT !!!!!" + "\n")
+ if (category === "alert") {
+ process.stderr.write("\n!!!!! ALERT !!!!!" + "\n");
}
process.stderr.write(msg + "\n");
- if(category === "alert") {
- process.stderr.write("!!!!! ALERT !!!!!" + "\n")
+ if (category === "alert") {
+ process.stderr.write("!!!!! ALERT !!!!!" + "\n");
}
}
this.log = log;
- function assert(condition, message, callback) {
- if(!condition) {
- process.stderr.write("ASSERTION FAILED: " + message);
- if(callback) {
- callback()
- }
- }
- }
- this.assert = assert;
+ this.assert = Runtime.assert;
this.setTimeout = function(f, msec) {
return setTimeout(function() {
- f()
- }, msec)
+ f();
+ }, msec);
};
this.clearTimeout = function(timeoutID) {
- clearTimeout(timeoutID)
+ clearTimeout(timeoutID);
};
this.libraryPaths = function() {
- return[__dirname]
+ return [__dirname];
};
this.setCurrentDirectory = function(dir) {
- currentDirectory = dir
+ currentDirectory = dir;
};
this.currentDirectory = function() {
- return currentDirectory
+ return currentDirectory;
};
this.type = function() {
- return"NodeJSRuntime"
+ return "NodeJSRuntime";
};
this.getDOMImplementation = function() {
- return domImplementation
+ return domImplementation;
};
this.parseXML = function(xml) {
- return parser.parseFromString(xml, "text/xml")
+ return parser.parseFromString(xml, "text/xml");
};
this.exit = process.exit;
this.getWindow = function() {
- return null
+ return null;
};
this.requestAnimationFrame = function(callback) {
- return setTimeout(callback, 15)
+ return setTimeout(callback, 15);
};
this.cancelAnimationFrame = function(requestId) {
- clearTimeout(requestId)
+ clearTimeout(requestId);
};
function init() {
var DOMParser = require("xmldom").DOMParser;
parser = new DOMParser;
- domImplementation = self.parseXML("<a/>").implementation
+ domImplementation = self.parseXML("<a/>").implementation;
}
- init()
+ init();
}
function RhinoRuntime() {
var self = this, Packages = {}, dom = Packages.javax.xml.parsers.DocumentBuilderFactory.newInstance(), builder, entityresolver, currentDirectory = "";
@@ -733,19 +672,19 @@ function RhinoRuntime() {
var file;
function open(path) {
var reader = new Packages.java.io.FileReader(path), source = new Packages.org.xml.sax.InputSource(reader);
- return source
+ return source;
}
file = systemId;
- return open(file)
+ return open(file);
}});
builder = dom.newDocumentBuilder();
builder.setEntityResolver(entityresolver);
this.byteArrayFromString = function(string, encoding) {
var i, l = string.length, a = new Uint8Array(new ArrayBuffer(l));
- for(i = 0;i < l;i += 1) {
- a[i] = string.charCodeAt(i) & 255
+ for (i = 0;i < l;i += 1) {
+ a[i] = string.charCodeAt(i) & 255;
}
- return a
+ return a;
};
this.byteArrayToString = Runtime.byteArrayToString;
this.getVariable = Runtime.getVariable;
@@ -754,172 +693,149 @@ function RhinoRuntime() {
function loadXML(path, callback) {
var file = new Packages.java.io.File(path), xmlDocument = null;
try {
- xmlDocument = builder.parse(file)
- }catch(err) {
+ xmlDocument = builder.parse(file);
+ } catch (err) {
print(err);
- return callback(err, null)
+ return callback(err, null);
}
- callback(null, xmlDocument)
+ callback(null, xmlDocument);
}
function runtimeReadFile(path, encoding, callback) {
- if(currentDirectory) {
- path = currentDirectory + "/" + path
+ if (currentDirectory) {
+ path = currentDirectory + "/" + path;
}
var file = new Packages.java.io.File(path), data, rhinoencoding = encoding === "binary" ? "latin1" : encoding;
- if(!file.isFile()) {
- callback(path + " is not a file.", null)
- }else {
+ if (!file.isFile()) {
+ callback(path + " is not a file.", null);
+ } else {
data = readFile(path, rhinoencoding);
- if(data && encoding === "binary") {
- data = self.byteArrayFromString(data, "binary")
+ if (data && encoding === "binary") {
+ data = self.byteArrayFromString(data, "binary");
}
- callback(null, data)
+ callback(null, data);
}
}
function runtimeReadFileSync(path, encoding) {
var file = new Packages.java.io.File(path);
- if(!file.isFile()) {
- return null
- }
- if(encoding === "binary") {
- encoding = "latin1"
+ if (!file.isFile()) {
+ return null;
}
- return readFile(path, encoding)
- }
- function isFile(path, callback) {
- if(currentDirectory) {
- path = currentDirectory + "/" + path
+ if (encoding === "binary") {
+ encoding = "latin1";
}
- var file = new Packages.java.io.File(path);
- callback(file.isFile())
+ return readFile(path, encoding);
}
this.loadXML = loadXML;
this.readFile = runtimeReadFile;
this.writeFile = function(path, data, callback) {
- if(currentDirectory) {
- path = currentDirectory + "/" + path
+ if (currentDirectory) {
+ path = currentDirectory + "/" + path;
}
var out = new Packages.java.io.FileOutputStream(path), i, l = data.length;
- for(i = 0;i < l;i += 1) {
- out.write(data[i])
+ for (i = 0;i < l;i += 1) {
+ out.write(data[i]);
}
out.close();
- callback(null)
+ callback(null);
};
this.deleteFile = function(path, callback) {
- if(currentDirectory) {
- path = currentDirectory + "/" + path
+ if (currentDirectory) {
+ path = currentDirectory + "/" + path;
}
var file = new Packages.java.io.File(path), otherPath = path + Math.random(), other = new Packages.java.io.File(otherPath);
- if(file.rename(other)) {
+ if (file.rename(other)) {
other.deleteOnExit();
- callback(null)
- }else {
- callback("Could not delete " + path)
+ callback(null);
+ } else {
+ callback("Could not delete " + path);
}
};
this.read = function(path, offset, length, callback) {
- if(currentDirectory) {
- path = currentDirectory + "/" + path
+ if (currentDirectory) {
+ path = currentDirectory + "/" + path;
}
var data = runtimeReadFileSync(path, "binary");
- if(data) {
- callback(null, this.byteArrayFromString(data.substring(offset, offset + length), "binary"))
- }else {
- callback("Cannot read " + path, null)
+ if (data) {
+ callback(null, this.byteArrayFromString(data.substring(offset, offset + length), "binary"));
+ } else {
+ callback("Cannot read " + path, null);
}
};
this.readFileSync = function(path, encoding) {
- if(!encoding) {
- return""
+ if (!encoding) {
+ return "";
}
var s = readFile(path, encoding);
- if(s === null) {
- throw"File could not be read.";
- }
- return s
- };
- this.isFile = isFile;
- this.getFileSize = function(path, callback) {
- if(currentDirectory) {
- path = currentDirectory + "/" + path
+ if (s === null) {
+ throw "File could not be read.";
}
- var file = new Packages.java.io.File(path);
- callback(file.length())
+ return s;
};
function log(msgOrCategory, msg) {
var category;
- if(msg !== undefined) {
- category = msgOrCategory
- }else {
- msg = msgOrCategory
+ if (msg !== undefined) {
+ category = msgOrCategory;
+ } else {
+ msg = msgOrCategory;
}
- if(category === "alert") {
- print("\n!!!!! ALERT !!!!!")
+ if (category === "alert") {
+ print("\n!!!!! ALERT !!!!!");
}
print(msg);
- if(category === "alert") {
- print("!!!!! ALERT !!!!!")
+ if (category === "alert") {
+ print("!!!!! ALERT !!!!!");
}
}
this.log = log;
- function assert(condition, message, callback) {
- if(!condition) {
- log("alert", "ASSERTION FAILED: " + message);
- if(callback) {
- callback()
- }
- }
- }
- this.assert = assert;
+ this.assert = Runtime.assert;
this.setTimeout = function(f) {
f();
- return 0
+ return 0;
};
this.clearTimeout = function() {
};
this.libraryPaths = function() {
- return["lib"]
+ return ["lib"];
};
this.setCurrentDirectory = function(dir) {
- currentDirectory = dir
+ currentDirectory = dir;
};
this.currentDirectory = function() {
- return currentDirectory
+ return currentDirectory;
};
this.type = function() {
- return"RhinoRuntime"
+ return "RhinoRuntime";
};
this.getDOMImplementation = function() {
- return builder.getDOMImplementation()
+ return builder.getDOMImplementation();
};
this.parseXML = function(xml) {
var reader = new Packages.java.io.StringReader(xml), source = new Packages.org.xml.sax.InputSource(reader);
- return builder.parse(source)
+ return builder.parse(source);
};
this.exit = quit;
this.getWindow = function() {
- return null
+ return null;
};
this.requestAnimationFrame = function(callback) {
callback();
- return 0
+ return 0;
};
this.cancelAnimationFrame = function() {
- }
+ };
}
Runtime.create = function create() {
var result;
- if(String(typeof window) !== "undefined") {
- result = new BrowserRuntime(window.document.getElementById("logoutput"))
- }else {
- if(String(typeof require) !== "undefined") {
- result = new NodeJSRuntime
- }else {
- result = new RhinoRuntime
+ if (String(typeof window) !== "undefined") {
+ result = new BrowserRuntime;
+ } else {
+ if (String(typeof require) !== "undefined") {
+ result = new NodeJSRuntime;
+ } else {
+ result = new RhinoRuntime;
}
}
- return result
+ return result;
};
var runtime = Runtime.create();
var core = {};
@@ -927,417 +843,428 @@ var gui = {};
var xmldom = {};
var odf = {};
var ops = {};
+var webodf = {};
+(function() {
+ function getWebODFVersion() {
+ var version = String(typeof webodf_version) !== "undefined" ? webodf_version : "From Source";
+ return version;
+ }
+ webodf.Version = getWebODFVersion();
+})();
(function() {
function loadDependenciesFromManifest(dir, dependencies, expectFail) {
var path = dir + "/manifest.json", content, list, manifest, m;
runtime.log("Loading manifest: " + path);
try {
- content = runtime.readFileSync(path, "utf-8")
- }catch(e) {
- if(expectFail) {
- runtime.log("No loadable manifest found.")
- }else {
+ content = runtime.readFileSync(path, "utf-8");
+ } catch (e) {
+ if (expectFail) {
+ runtime.log("No loadable manifest found.");
+ } else {
console.log(String(e));
throw e;
}
- return
+ return;
}
list = JSON.parse((content));
manifest = (list);
- for(m in manifest) {
- if(manifest.hasOwnProperty(m)) {
- dependencies[m] = {dir:dir, deps:manifest[m]}
+ for (m in manifest) {
+ if (manifest.hasOwnProperty(m)) {
+ dependencies[m] = {dir:dir, deps:manifest[m]};
}
}
}
function loadDependenciesFromManifests() {
var dependencies = [], paths = runtime.libraryPaths(), i;
- if(runtime.currentDirectory() && paths.indexOf(runtime.currentDirectory()) === -1) {
- loadDependenciesFromManifest(runtime.currentDirectory(), dependencies, true)
+ if (runtime.currentDirectory() && paths.indexOf(runtime.currentDirectory()) === -1) {
+ loadDependenciesFromManifest(runtime.currentDirectory(), dependencies, true);
}
- for(i = 0;i < paths.length;i += 1) {
- loadDependenciesFromManifest(paths[i], dependencies)
+ for (i = 0;i < paths.length;i += 1) {
+ loadDependenciesFromManifest(paths[i], dependencies);
}
- return dependencies
+ return dependencies;
}
function getPath(dir, className) {
- return dir + "/" + className.replace(".", "/") + ".js"
+ return dir + "/" + className.replace(".", "/") + ".js";
}
function getLoadList(classNames, dependencies, isDefined) {
var loadList = [], stack = {}, visited = {};
function visit(n) {
- if(visited[n] || isDefined(n)) {
- return
+ if (visited[n] || isDefined(n)) {
+ return;
}
- if(stack[n]) {
- throw"Circular dependency detected for " + n + ".";
+ if (stack[n]) {
+ throw "Circular dependency detected for " + n + ".";
}
stack[n] = true;
- if(!dependencies[n]) {
- throw"Missing dependency information for class " + n + ".";
+ if (!dependencies[n]) {
+ throw "Missing dependency information for class " + n + ".";
}
var d = dependencies[n], deps = d.deps, i, l = deps.length;
- for(i = 0;i < l;i += 1) {
- visit(deps[i])
+ for (i = 0;i < l;i += 1) {
+ visit(deps[i]);
}
stack[n] = false;
visited[n] = true;
- loadList.push(getPath(d.dir, n))
+ loadList.push(getPath(d.dir, n));
}
classNames.forEach(visit);
- return loadList
+ return loadList;
}
function addContent(path, content) {
content += "\n//# sourceURL=" + path;
- content += "\n//@ sourceURL=" + path;
- return content
+ return content;
}
function loadFiles(paths) {
var i, content;
- for(i = 0;i < paths.length;i += 1) {
+ for (i = 0;i < paths.length;i += 1) {
content = runtime.readFileSync(paths[i], "utf-8");
content = addContent(paths[i], (content));
- eval(content)
+ eval(content);
}
}
function loadFilesInBrowser(paths, callback) {
var e = document.currentScript || document.documentElement.lastChild, df = document.createDocumentFragment(), script, i;
- for(i = 0;i < paths.length;i += 1) {
+ for (i = 0;i < paths.length;i += 1) {
script = document.createElement("script");
script.type = "text/javascript";
script.charset = "utf-8";
script.async = false;
script.setAttribute("src", paths[i]);
- df.appendChild(script)
+ df.appendChild(script);
}
- if(callback) {
- script.onload = callback
+ if (callback) {
+ script.onload = callback;
}
- e.parentNode.insertBefore(df, e)
+ e.parentNode.insertBefore(df, e);
}
var dependencies, packages = {core:core, gui:gui, xmldom:xmldom, odf:odf, ops:ops};
function isDefined(classname) {
var parts = classname.split("."), i, p = packages, l = parts.length;
- for(i = 0;i < l;i += 1) {
- if(!p.hasOwnProperty(parts[i])) {
- return false
+ for (i = 0;i < l;i += 1) {
+ if (!p.hasOwnProperty(parts[i])) {
+ return false;
}
- p = (p[parts[i]])
+ p = (p[parts[i]]);
}
- return true
+ return true;
}
runtime.loadClasses = function(classnames, callback) {
- if(IS_COMPILED_CODE || classnames.length === 0) {
- return callback && callback()
+ if (IS_COMPILED_CODE || classnames.length === 0) {
+ return callback && callback();
}
dependencies = dependencies || loadDependenciesFromManifests();
classnames = getLoadList(classnames, dependencies, isDefined);
- if(classnames.length === 0) {
- return callback && callback()
+ if (classnames.length === 0) {
+ return callback && callback();
}
- if(runtime.type() === "BrowserRuntime" && callback) {
- loadFilesInBrowser(classnames, callback)
- }else {
+ if (runtime.type() === "BrowserRuntime" && callback) {
+ loadFilesInBrowser(classnames, callback);
+ } else {
loadFiles(classnames);
- if(callback) {
- callback()
+ if (callback) {
+ callback();
}
}
};
runtime.loadClass = function(classname, callback) {
- runtime.loadClasses([classname], callback)
- }
+ runtime.loadClasses([classname], callback);
+ };
})();
(function() {
var translator = function(string) {
- return string
+ return string;
};
function tr(original) {
var result = translator(original);
- if(!result || String(typeof result) !== "string") {
- return original
+ if (!result || String(typeof result) !== "string") {
+ return original;
}
- return result
+ return result;
}
runtime.getTranslator = function() {
- return translator
+ return translator;
};
runtime.setTranslator = function(translatorFunction) {
- translator = translatorFunction
+ translator = translatorFunction;
};
- runtime.tr = tr
+ runtime.tr = tr;
})();
(function(args) {
- if(args) {
- args = Array.prototype.slice.call((args))
- }else {
- args = []
+ if (args) {
+ args = Array.prototype.slice.call((args));
+ } else {
+ args = [];
}
function run(argv) {
- if(!argv.length) {
- return
+ if (!argv.length) {
+ return;
}
var script = argv[0];
runtime.readFile(script, "utf8", function(err, code) {
var path = "", pathEndIndex = script.lastIndexOf("/"), codestring = (code);
- if(pathEndIndex !== -1) {
- path = script.substring(0, pathEndIndex)
- }else {
- path = "."
+ if (pathEndIndex !== -1) {
+ path = script.substring(0, pathEndIndex);
+ } else {
+ path = ".";
}
runtime.setCurrentDirectory(path);
function inner_run() {
var script, path, args, argv, result;
result = (eval(codestring));
- if(result) {
- runtime.exit(result)
+ if (result) {
+ runtime.exit(result);
}
- return
+ return;
}
- if(err) {
+ if (err) {
runtime.log(err);
- runtime.exit(1)
- }else {
- if(codestring === null) {
+ runtime.exit(1);
+ } else {
+ if (codestring === null) {
runtime.log("No code found for " + script);
- runtime.exit(1)
- }else {
- inner_run.apply(null, argv)
+ runtime.exit(1);
+ } else {
+ inner_run.apply(null, argv);
}
}
- })
+ });
}
- if(runtime.type() === "NodeJSRuntime") {
- run(process.argv.slice(2))
- }else {
- if(runtime.type() === "RhinoRuntime") {
- run(args)
- }else {
- run(args.slice(1))
+ if (runtime.type() === "NodeJSRuntime") {
+ run(process.argv.slice(2));
+ } else {
+ if (runtime.type() === "RhinoRuntime") {
+ run(args);
+ } else {
+ run(args.slice(1));
}
}
})(String(typeof arguments) !== "undefined" && arguments);
-core.Async = function Async() {
- this.forEach = function(items, f, callback) {
- var i, l = items.length, itemsDone = 0;
- function end(err) {
- if(itemsDone !== l) {
- if(err) {
- itemsDone = l;
- callback(err)
- }else {
- itemsDone += 1;
- if(itemsDone === l) {
- callback(null)
+(function() {
+ function createASyncSingleton() {
+ function forEach(items, f, callback) {
+ var i, l = items.length, itemsDone = 0;
+ function end(err) {
+ if (itemsDone !== l) {
+ if (err) {
+ itemsDone = l;
+ callback(err);
+ } else {
+ itemsDone += 1;
+ if (itemsDone === l) {
+ callback(null);
+ }
}
}
}
+ for (i = 0;i < l;i += 1) {
+ f(items[i], end);
+ }
}
- for(i = 0;i < l;i += 1) {
- f(items[i], end)
- }
- };
- this.destroyAll = function(items, callback) {
- function destroy(itemIndex, err) {
- if(err) {
- callback(err)
- }else {
- if(itemIndex < items.length) {
- items[itemIndex](function(err) {
- destroy(itemIndex + 1, err)
- })
- }else {
- callback()
+ function destroyAll(items, callback) {
+ function destroy(itemIndex, err) {
+ if (err) {
+ callback(err);
+ } else {
+ if (itemIndex < items.length) {
+ items[itemIndex](function(err) {
+ destroy(itemIndex + 1, err);
+ });
+ } else {
+ callback();
+ }
}
}
+ destroy(0, undefined);
}
- destroy(0, undefined)
+ return {forEach:forEach, destroyAll:destroyAll};
}
-};
+ core.Async = createASyncSingleton();
+})();
function makeBase64() {
function makeB64tab(bin) {
var t = {}, i, l;
- for(i = 0, l = bin.length;i < l;i += 1) {
- t[bin.charAt(i)] = i
+ for (i = 0, l = bin.length;i < l;i += 1) {
+ t[bin.charAt(i)] = i;
}
- return t
+ return t;
}
var b64chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", b64tab = makeB64tab(b64chars), convertUTF16StringToBase64, convertBase64ToUTF16String, window = runtime.getWindow(), btoa, atob;
function stringToArray(s) {
var i, l = s.length, a = new Uint8Array(new ArrayBuffer(l));
- for(i = 0;i < l;i += 1) {
- a[i] = s.charCodeAt(i) & 255
+ for (i = 0;i < l;i += 1) {
+ a[i] = s.charCodeAt(i) & 255;
}
- return a
+ return a;
}
function convertUTF8ArrayToBase64(bin) {
var n, b64 = "", i, l = bin.length - 2;
- for(i = 0;i < l;i += 3) {
+ for (i = 0;i < l;i += 3) {
n = bin[i] << 16 | bin[i + 1] << 8 | bin[i + 2];
b64 += (b64chars[n >>> 18]);
b64 += (b64chars[n >>> 12 & 63]);
b64 += (b64chars[n >>> 6 & 63]);
- b64 += (b64chars[n & 63])
+ b64 += (b64chars[n & 63]);
}
- if(i === l + 1) {
+ if (i === l + 1) {
n = bin[i] << 4;
b64 += (b64chars[n >>> 6]);
b64 += (b64chars[n & 63]);
- b64 += "=="
- }else {
- if(i === l) {
+ b64 += "==";
+ } else {
+ if (i === l) {
n = bin[i] << 10 | bin[i + 1] << 2;
b64 += (b64chars[n >>> 12]);
b64 += (b64chars[n >>> 6 & 63]);
b64 += (b64chars[n & 63]);
- b64 += "="
+ b64 += "=";
}
}
- return b64
+ return b64;
}
function convertBase64ToUTF8Array(b64) {
b64 = b64.replace(/[^A-Za-z0-9+\/]+/g, "");
- var l = b64.length, bin = new Uint8Array(new ArrayBuffer(3 * l)), padlen = b64.length % 4, o = 0, i, n;
- for(i = 0;i < l;i += 4) {
+ var l = b64.length, bin = new Uint8Array(new ArrayBuffer(3 * l)), padlen = b64.length % 4, o = 0, i, n, a = [0, 0, 2, 1];
+ for (i = 0;i < l;i += 4) {
n = (b64tab[b64.charAt(i)] || 0) << 18 | (b64tab[b64.charAt(i + 1)] || 0) << 12 | (b64tab[b64.charAt(i + 2)] || 0) << 6 | (b64tab[b64.charAt(i + 3)] || 0);
bin[o] = n >> 16;
bin[o + 1] = n >> 8 & 255;
bin[o + 2] = n & 255;
- o += 3
+ o += 3;
}
- l = 3 * l - [0, 0, 2, 1][padlen];
- return bin.subarray(0, l)
+ l = 3 * l - a[padlen];
+ return bin.subarray(0, l);
}
function convertUTF16ArrayToUTF8Array(uni) {
var i, n, l = uni.length, o = 0, bin = new Uint8Array(new ArrayBuffer(3 * l));
- for(i = 0;i < l;i += 1) {
+ for (i = 0;i < l;i += 1) {
n = (uni[i]);
- if(n < 128) {
- bin[o++] = n
- }else {
- if(n < 2048) {
+ if (n < 128) {
+ bin[o++] = n;
+ } else {
+ if (n < 2048) {
bin[o++] = 192 | n >>> 6;
- bin[o++] = 128 | n & 63
- }else {
+ bin[o++] = 128 | n & 63;
+ } else {
bin[o++] = 224 | n >>> 12 & 15;
bin[o++] = 128 | n >>> 6 & 63;
- bin[o++] = 128 | n & 63
+ bin[o++] = 128 | n & 63;
}
}
}
- return bin.subarray(0, o)
+ return bin.subarray(0, o);
}
function convertUTF8ArrayToUTF16Array(bin) {
var i, c0, c1, c2, l = bin.length, uni = new Uint8Array(new ArrayBuffer(l)), o = 0;
- for(i = 0;i < l;i += 1) {
+ for (i = 0;i < l;i += 1) {
c0 = (bin[i]);
- if(c0 < 128) {
- uni[o++] = c0
- }else {
+ if (c0 < 128) {
+ uni[o++] = c0;
+ } else {
i += 1;
c1 = (bin[i]);
- if(c0 < 224) {
- uni[o++] = (c0 & 31) << 6 | c1 & 63
- }else {
+ if (c0 < 224) {
+ uni[o++] = (c0 & 31) << 6 | c1 & 63;
+ } else {
i += 1;
c2 = (bin[i]);
- uni[o++] = (c0 & 15) << 12 | (c1 & 63) << 6 | c2 & 63
+ uni[o++] = (c0 & 15) << 12 | (c1 & 63) << 6 | c2 & 63;
}
}
}
- return uni.subarray(0, o)
+ return uni.subarray(0, o);
}
function convertUTF8StringToBase64(bin) {
- return convertUTF8ArrayToBase64(stringToArray(bin))
+ return convertUTF8ArrayToBase64(stringToArray(bin));
}
function convertBase64ToUTF8String(b64) {
- return String.fromCharCode.apply(String, convertBase64ToUTF8Array(b64))
+ return String.fromCharCode.apply(String, convertBase64ToUTF8Array(b64));
}
function convertUTF8StringToUTF16Array(bin) {
- return convertUTF8ArrayToUTF16Array(stringToArray(bin))
+ return convertUTF8ArrayToUTF16Array(stringToArray(bin));
}
function convertUTF8ArrayToUTF16String(bin) {
var b = convertUTF8ArrayToUTF16Array(bin), r = "", i = 0, chunksize = 45E3;
- while(i < b.length) {
+ while (i < b.length) {
r += String.fromCharCode.apply(String, b.subarray(i, i + chunksize));
- i += chunksize
+ i += chunksize;
}
- return r
+ return r;
}
function convertUTF8StringToUTF16String_internal(bin, i, end) {
var c0, c1, c2, j, str = "";
- for(j = i;j < end;j += 1) {
+ for (j = i;j < end;j += 1) {
c0 = bin.charCodeAt(j) & 255;
- if(c0 < 128) {
- str += String.fromCharCode(c0)
- }else {
+ if (c0 < 128) {
+ str += String.fromCharCode(c0);
+ } else {
j += 1;
c1 = bin.charCodeAt(j) & 255;
- if(c0 < 224) {
- str += String.fromCharCode((c0 & 31) << 6 | c1 & 63)
- }else {
+ if (c0 < 224) {
+ str += String.fromCharCode((c0 & 31) << 6 | c1 & 63);
+ } else {
j += 1;
c2 = bin.charCodeAt(j) & 255;
- str += String.fromCharCode((c0 & 15) << 12 | (c1 & 63) << 6 | c2 & 63)
+ str += String.fromCharCode((c0 & 15) << 12 | (c1 & 63) << 6 | c2 & 63);
}
}
}
- return str
+ return str;
}
function convertUTF8StringToUTF16String(bin, callback) {
var partsize = 1E5, str = "", pos = 0;
- if(bin.length < partsize) {
+ if (bin.length < partsize) {
callback(convertUTF8StringToUTF16String_internal(bin, 0, bin.length), true);
- return
+ return;
}
- if(typeof bin !== "string") {
- bin = bin.slice()
+ if (typeof bin !== "string") {
+ bin = bin.slice();
}
function f() {
var end = pos + partsize;
- if(end > bin.length) {
- end = bin.length
+ if (end > bin.length) {
+ end = bin.length;
}
str += convertUTF8StringToUTF16String_internal(bin, pos, end);
pos = end;
end = pos === bin.length;
- if(callback(str, end) && !end) {
- runtime.setTimeout(f, 0)
+ if (callback(str, end) && !end) {
+ runtime.setTimeout(f, 0);
}
}
- f()
+ f();
}
function convertUTF16StringToUTF8Array(uni) {
- return convertUTF16ArrayToUTF8Array(stringToArray(uni))
+ return convertUTF16ArrayToUTF8Array(stringToArray(uni));
}
function convertUTF16ArrayToUTF8String(uni) {
- return String.fromCharCode.apply(String, convertUTF16ArrayToUTF8Array(uni))
+ return String.fromCharCode.apply(String, convertUTF16ArrayToUTF8Array(uni));
}
function convertUTF16StringToUTF8String(uni) {
- return String.fromCharCode.apply(String, convertUTF16ArrayToUTF8Array(stringToArray(uni)))
+ return String.fromCharCode.apply(String, convertUTF16ArrayToUTF8Array(stringToArray(uni)));
}
- if(window && window.btoa) {
+ if (window && window.btoa) {
btoa = window.btoa;
convertUTF16StringToBase64 = function(uni) {
- return btoa(convertUTF16StringToUTF8String(uni))
- }
- }else {
+ return btoa(convertUTF16StringToUTF8String(uni));
+ };
+ } else {
btoa = convertUTF8StringToBase64;
convertUTF16StringToBase64 = function(uni) {
- return convertUTF8ArrayToBase64(convertUTF16StringToUTF8Array(uni))
- }
+ return convertUTF8ArrayToBase64(convertUTF16StringToUTF8Array(uni));
+ };
}
- if(window && window.atob) {
+ if (window && window.atob) {
atob = window.atob;
convertBase64ToUTF16String = function(b64) {
var b = atob(b64);
- return convertUTF8StringToUTF16String_internal(b, 0, b.length)
- }
- }else {
+ return convertUTF8StringToUTF16String_internal(b, 0, b.length);
+ };
+ } else {
atob = convertBase64ToUTF8String;
convertBase64ToUTF16String = function(b64) {
- return convertUTF8ArrayToUTF16String(convertBase64ToUTF8Array(b64))
- }
+ return convertUTF8ArrayToUTF16String(convertBase64ToUTF8Array(b64));
+ };
}
core.Base64 = function Base64() {
this.convertUTF8ArrayToBase64 = convertUTF8ArrayToBase64;
@@ -1369,17 +1296,17 @@ function makeBase64() {
this.encode = convertUTF16StringToBase64;
this.encodeURI = function(u) {
return convertUTF16StringToBase64(u).replace(/[+\/]/g, function(m0) {
- return m0 === "+" ? "-" : "_"
- }).replace(/\\=+$/, "")
+ return m0 === "+" ? "-" : "_";
+ }).replace(/\\=+$/, "");
};
this.decode = function(a) {
return convertBase64ToUTF16String(a.replace(/[\-_]/g, function(m0) {
- return m0 === "-" ? "+" : "/"
- }))
+ return m0 === "-" ? "+" : "/";
+ }));
};
- return this
+ return this;
};
- return core.Base64
+ return core.Base64;
}
core.Base64 = makeBase64();
core.ByteArray = function ByteArray(data) {
@@ -1388,126 +1315,87 @@ core.ByteArray = function ByteArray(data) {
this.readUInt32LE = function() {
this.pos += 4;
var d = this.data, pos = this.pos;
- return d[--pos] << 24 | d[--pos] << 16 | d[--pos] << 8 | d[--pos]
+ return d[--pos] << 24 | d[--pos] << 16 | d[--pos] << 8 | d[--pos];
};
this.readUInt16LE = function() {
this.pos += 2;
var d = this.data, pos = this.pos;
- return d[--pos] << 8 | d[--pos]
- }
+ return d[--pos] << 8 | d[--pos];
+ };
};
core.ByteArrayWriter = function ByteArrayWriter(encoding) {
var self = this, length = 0, bufferSize = 1024, data = new Uint8Array(new ArrayBuffer(bufferSize));
function expand(extraLength) {
var newData;
- if(extraLength > bufferSize - length) {
+ if (extraLength > bufferSize - length) {
bufferSize = Math.max(2 * bufferSize, length + extraLength);
newData = new Uint8Array(new ArrayBuffer(bufferSize));
newData.set(data);
- data = newData
+ data = newData;
}
}
this.appendByteArrayWriter = function(writer) {
- self.appendByteArray(writer.getByteArray())
+ self.appendByteArray(writer.getByteArray());
};
this.appendByteArray = function(array) {
var l = array.length;
expand(l);
data.set(array, length);
- length += l
+ length += l;
};
this.appendArray = function(array) {
var l = array.length;
expand(l);
data.set(array, length);
- length += l
+ length += l;
};
this.appendUInt16LE = function(value) {
- self.appendArray([value & 255, value >> 8 & 255])
+ self.appendArray([value & 255, value >> 8 & 255]);
};
this.appendUInt32LE = function(value) {
- self.appendArray([value & 255, value >> 8 & 255, value >> 16 & 255, value >> 24 & 255])
+ self.appendArray([value & 255, value >> 8 & 255, value >> 16 & 255, value >> 24 & 255]);
};
this.appendString = function(string) {
- self.appendByteArray(runtime.byteArrayFromString(string, encoding))
+ self.appendByteArray(runtime.byteArrayFromString(string, encoding));
};
this.getLength = function() {
- return length
+ return length;
};
this.getByteArray = function() {
var a = new Uint8Array(new ArrayBuffer(length));
a.set(data.subarray(0, length));
- return a
- }
+ return a;
+ };
};
core.CSSUnits = function CSSUnits() {
- var self = this, sizemap = {"in":1, "cm":2.54, "mm":25.4, "pt":72, "pc":12};
+ var self = this, sizemap = {"in":1, "cm":2.54, "mm":25.4, "pt":72, "pc":12, "px":96};
this.convert = function(value, oldUnit, newUnit) {
- return value * sizemap[newUnit] / sizemap[oldUnit]
+ return value * sizemap[newUnit] / sizemap[oldUnit];
};
this.convertMeasure = function(measure, newUnit) {
var value, oldUnit, newMeasure;
- if(measure && newUnit) {
+ if (measure && newUnit) {
value = parseFloat(measure);
oldUnit = measure.replace(value.toString(), "");
- newMeasure = self.convert(value, oldUnit, newUnit).toString()
- }else {
- newMeasure = ""
+ newMeasure = self.convert(value, oldUnit, newUnit);
}
- return newMeasure
+ return newMeasure;
};
this.getUnits = function(measure) {
- return measure.substr(measure.length - 2, measure.length)
- }
+ return measure.substr(measure.length - 2, measure.length);
+ };
};
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
(function() {
var browserQuirks;
function getBrowserQuirks() {
var range, directBoundingRect, rangeBoundingRect, testContainer, testElement, detectedQuirks, window, document, docElement, body, docOverflow, bodyOverflow, bodyHeight, bodyScroll;
- if(browserQuirks === undefined) {
+ if (browserQuirks === undefined) {
window = runtime.getWindow();
document = window && window.document;
docElement = document.documentElement;
body = document.body;
browserQuirks = {rangeBCRIgnoresElementBCR:false, unscaledRangeClientRects:false, elementBCRIgnoresBodyScroll:false};
- if(document) {
+ if (document) {
testContainer = document.createElement("div");
testContainer.style.position = "absolute";
testContainer.style.left = "-99999px";
@@ -1541,182 +1429,221 @@ core.CSSUnits = function CSSUnits() {
range.detach();
body.removeChild(testContainer);
detectedQuirks = Object.keys(browserQuirks).map(function(quirk) {
- return quirk + ":" + String(browserQuirks[quirk])
+ return quirk + ":" + String(browserQuirks[quirk]);
}).join(", ");
- runtime.log("Detected browser quirks - " + detectedQuirks)
+ runtime.log("Detected browser quirks - " + detectedQuirks);
}
}
- return browserQuirks
+ return browserQuirks;
}
function getDirectChild(parent, ns, name) {
var node = parent ? parent.firstElementChild : null;
- while(node) {
- if(node.localName === name && node.namespaceURI === ns) {
- return(node)
+ while (node) {
+ if (node.localName === name && node.namespaceURI === ns) {
+ return (node);
}
- node = node.nextElementSibling
+ node = node.nextElementSibling;
}
- return null
+ return null;
}
- core.DomUtils = function DomUtils() {
+ core.DomUtilsImpl = function DomUtilsImpl() {
var sharedRange = null;
function getSharedRange(doc) {
var range;
- if(sharedRange) {
- range = sharedRange
- }else {
- sharedRange = range = (doc.createRange())
+ if (sharedRange) {
+ range = sharedRange;
+ } else {
+ sharedRange = range = (doc.createRange());
}
- return range
+ return range;
}
function findStablePoint(container, offset) {
var c = container;
- if(offset < c.childNodes.length) {
+ if (offset < c.childNodes.length) {
c = c.childNodes.item(offset);
offset = 0;
- while(c.firstChild) {
- c = c.firstChild
+ while (c.firstChild) {
+ c = c.firstChild;
}
- }else {
- while(c.lastChild) {
+ } else {
+ while (c.lastChild) {
c = c.lastChild;
- offset = c.nodeType === Node.TEXT_NODE ? c.textContent.length : c.childNodes.length
+ offset = c.nodeType === Node.TEXT_NODE ? c.textContent.length : c.childNodes.length;
}
}
- return{container:c, offset:offset}
+ return {container:c, offset:offset};
}
function getPositionInContainingNode(node, container) {
var offset = 0, n;
- while(node.parentNode !== container) {
+ while (node.parentNode !== container) {
runtime.assert(node.parentNode !== null, "parent is null");
- node = (node.parentNode)
+ node = (node.parentNode);
}
n = container.firstChild;
- while(n !== node) {
+ while (n !== node) {
offset += 1;
- n = n.nextSibling
+ n = n.nextSibling;
}
- return offset
+ return offset;
}
function splitBoundaries(range) {
var modifiedNodes = [], originalEndContainer, resetToContainerLength, end, splitStart, node, text, offset;
- if(range.startContainer.nodeType === Node.TEXT_NODE || range.endContainer.nodeType === Node.TEXT_NODE) {
+ if (range.startContainer.nodeType === Node.TEXT_NODE || range.endContainer.nodeType === Node.TEXT_NODE) {
originalEndContainer = range.endContainer;
resetToContainerLength = range.endContainer.nodeType !== Node.TEXT_NODE ? range.endOffset === range.endContainer.childNodes.length : false;
end = findStablePoint(range.endContainer, range.endOffset);
- if(end.container === originalEndContainer) {
- originalEndContainer = null
+ if (end.container === originalEndContainer) {
+ originalEndContainer = null;
}
range.setEnd(end.container, end.offset);
node = range.endContainer;
- if(range.endOffset !== 0 && node.nodeType === Node.TEXT_NODE) {
+ if (range.endOffset !== 0 && node.nodeType === Node.TEXT_NODE) {
text = (node);
- if(range.endOffset !== text.length) {
+ if (range.endOffset !== text.length) {
modifiedNodes.push(text.splitText(range.endOffset));
- modifiedNodes.push(text)
+ modifiedNodes.push(text);
}
}
node = range.startContainer;
- if(range.startOffset !== 0 && node.nodeType === Node.TEXT_NODE) {
+ if (range.startOffset !== 0 && node.nodeType === Node.TEXT_NODE) {
text = (node);
- if(range.startOffset !== text.length) {
+ if (range.startOffset !== text.length) {
splitStart = text.splitText(range.startOffset);
modifiedNodes.push(text);
modifiedNodes.push(splitStart);
- range.setStart(splitStart, 0)
+ range.setStart(splitStart, 0);
}
}
- if(originalEndContainer !== null) {
+ if (originalEndContainer !== null) {
node = range.endContainer;
- while(node.parentNode && node.parentNode !== originalEndContainer) {
- node = node.parentNode
+ while (node.parentNode && node.parentNode !== originalEndContainer) {
+ node = node.parentNode;
}
- if(resetToContainerLength) {
- offset = originalEndContainer.childNodes.length
- }else {
- offset = getPositionInContainingNode(node, originalEndContainer)
+ if (resetToContainerLength) {
+ offset = originalEndContainer.childNodes.length;
+ } else {
+ offset = getPositionInContainingNode(node, originalEndContainer);
}
- range.setEnd(originalEndContainer, offset)
+ range.setEnd(originalEndContainer, offset);
}
}
- return modifiedNodes
+ return modifiedNodes;
}
this.splitBoundaries = splitBoundaries;
function containsRange(container, insideRange) {
- return container.compareBoundaryPoints(Range.START_TO_START, insideRange) <= 0 && container.compareBoundaryPoints(Range.END_TO_END, insideRange) >= 0
+ return container.compareBoundaryPoints(Range.START_TO_START, insideRange) <= 0 && container.compareBoundaryPoints(Range.END_TO_END, insideRange) >= 0;
}
this.containsRange = containsRange;
function rangesIntersect(range1, range2) {
- return range1.compareBoundaryPoints(Range.END_TO_START, range2) <= 0 && range1.compareBoundaryPoints(Range.START_TO_END, range2) >= 0
+ return range1.compareBoundaryPoints(Range.END_TO_START, range2) <= 0 && range1.compareBoundaryPoints(Range.START_TO_END, range2) >= 0;
}
this.rangesIntersect = rangesIntersect;
+ function rangeIntersection(range1, range2) {
+ var newRange;
+ if (rangesIntersect(range1, range2)) {
+ newRange = (range1.cloneRange());
+ if (range1.compareBoundaryPoints(Range.START_TO_START, range2) === -1) {
+ newRange.setStart(range2.startContainer, range2.startOffset);
+ }
+ if (range1.compareBoundaryPoints(Range.END_TO_END, range2) === 1) {
+ newRange.setEnd(range2.endContainer, range2.endOffset);
+ }
+ }
+ return newRange;
+ }
+ this.rangeIntersection = rangeIntersection;
function maximumOffset(node) {
- return node.nodeType === Node.TEXT_NODE ? (node).length : node.childNodes.length
+ return node.nodeType === Node.TEXT_NODE ? (node).length : node.childNodes.length;
+ }
+ function moveToNonRejectedNode(walker, root, nodeFilter) {
+ var node = walker.currentNode;
+ if (node !== root) {
+ node = node.parentNode;
+ while (node && node !== root) {
+ if (nodeFilter(node) === NodeFilter.FILTER_REJECT) {
+ walker.currentNode = node;
+ }
+ node = node.parentNode;
+ }
+ }
+ return walker.currentNode;
}
function getNodesInRange(range, nodeFilter, whatToShow) {
var document = range.startContainer.ownerDocument, elements = [], rangeRoot = range.commonAncestorContainer, root = (rangeRoot.nodeType === Node.TEXT_NODE ? rangeRoot.parentNode : rangeRoot), treeWalker = document.createTreeWalker(root, whatToShow, nodeFilter, false), currentNode, lastNodeInRange, endNodeCompareFlags, comparePositionResult;
- if(range.endContainer.childNodes[range.endOffset - 1]) {
+ if (range.endContainer.childNodes[range.endOffset - 1]) {
lastNodeInRange = (range.endContainer.childNodes[range.endOffset - 1]);
- endNodeCompareFlags = Node.DOCUMENT_POSITION_PRECEDING | Node.DOCUMENT_POSITION_CONTAINED_BY
- }else {
+ endNodeCompareFlags = Node.DOCUMENT_POSITION_PRECEDING | Node.DOCUMENT_POSITION_CONTAINED_BY;
+ } else {
lastNodeInRange = (range.endContainer);
- endNodeCompareFlags = Node.DOCUMENT_POSITION_PRECEDING
+ endNodeCompareFlags = Node.DOCUMENT_POSITION_PRECEDING;
}
- if(range.startContainer.childNodes[range.startOffset]) {
+ if (range.startContainer.childNodes[range.startOffset]) {
currentNode = (range.startContainer.childNodes[range.startOffset]);
- treeWalker.currentNode = currentNode
- }else {
- if(range.startOffset === maximumOffset(range.startContainer)) {
+ treeWalker.currentNode = currentNode;
+ } else {
+ if (range.startOffset === maximumOffset(range.startContainer)) {
currentNode = (range.startContainer);
treeWalker.currentNode = currentNode;
treeWalker.lastChild();
- currentNode = treeWalker.nextNode()
- }else {
+ currentNode = treeWalker.nextNode();
+ } else {
currentNode = (range.startContainer);
- treeWalker.currentNode = currentNode
+ treeWalker.currentNode = currentNode;
}
}
- if(currentNode && nodeFilter(currentNode) === NodeFilter.FILTER_ACCEPT) {
- elements.push(currentNode)
- }
- currentNode = treeWalker.nextNode();
- while(currentNode) {
- comparePositionResult = lastNodeInRange.compareDocumentPosition(currentNode);
- if(comparePositionResult !== 0 && (comparePositionResult & endNodeCompareFlags) === 0) {
- break
+ if (currentNode) {
+ currentNode = moveToNonRejectedNode(treeWalker, root, nodeFilter);
+ switch(nodeFilter((currentNode))) {
+ case NodeFilter.FILTER_REJECT:
+ currentNode = treeWalker.nextSibling();
+ while (!currentNode && treeWalker.parentNode()) {
+ currentNode = treeWalker.nextSibling();
+ }
+ break;
+ case NodeFilter.FILTER_SKIP:
+ currentNode = treeWalker.nextNode();
+ break;
+ default:
+ break;
+ }
+ while (currentNode) {
+ comparePositionResult = lastNodeInRange.compareDocumentPosition(currentNode);
+ if (comparePositionResult !== 0 && (comparePositionResult & endNodeCompareFlags) === 0) {
+ break;
+ }
+ elements.push(currentNode);
+ currentNode = treeWalker.nextNode();
}
- elements.push(currentNode);
- currentNode = treeWalker.nextNode()
}
- return elements
+ return elements;
}
this.getNodesInRange = getNodesInRange;
function mergeTextNodes(node, nextNode) {
var mergedNode = null, text, nextText;
- if(node.nodeType === Node.TEXT_NODE) {
+ if (node.nodeType === Node.TEXT_NODE) {
text = (node);
- if(text.length === 0) {
+ if (text.length === 0) {
text.parentNode.removeChild(text);
- if(nextNode.nodeType === Node.TEXT_NODE) {
- mergedNode = nextNode
+ if (nextNode.nodeType === Node.TEXT_NODE) {
+ mergedNode = nextNode;
}
- }else {
- if(nextNode.nodeType === Node.TEXT_NODE) {
+ } else {
+ if (nextNode.nodeType === Node.TEXT_NODE) {
nextText = (nextNode);
text.appendData(nextText.data);
- nextNode.parentNode.removeChild(nextNode)
+ nextNode.parentNode.removeChild(nextNode);
}
- mergedNode = node
+ mergedNode = node;
}
}
- return mergedNode
+ return mergedNode;
}
function normalizeTextNodes(node) {
- if(node && node.nextSibling) {
- node = mergeTextNodes(node, node.nextSibling)
+ if (node && node.nextSibling) {
+ node = mergeTextNodes(node, node.nextSibling);
}
- if(node && node.previousSibling) {
- mergeTextNodes(node.previousSibling, node)
+ if (node && node.previousSibling) {
+ mergeTextNodes(node.previousSibling, node);
}
}
this.normalizeTextNodes = normalizeTextNodes;
@@ -1728,685 +1655,778 @@ core.CSSUnits = function CSSUnits() {
result = containsRange(range, nodeRange);
range.detach();
nodeRange.detach();
- return result
+ return result;
}
this.rangeContainsNode = rangeContainsNode;
function mergeIntoParent(targetNode) {
var parent = targetNode.parentNode;
- while(targetNode.firstChild) {
- parent.insertBefore(targetNode.firstChild, targetNode)
+ while (targetNode.firstChild) {
+ parent.insertBefore(targetNode.firstChild, targetNode);
}
parent.removeChild(targetNode);
- return parent
+ return parent;
}
this.mergeIntoParent = mergeIntoParent;
- function removeUnwantedNodes(targetNode, shouldRemove) {
- var parent = targetNode.parentNode, node = targetNode.firstChild, next;
- while(node) {
+ function removeUnwantedNodes(targetNode, nodeFilter) {
+ var parent = targetNode.parentNode, node = targetNode.firstChild, filterResult = nodeFilter(targetNode), next;
+ if (filterResult === NodeFilter.FILTER_SKIP) {
+ return parent;
+ }
+ while (node) {
next = node.nextSibling;
- removeUnwantedNodes(node, shouldRemove);
- node = next
+ removeUnwantedNodes(node, nodeFilter);
+ node = next;
}
- if(parent && shouldRemove(targetNode)) {
- mergeIntoParent(targetNode)
+ if (parent && filterResult === NodeFilter.FILTER_REJECT) {
+ mergeIntoParent(targetNode);
}
- return parent
+ return parent;
}
this.removeUnwantedNodes = removeUnwantedNodes;
+ this.removeAllChildNodes = function(node) {
+ while (node.firstChild) {
+ node.removeChild(node.firstChild);
+ }
+ };
function getElementsByTagNameNS(node, namespace, tagName) {
var e = [], list, i, l;
list = node.getElementsByTagNameNS(namespace, tagName);
e.length = l = list.length;
- for(i = 0;i < l;i += 1) {
- e[i] = (list.item(i))
+ for (i = 0;i < l;i += 1) {
+ e[i] = (list.item(i));
}
- return e
+ return e;
}
this.getElementsByTagNameNS = getElementsByTagNameNS;
+ function getElementsByTagName(node, tagName) {
+ var e = [], list, i, l;
+ list = node.getElementsByTagName(tagName);
+ e.length = l = list.length;
+ for (i = 0;i < l;i += 1) {
+ e[i] = (list.item(i));
+ }
+ return e;
+ }
+ this.getElementsByTagName = getElementsByTagName;
function containsNode(parent, descendant) {
- return parent === descendant || (parent).contains((descendant))
+ return parent === descendant || (parent).contains((descendant));
}
this.containsNode = containsNode;
function containsNodeForBrokenWebKit(parent, descendant) {
- return parent === descendant || Boolean(parent.compareDocumentPosition(descendant) & Node.DOCUMENT_POSITION_CONTAINED_BY)
+ return parent === descendant || Boolean(parent.compareDocumentPosition(descendant) & Node.DOCUMENT_POSITION_CONTAINED_BY);
}
function comparePoints(c1, o1, c2, o2) {
- if(c1 === c2) {
- return o2 - o1
+ if (c1 === c2) {
+ return o2 - o1;
}
var comparison = c1.compareDocumentPosition(c2);
- if(comparison === 2) {
- comparison = -1
- }else {
- if(comparison === 4) {
- comparison = 1
- }else {
- if(comparison === 10) {
+ if (comparison === 2) {
+ comparison = -1;
+ } else {
+ if (comparison === 4) {
+ comparison = 1;
+ } else {
+ if (comparison === 10) {
o1 = getPositionInContainingNode(c1, c2);
- comparison = o1 < o2 ? 1 : -1
- }else {
+ comparison = o1 < o2 ? 1 : -1;
+ } else {
o2 = getPositionInContainingNode(c2, c1);
- comparison = o2 < o1 ? -1 : 1
+ comparison = o2 < o1 ? -1 : 1;
}
}
}
- return comparison
+ return comparison;
}
this.comparePoints = comparePoints;
function adaptRangeDifferenceToZoomLevel(inputNumber, zoomLevel) {
- if(getBrowserQuirks().unscaledRangeClientRects) {
- return inputNumber
+ if (getBrowserQuirks().unscaledRangeClientRects) {
+ return inputNumber;
}
- return inputNumber / zoomLevel
+ return inputNumber / zoomLevel;
}
this.adaptRangeDifferenceToZoomLevel = adaptRangeDifferenceToZoomLevel;
+ this.translateRect = function(child, parent, zoomLevel) {
+ return {top:adaptRangeDifferenceToZoomLevel(child.top - parent.top, zoomLevel), left:adaptRangeDifferenceToZoomLevel(child.left - parent.left, zoomLevel), bottom:adaptRangeDifferenceToZoomLevel(child.bottom - parent.top, zoomLevel), right:adaptRangeDifferenceToZoomLevel(child.right - parent.left, zoomLevel), width:adaptRangeDifferenceToZoomLevel(child.width, zoomLevel), height:adaptRangeDifferenceToZoomLevel(child.height, zoomLevel)};
+ };
function getBoundingClientRect(node) {
var doc = (node.ownerDocument), quirks = getBrowserQuirks(), range, element, rect, body = doc.body;
- if(quirks.unscaledRangeClientRects === false || quirks.rangeBCRIgnoresElementBCR) {
- if(node.nodeType === Node.ELEMENT_NODE) {
+ if (quirks.unscaledRangeClientRects === false || quirks.rangeBCRIgnoresElementBCR) {
+ if (node.nodeType === Node.ELEMENT_NODE) {
element = (node);
rect = element.getBoundingClientRect();
- if(quirks.elementBCRIgnoresBodyScroll) {
- return({left:rect.left + body.scrollLeft, right:rect.right + body.scrollLeft, top:rect.top + body.scrollTop, bottom:rect.bottom + body.scrollTop, width:rect.width, height:rect.height})
+ if (quirks.elementBCRIgnoresBodyScroll) {
+ return ({left:rect.left + body.scrollLeft, right:rect.right + body.scrollLeft, top:rect.top + body.scrollTop, bottom:rect.bottom + body.scrollTop, width:rect.width, height:rect.height});
}
- return rect
+ return rect;
}
}
range = getSharedRange(doc);
range.selectNode(node);
- return range.getBoundingClientRect()
+ return range.getBoundingClientRect();
}
this.getBoundingClientRect = getBoundingClientRect;
function mapKeyValObjOntoNode(node, properties, nsResolver) {
Object.keys(properties).forEach(function(key) {
var parts = key.split(":"), prefix = parts[0], localName = parts[1], ns = nsResolver(prefix), value = properties[key], element;
- if(ns) {
+ if (ns) {
element = (node.getElementsByTagNameNS(ns, localName)[0]);
- if(!element) {
+ if (!element) {
element = node.ownerDocument.createElementNS(ns, key);
- node.appendChild(element)
+ node.appendChild(element);
}
- element.textContent = value
- }else {
- runtime.log("Key ignored: " + key)
+ element.textContent = value;
+ } else {
+ runtime.log("Key ignored: " + key);
}
- })
+ });
}
this.mapKeyValObjOntoNode = mapKeyValObjOntoNode;
function removeKeyElementsFromNode(node, propertyNames, nsResolver) {
propertyNames.forEach(function(propertyName) {
var parts = propertyName.split(":"), prefix = parts[0], localName = parts[1], ns = nsResolver(prefix), element;
- if(ns) {
+ if (ns) {
element = (node.getElementsByTagNameNS(ns, localName)[0]);
- if(element) {
- element.parentNode.removeChild(element)
- }else {
- runtime.log("Element for " + propertyName + " not found.")
+ if (element) {
+ element.parentNode.removeChild(element);
+ } else {
+ runtime.log("Element for " + propertyName + " not found.");
}
- }else {
- runtime.log("Property Name ignored: " + propertyName)
+ } else {
+ runtime.log("Property Name ignored: " + propertyName);
}
- })
+ });
}
this.removeKeyElementsFromNode = removeKeyElementsFromNode;
function getKeyValRepresentationOfNode(node, prefixResolver) {
var properties = {}, currentSibling = node.firstElementChild, prefix;
- while(currentSibling) {
+ while (currentSibling) {
prefix = prefixResolver(currentSibling.namespaceURI);
- if(prefix) {
- properties[prefix + ":" + currentSibling.localName] = currentSibling.textContent
+ if (prefix) {
+ properties[prefix + ":" + currentSibling.localName] = currentSibling.textContent;
}
- currentSibling = currentSibling.nextElementSibling
+ currentSibling = currentSibling.nextElementSibling;
}
- return properties
+ return properties;
}
this.getKeyValRepresentationOfNode = getKeyValRepresentationOfNode;
function mapObjOntoNode(node, properties, nsResolver) {
Object.keys(properties).forEach(function(key) {
var parts = key.split(":"), prefix = parts[0], localName = parts[1], ns = nsResolver(prefix), value = properties[key], valueType = typeof value, element;
- if(valueType === "object") {
- if(Object.keys((value)).length) {
- if(ns) {
- element = (node.getElementsByTagNameNS(ns, localName)[0]) || node.ownerDocument.createElementNS(ns, key)
- }else {
- element = (node.getElementsByTagName(localName)[0]) || node.ownerDocument.createElement(key)
+ if (valueType === "object") {
+ if (Object.keys((value)).length) {
+ if (ns) {
+ element = (node.getElementsByTagNameNS(ns, localName)[0]) || node.ownerDocument.createElementNS(ns, key);
+ } else {
+ element = (node.getElementsByTagName(localName)[0]) || node.ownerDocument.createElement(key);
}
node.appendChild(element);
- mapObjOntoNode(element, (value), nsResolver)
+ mapObjOntoNode(element, (value), nsResolver);
}
- }else {
- if(ns) {
+ } else {
+ if (ns) {
runtime.assert(valueType === "number" || valueType === "string", "attempting to map unsupported type '" + valueType + "' (key: " + key + ")");
- node.setAttributeNS(ns, key, String(value))
+ node.setAttributeNS(ns, key, String(value));
}
}
- })
+ });
}
this.mapObjOntoNode = mapObjOntoNode;
+ function cloneEvent(event) {
+ var e = Object.create(null);
+ Object.keys((event)).forEach(function(x) {
+ e[x] = event[x];
+ });
+ e.prototype = event.constructor.prototype;
+ return (e);
+ }
+ this.cloneEvent = cloneEvent;
this.getDirectChild = getDirectChild;
function init(self) {
var appVersion, webKitOrSafari, ie, window = runtime.getWindow();
- if(window === null) {
- return
+ if (window === null) {
+ return;
}
appVersion = window.navigator.appVersion.toLowerCase();
webKitOrSafari = appVersion.indexOf("chrome") === -1 && (appVersion.indexOf("applewebkit") !== -1 || appVersion.indexOf("safari") !== -1);
- ie = appVersion.indexOf("msie");
- if(webKitOrSafari || ie) {
- self.containsNode = containsNodeForBrokenWebKit
+ ie = appVersion.indexOf("msie") !== -1 || appVersion.indexOf("trident") !== -1;
+ if (webKitOrSafari || ie) {
+ self.containsNode = containsNodeForBrokenWebKit;
}
}
- init(this)
+ init(this);
};
- return core.DomUtils
+ core.DomUtils = new core.DomUtilsImpl;
})();
core.Cursor = function Cursor(document, memberId) {
- var cursorns = "urn:webodf:names:cursor", cursorNode = document.createElementNS(cursorns, "cursor"), anchorNode = document.createElementNS(cursorns, "anchor"), forwardSelection, recentlyModifiedNodes = [], selectedRange = (document.createRange()), isCollapsed, domUtils = new core.DomUtils;
+ var cursorns = "urn:webodf:names:cursor", cursorNode = document.createElementNS(cursorns, "cursor"), anchorNode = document.createElementNS(cursorns, "anchor"), forwardSelection, recentlyModifiedNodes = [], selectedRange = (document.createRange()), isCollapsed, domUtils = core.DomUtils;
function putIntoTextNode(node, container, offset) {
runtime.assert(Boolean(container), "putCursorIntoTextNode: invalid container");
var parent = container.parentNode;
runtime.assert(Boolean(parent), "putCursorIntoTextNode: container without parent");
runtime.assert(offset >= 0 && offset <= container.length, "putCursorIntoTextNode: offset is out of bounds");
- if(offset === 0) {
- parent.insertBefore(node, container)
- }else {
- if(offset === container.length) {
- parent.insertBefore(node, container.nextSibling)
- }else {
+ if (offset === 0) {
+ parent.insertBefore(node, container);
+ } else {
+ if (offset === container.length) {
+ parent.insertBefore(node, container.nextSibling);
+ } else {
container.splitText(offset);
- parent.insertBefore(node, container.nextSibling)
+ parent.insertBefore(node, container.nextSibling);
}
}
}
function removeNode(node) {
- if(node.parentNode) {
+ if (node.parentNode) {
recentlyModifiedNodes.push(node.previousSibling);
recentlyModifiedNodes.push(node.nextSibling);
- node.parentNode.removeChild(node)
+ node.parentNode.removeChild(node);
}
}
function putNode(node, container, offset) {
- if(container.nodeType === Node.TEXT_NODE) {
- putIntoTextNode(node, (container), offset)
- }else {
- if(container.nodeType === Node.ELEMENT_NODE) {
- container.insertBefore(node, container.childNodes.item(offset))
+ if (container.nodeType === Node.TEXT_NODE) {
+ putIntoTextNode(node, (container), offset);
+ } else {
+ if (container.nodeType === Node.ELEMENT_NODE) {
+ container.insertBefore(node, container.childNodes.item(offset));
}
}
recentlyModifiedNodes.push(node.previousSibling);
- recentlyModifiedNodes.push(node.nextSibling)
+ recentlyModifiedNodes.push(node.nextSibling);
}
function getStartNode() {
- return forwardSelection ? anchorNode : cursorNode
+ return forwardSelection ? anchorNode : cursorNode;
}
function getEndNode() {
- return forwardSelection ? cursorNode : anchorNode
+ return forwardSelection ? cursorNode : anchorNode;
}
this.getNode = function() {
- return cursorNode
+ return cursorNode;
};
this.getAnchorNode = function() {
- return anchorNode.parentNode ? anchorNode : cursorNode
+ return anchorNode.parentNode ? anchorNode : cursorNode;
};
this.getSelectedRange = function() {
- if(isCollapsed) {
+ if (isCollapsed) {
selectedRange.setStartBefore(cursorNode);
- selectedRange.collapse(true)
- }else {
+ selectedRange.collapse(true);
+ } else {
selectedRange.setStartAfter(getStartNode());
- selectedRange.setEndBefore(getEndNode())
+ selectedRange.setEndBefore(getEndNode());
}
- return selectedRange
+ return selectedRange;
};
this.setSelectedRange = function(range, isForwardSelection) {
- if(selectedRange && selectedRange !== range) {
- selectedRange.detach()
+ if (selectedRange && selectedRange !== range) {
+ selectedRange.detach();
}
selectedRange = range;
forwardSelection = isForwardSelection !== false;
isCollapsed = range.collapsed;
- if(range.collapsed) {
+ if (range.collapsed) {
removeNode(anchorNode);
removeNode(cursorNode);
- putNode(cursorNode, (range.startContainer), range.startOffset)
- }else {
+ putNode(cursorNode, (range.startContainer), range.startOffset);
+ } else {
removeNode(anchorNode);
removeNode(cursorNode);
putNode(getEndNode(), (range.endContainer), range.endOffset);
- putNode(getStartNode(), (range.startContainer), range.startOffset)
+ putNode(getStartNode(), (range.startContainer), range.startOffset);
}
recentlyModifiedNodes.forEach(domUtils.normalizeTextNodes);
- recentlyModifiedNodes.length = 0
+ recentlyModifiedNodes.length = 0;
};
this.hasForwardSelection = function() {
- return forwardSelection
+ return forwardSelection;
};
this.remove = function() {
removeNode(cursorNode);
recentlyModifiedNodes.forEach(domUtils.normalizeTextNodes);
- recentlyModifiedNodes.length = 0
+ recentlyModifiedNodes.length = 0;
};
function init() {
cursorNode.setAttributeNS(cursorns, "memberId", memberId);
- anchorNode.setAttributeNS(cursorns, "memberId", memberId)
+ anchorNode.setAttributeNS(cursorns, "memberId", memberId);
}
- init()
+ init();
};
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
core.Destroyable = function Destroyable() {
};
core.Destroyable.prototype.destroy = function(callback) {
};
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
+core.EventSource = function() {
+};
+core.EventSource.prototype.subscribe = function(eventId, cb) {
+};
+core.EventSource.prototype.unsubscribe = function(eventId, cb) {
+};
core.EventNotifier = function EventNotifier(eventIds) {
var eventListener = {};
this.emit = function(eventId, args) {
var i, subscribers;
runtime.assert(eventListener.hasOwnProperty(eventId), 'unknown event fired "' + eventId + '"');
subscribers = eventListener[eventId];
- for(i = 0;i < subscribers.length;i += 1) {
- subscribers[i](args)
+ for (i = 0;i < subscribers.length;i += 1) {
+ subscribers[i](args);
}
};
this.subscribe = function(eventId, cb) {
runtime.assert(eventListener.hasOwnProperty(eventId), 'tried to subscribe to unknown event "' + eventId + '"');
- eventListener[eventId].push(cb)
+ eventListener[eventId].push(cb);
};
this.unsubscribe = function(eventId, cb) {
var cbIndex;
runtime.assert(eventListener.hasOwnProperty(eventId), 'tried to unsubscribe from unknown event "' + eventId + '"');
cbIndex = eventListener[eventId].indexOf(cb);
runtime.assert(cbIndex !== -1, 'tried to unsubscribe unknown callback from event "' + eventId + '"');
- if(cbIndex !== -1) {
- eventListener[eventId].splice(cbIndex, 1)
+ if (cbIndex !== -1) {
+ eventListener[eventId].splice(cbIndex, 1);
}
};
+ function register(eventId) {
+ runtime.assert(!eventListener.hasOwnProperty(eventId), 'Duplicated event ids: "' + eventId + '" registered more than once.');
+ eventListener[eventId] = [];
+ }
+ this.register = register;
function init() {
- var i, eventId;
- for(i = 0;i < eventIds.length;i += 1) {
- eventId = eventIds[i];
- runtime.assert(!eventListener.hasOwnProperty(eventId), 'Duplicated event ids: "' + eventId + '" registered more than once.');
- eventListener[eventId] = []
+ if (eventIds) {
+ eventIds.forEach(register);
}
}
- init()
+ init();
+};
+core.ScheduledTask = function ScheduledTask(fn, scheduleTask, cancelTask) {
+ var timeoutId, scheduled = false, args = [], destroyed = false;
+ function cancel() {
+ if (scheduled) {
+ cancelTask(timeoutId);
+ scheduled = false;
+ }
+ }
+ function execute() {
+ cancel();
+ fn.apply(undefined, args);
+ args = null;
+ }
+ this.trigger = function() {
+ runtime.assert(destroyed === false, "Can't trigger destroyed ScheduledTask instance");
+ args = Array.prototype.slice.call(arguments);
+ if (!scheduled) {
+ scheduled = true;
+ timeoutId = scheduleTask(execute);
+ }
+ };
+ this.triggerImmediate = function() {
+ runtime.assert(destroyed === false, "Can't trigger destroyed ScheduledTask instance");
+ args = Array.prototype.slice.call(arguments);
+ execute();
+ };
+ this.processRequests = function() {
+ if (scheduled) {
+ execute();
+ }
+ };
+ this.cancel = cancel;
+ this.restart = function() {
+ runtime.assert(destroyed === false, "Can't trigger destroyed ScheduledTask instance");
+ cancel();
+ scheduled = true;
+ timeoutId = scheduleTask(execute);
+ };
+ this.destroy = function(callback) {
+ cancel();
+ destroyed = true;
+ callback();
+ };
+};
+(function() {
+ var redrawTasks;
+ function RedrawTasks() {
+ var callbacks = {};
+ this.requestRedrawTask = function(callback) {
+ var id = runtime.requestAnimationFrame(function() {
+ callback();
+ delete callbacks[id];
+ });
+ callbacks[id] = callback;
+ return id;
+ };
+ this.performRedraw = function() {
+ Object.keys(callbacks).forEach(function(id) {
+ callbacks[id]();
+ runtime.cancelAnimationFrame(parseInt(id, 10));
+ });
+ callbacks = {};
+ };
+ this.cancelRedrawTask = function(id) {
+ runtime.cancelAnimationFrame(id);
+ delete callbacks[id];
+ };
+ }
+ core.Task = {};
+ core.Task.SUPPRESS_MANUAL_PROCESSING = false;
+ core.Task.processTasks = function() {
+ if (!core.Task.SUPPRESS_MANUAL_PROCESSING) {
+ redrawTasks.performRedraw();
+ }
+ };
+ core.Task.createRedrawTask = function(callback) {
+ return new core.ScheduledTask(callback, redrawTasks.requestRedrawTask, redrawTasks.cancelRedrawTask);
+ };
+ core.Task.createTimeoutTask = function(callback, delay) {
+ return new core.ScheduledTask(callback, function(callback) {
+ return runtime.setTimeout(callback, delay);
+ }, runtime.clearTimeout);
+ };
+ function init() {
+ redrawTasks = new RedrawTasks;
+ }
+ init();
+})();
+core.EventSubscriptions = function() {
+ var subscriptions = [], frameEventNotifier = new core.EventNotifier, frameSubscriptions = {}, nextFrameEventId = 0;
+ function addSubscription(eventSource, eventid, callback) {
+ eventSource.subscribe(eventid, callback);
+ subscriptions.push({eventSource:eventSource, eventid:eventid, callback:callback});
+ }
+ this.addSubscription = addSubscription;
+ this.addFrameSubscription = function(eventSource, eventid, callback) {
+ var frameSubscription, frameEventId, eventFrameSubscriptions, i;
+ if (!frameSubscriptions.hasOwnProperty(eventid)) {
+ frameSubscriptions[eventid] = [];
+ }
+ eventFrameSubscriptions = frameSubscriptions[eventid];
+ for (i = 0;i < eventFrameSubscriptions.length;i += 1) {
+ if (eventFrameSubscriptions[i].eventSource === eventSource) {
+ frameSubscription = eventFrameSubscriptions[i];
+ break;
+ }
+ }
+ if (!frameSubscription) {
+ frameEventId = "s" + nextFrameEventId;
+ nextFrameEventId += 1;
+ frameEventNotifier.register(frameEventId);
+ frameSubscription = {frameEventId:frameEventId, eventSource:eventSource, task:core.Task.createRedrawTask(function() {
+ frameEventNotifier.emit(frameEventId, undefined);
+ })};
+ eventFrameSubscriptions.push(frameSubscription);
+ addSubscription(eventSource, eventid, frameSubscription.task.trigger);
+ }
+ frameEventNotifier.subscribe(frameSubscription.frameEventId, callback);
+ };
+ function unsubscribeAll() {
+ var cleanup = [];
+ subscriptions.forEach(function(subscription) {
+ subscription.eventSource.unsubscribe(subscription.eventid, subscription.callback);
+ });
+ subscriptions.length = 0;
+ Object.keys(frameSubscriptions).forEach(function(eventId) {
+ frameSubscriptions[eventId].forEach(function(subscriber) {
+ cleanup.push(subscriber.task.destroy);
+ });
+ delete frameSubscriptions[eventId];
+ });
+ core.Async.destroyAll(cleanup, function() {
+ });
+ frameEventNotifier = new core.EventNotifier;
+ }
+ this.unsubscribeAll = unsubscribeAll;
+ this.destroy = function(callback) {
+ unsubscribeAll();
+ callback();
+ };
+};
+core.LazyProperty = function(valueLoader) {
+ var cachedValue, valueLoaded = false;
+ this.value = function() {
+ if (!valueLoaded) {
+ cachedValue = valueLoader();
+ valueLoaded = true;
+ }
+ return cachedValue;
+ };
+ this.reset = function() {
+ valueLoaded = false;
+ };
};
-/*
-
- Copyright (C) 2012 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
core.LoopWatchDog = function LoopWatchDog(timeout, maxChecks) {
var startTime = Date.now(), checks = 0;
function check() {
var t;
- if(timeout) {
+ if (timeout) {
t = Date.now();
- if(t - startTime > timeout) {
+ if (t - startTime > timeout) {
runtime.log("alert", "watchdog timeout");
- throw"timeout!";
+ throw "timeout!";
}
}
- if(maxChecks > 0) {
+ if (maxChecks > 0) {
checks += 1;
- if(checks > maxChecks) {
+ if (checks > maxChecks) {
runtime.log("alert", "watchdog loop overflow");
- throw"loop overflow";
+ throw "loop overflow";
}
}
}
- this.check = check
+ this.check = check;
+};
+core.NodeFilterChain = function(filters) {
+ var FILTER_REJECT = NodeFilter.FILTER_REJECT, FILTER_ACCEPT = NodeFilter.FILTER_ACCEPT;
+ this.acceptNode = function(node) {
+ var i;
+ for (i = 0;i < filters.length;i += 1) {
+ if (filters[i].acceptNode(node) === FILTER_REJECT) {
+ return FILTER_REJECT;
+ }
+ }
+ return FILTER_ACCEPT;
+ };
};
core.PositionIterator = function PositionIterator(root, whatToShow, filter, expandEntityReferences) {
var self = this, walker, currentPos, nodeFilter, TEXT_NODE = Node.TEXT_NODE, ELEMENT_NODE = Node.ELEMENT_NODE, FILTER_ACCEPT = NodeFilter.FILTER_ACCEPT, FILTER_REJECT = NodeFilter.FILTER_REJECT;
function EmptyTextNodeFilter() {
this.acceptNode = function(node) {
var text = (node);
- if(!node || node.nodeType === TEXT_NODE && text.length === 0) {
- return FILTER_REJECT
+ if (!node || node.nodeType === TEXT_NODE && text.length === 0) {
+ return FILTER_REJECT;
}
- return FILTER_ACCEPT
- }
+ return FILTER_ACCEPT;
+ };
}
function FilteredEmptyTextNodeFilter(filter) {
this.acceptNode = function(node) {
var text = (node);
- if(!node || node.nodeType === TEXT_NODE && text.length === 0) {
- return FILTER_REJECT
+ if (!node || node.nodeType === TEXT_NODE && text.length === 0) {
+ return FILTER_REJECT;
}
- return filter.acceptNode(node)
- }
+ return filter.acceptNode(node);
+ };
}
this.nextPosition = function() {
var currentNode = walker.currentNode, nodeType = currentNode.nodeType, text = (currentNode);
- if(currentNode === root) {
- return false
- }
- if(currentPos === 0 && nodeType === ELEMENT_NODE) {
- if(walker.firstChild() === null) {
- currentPos = 1
- }
- }else {
- if(nodeType === TEXT_NODE && currentPos + 1 < text.length) {
- currentPos += 1
- }else {
- if(walker.nextSibling() !== null) {
- currentPos = 0
- }else {
- if(walker.parentNode()) {
- currentPos = 1
- }else {
- return false
+ if (currentNode === root) {
+ return false;
+ }
+ if (currentPos === 0 && nodeType === ELEMENT_NODE) {
+ if (walker.firstChild() === null) {
+ currentPos = 1;
+ }
+ } else {
+ if (nodeType === TEXT_NODE && currentPos + 1 < text.length) {
+ currentPos += 1;
+ } else {
+ if (walker.nextSibling() !== null) {
+ currentPos = 0;
+ } else {
+ if (walker.parentNode()) {
+ currentPos = 1;
+ } else {
+ return false;
}
}
}
}
- return true
+ return true;
};
function setAtEnd() {
var text = (walker.currentNode), type = text.nodeType;
- if(type === TEXT_NODE) {
- currentPos = text.length - 1
- }else {
- currentPos = type === ELEMENT_NODE ? 1 : 0
+ if (type === TEXT_NODE) {
+ currentPos = text.length - 1;
+ } else {
+ currentPos = type === ELEMENT_NODE ? 1 : 0;
}
}
function previousNode() {
- if(walker.previousSibling() === null) {
- if(!walker.parentNode() || walker.currentNode === root) {
+ if (walker.previousSibling() === null) {
+ if (!walker.parentNode() || walker.currentNode === root) {
walker.firstChild();
- return false
+ return false;
}
- currentPos = 0
- }else {
- setAtEnd()
+ currentPos = 0;
+ } else {
+ setAtEnd();
}
- return true
+ return true;
}
this.previousPosition = function() {
var moved = true, currentNode = walker.currentNode;
- if(currentPos === 0) {
- moved = previousNode()
- }else {
- if(currentNode.nodeType === TEXT_NODE) {
- currentPos -= 1
- }else {
- if(walker.lastChild() !== null) {
- setAtEnd()
- }else {
- if(currentNode === root) {
- moved = false
- }else {
- currentPos = 0
+ if (currentPos === 0) {
+ moved = previousNode();
+ } else {
+ if (currentNode.nodeType === TEXT_NODE) {
+ currentPos -= 1;
+ } else {
+ if (walker.lastChild() !== null) {
+ setAtEnd();
+ } else {
+ if (currentNode === root) {
+ moved = false;
+ } else {
+ currentPos = 0;
}
}
}
}
- return moved
+ return moved;
};
this.previousNode = previousNode;
this.container = function() {
var n = (walker.currentNode), t = n.nodeType;
- if(currentPos === 0 && t !== TEXT_NODE) {
- n = (n.parentNode)
+ if (currentPos === 0 && t !== TEXT_NODE) {
+ n = (n.parentNode);
}
- return n
+ return n;
};
this.rightNode = function() {
var n = walker.currentNode, text = (n), nodeType = n.nodeType;
- if(nodeType === TEXT_NODE && currentPos === text.length) {
+ if (nodeType === TEXT_NODE && currentPos === text.length) {
n = n.nextSibling;
- while(n && nodeFilter(n) !== FILTER_ACCEPT) {
- n = n.nextSibling
+ while (n && nodeFilter(n) !== FILTER_ACCEPT) {
+ n = n.nextSibling;
}
- }else {
- if(nodeType === ELEMENT_NODE && currentPos === 1) {
- n = null
+ } else {
+ if (nodeType === ELEMENT_NODE && currentPos === 1) {
+ n = null;
}
}
- return n
+ return n;
};
this.leftNode = function() {
var n = walker.currentNode;
- if(currentPos === 0) {
+ if (currentPos === 0) {
n = n.previousSibling;
- while(n && nodeFilter(n) !== FILTER_ACCEPT) {
- n = n.previousSibling
+ while (n && nodeFilter(n) !== FILTER_ACCEPT) {
+ n = n.previousSibling;
}
- }else {
- if(n.nodeType === ELEMENT_NODE) {
+ } else {
+ if (n.nodeType === ELEMENT_NODE) {
n = n.lastChild;
- while(n && nodeFilter(n) !== FILTER_ACCEPT) {
- n = n.previousSibling
+ while (n && nodeFilter(n) !== FILTER_ACCEPT) {
+ n = n.previousSibling;
}
}
}
- return n
+ return n;
};
this.getCurrentNode = function() {
var n = (walker.currentNode);
- return n
+ return n;
};
this.unfilteredDomOffset = function() {
- if(walker.currentNode.nodeType === TEXT_NODE) {
- return currentPos
+ if (walker.currentNode.nodeType === TEXT_NODE) {
+ return currentPos;
}
var c = 0, n = walker.currentNode;
- if(currentPos === 1) {
- n = n.lastChild
- }else {
- n = n.previousSibling
+ if (currentPos === 1) {
+ n = n.lastChild;
+ } else {
+ n = n.previousSibling;
}
- while(n) {
+ while (n) {
c += 1;
- n = n.previousSibling
+ n = n.previousSibling;
}
- return c
+ return c;
};
this.getPreviousSibling = function() {
var currentNode = walker.currentNode, sibling = walker.previousSibling();
walker.currentNode = currentNode;
- return sibling
+ return sibling;
};
this.getNextSibling = function() {
var currentNode = walker.currentNode, sibling = walker.nextSibling();
walker.currentNode = currentNode;
- return sibling
+ return sibling;
};
function moveToAcceptedNode() {
var node = walker.currentNode, filterResult, moveResult;
filterResult = nodeFilter(node);
- if(node !== root) {
+ if (node !== root) {
node = node.parentNode;
- while(node && node !== root) {
- if(nodeFilter(node) === FILTER_REJECT) {
+ while (node && node !== root) {
+ if (nodeFilter(node) === FILTER_REJECT) {
walker.currentNode = node;
- filterResult = FILTER_REJECT
+ filterResult = FILTER_REJECT;
}
- node = node.parentNode
+ node = node.parentNode;
}
}
- if(filterResult === FILTER_REJECT) {
- currentPos = 1;
- moveResult = self.nextPosition()
- }else {
- if(filterResult === FILTER_ACCEPT) {
- moveResult = true
- }else {
- moveResult = self.nextPosition()
+ if (filterResult === FILTER_REJECT) {
+ currentPos = walker.currentNode.nodeType === TEXT_NODE ? (node).length : 1;
+ moveResult = self.nextPosition();
+ } else {
+ if (filterResult === FILTER_ACCEPT) {
+ moveResult = true;
+ } else {
+ moveResult = self.nextPosition();
}
}
- if(moveResult) {
- runtime.assert(nodeFilter(walker.currentNode) === FILTER_ACCEPT, "moveToAcceptedNode did not result in walker being on an accepted node")
+ if (moveResult) {
+ runtime.assert(nodeFilter(walker.currentNode) === FILTER_ACCEPT, "moveToAcceptedNode did not result in walker being on an accepted node");
}
- return moveResult
+ return moveResult;
}
this.setPositionBeforeElement = function(element) {
runtime.assert(Boolean(element), "setPositionBeforeElement called without element");
walker.currentNode = element;
currentPos = 0;
- return moveToAcceptedNode()
+ return moveToAcceptedNode();
};
this.setUnfilteredPosition = function(container, offset) {
var text;
runtime.assert(Boolean(container), "PositionIterator.setUnfilteredPosition called without container");
walker.currentNode = container;
- if(container.nodeType === TEXT_NODE) {
+ if (container.nodeType === TEXT_NODE) {
currentPos = offset;
text = (container);
runtime.assert(offset <= text.length, "Error in setPosition: " + offset + " > " + text.length);
runtime.assert(offset >= 0, "Error in setPosition: " + offset + " < 0");
- if(offset === text.length) {
- if(walker.nextSibling()) {
- currentPos = 0
- }else {
- if(walker.parentNode()) {
- currentPos = 1
- }else {
- runtime.assert(false, "Error in setUnfilteredPosition: position not valid.")
+ if (offset === text.length) {
+ if (walker.nextSibling()) {
+ currentPos = 0;
+ } else {
+ if (walker.parentNode()) {
+ currentPos = 1;
+ } else {
+ runtime.assert(false, "Error in setUnfilteredPosition: position not valid.");
}
}
}
- return true
- }
- if(offset < container.childNodes.length) {
- walker.currentNode = (container.childNodes.item(offset));
- currentPos = 0
- }else {
- currentPos = 1
+ } else {
+ if (offset < container.childNodes.length) {
+ walker.currentNode = (container.childNodes.item(offset));
+ currentPos = 0;
+ } else {
+ currentPos = 1;
+ }
}
- return moveToAcceptedNode()
+ return moveToAcceptedNode();
};
this.moveToEnd = function() {
walker.currentNode = root;
- currentPos = 1
+ currentPos = 1;
};
this.moveToEndOfNode = function(node) {
var text;
- if(node.nodeType === TEXT_NODE) {
+ if (node.nodeType === TEXT_NODE) {
text = (node);
- self.setUnfilteredPosition(text, text.length)
- }else {
+ self.setUnfilteredPosition(text, text.length);
+ } else {
walker.currentNode = node;
- currentPos = 1
+ currentPos = 1;
}
};
this.isBeforeNode = function() {
- return currentPos === 0
+ return currentPos === 0;
};
this.getNodeFilter = function() {
- return nodeFilter
+ return nodeFilter;
};
function init() {
var f;
- if(filter) {
- f = new FilteredEmptyTextNodeFilter(filter)
- }else {
- f = new EmptyTextNodeFilter
+ if (filter) {
+ f = new FilteredEmptyTextNodeFilter(filter);
+ } else {
+ f = new EmptyTextNodeFilter;
}
nodeFilter = (f.acceptNode);
nodeFilter.acceptNode = nodeFilter;
@@ -2414,1210 +2434,2222 @@ core.PositionIterator = function PositionIterator(root, whatToShow, filter, expa
runtime.assert(root.nodeType !== Node.TEXT_NODE, "Internet Explorer doesn't allow tree walker roots to be text nodes");
walker = root.ownerDocument.createTreeWalker(root, whatToShow, nodeFilter, expandEntityReferences);
currentPos = 0;
- if(walker.firstChild() === null) {
- currentPos = 1
+ if (walker.firstChild() === null) {
+ currentPos = 1;
}
}
- init()
+ init();
};
core.PositionFilter = function PositionFilter() {
};
core.PositionFilter.FilterResult = {FILTER_ACCEPT:1, FILTER_REJECT:2, FILTER_SKIP:3};
core.PositionFilter.prototype.acceptPosition = function(point) {
};
-(function() {
- return core.PositionFilter
-})();
core.PositionFilterChain = function PositionFilterChain() {
var filterChain = [], FILTER_ACCEPT = core.PositionFilter.FilterResult.FILTER_ACCEPT, FILTER_REJECT = core.PositionFilter.FilterResult.FILTER_REJECT;
this.acceptPosition = function(iterator) {
var i;
- for(i = 0;i < filterChain.length;i += 1) {
- if(filterChain[i].acceptPosition(iterator) === FILTER_REJECT) {
- return FILTER_REJECT
+ for (i = 0;i < filterChain.length;i += 1) {
+ if (filterChain[i].acceptPosition(iterator) === FILTER_REJECT) {
+ return FILTER_REJECT;
}
}
- return FILTER_ACCEPT
+ return FILTER_ACCEPT;
};
this.addFilter = function(filterInstance) {
- filterChain.push(filterInstance)
- }
-};
-core.zip_HuftNode = function() {
- this.e = 0;
- this.b = 0;
- this.n = 0;
- this.t = null
-};
-core.zip_HuftList = function() {
- this.next = null;
- this.list = null
+ filterChain.push(filterInstance);
+ };
};
-core.RawInflate = function RawInflate() {
- var zip_WSIZE = 32768;
- var zip_STORED_BLOCK = 0;
- var zip_lbits = 9;
- var zip_dbits = 6;
- var zip_slide = [];
- var zip_wp;
- var zip_fixed_tl = null;
- var zip_fixed_td;
- var zip_fixed_bl;
- var zip_bit_buf;
- var zip_bit_len;
- var zip_method;
- var zip_eof;
- var zip_copy_leng;
- var zip_copy_dist;
- var zip_tl, zip_td;
- var zip_bl, zip_bd;
- var zip_inflate_data;
- var zip_inflate_pos;
- var zip_MASK_BITS = [0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535];
- var zip_cplens = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0];
- var zip_cplext = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 99, 99];
- var zip_cpdist = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577];
- var zip_cpdext = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13];
- var zip_border = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];
- function Zip_HuftBuild(b, n, s, d, e, mm) {
- this.BMAX = 16;
- this.N_MAX = 288;
- this.status = 0;
- this.root = null;
- this.m = 0;
- var a, c = new Array(this.BMAX + 1), el, f, g, h, i, j, k, lx = new Array(this.BMAX + 1), p, pidx, q, r = new core.zip_HuftNode, u = new Array(this.BMAX), v = new Array(this.N_MAX), w, x = new Array(this.BMAX + 1), xp, y, z, o, tail;
- tail = this.root = null;
- for(i = 0;i < c.length;i++) {
- c[i] = 0
- }
- for(i = 0;i < lx.length;i++) {
- lx[i] = 0
- }
- for(i = 0;i < u.length;i++) {
- u[i] = null
- }
- for(i = 0;i < v.length;i++) {
- v[i] = 0
- }
- for(i = 0;i < x.length;i++) {
- x[i] = 0
- }
- el = n > 256 ? b[256] : this.BMAX;
- p = b;
- pidx = 0;
- i = n;
- do {
- c[p[pidx]]++;
- pidx++
- }while(--i > 0);
- if(c[0] === n) {
- this.root = null;
- this.m = 0;
- this.status = 0;
- return
- }
- for(j = 1;j <= this.BMAX;j++) {
- if(c[j] !== 0) {
- break
- }
- }
- k = j;
- if(mm < j) {
- mm = j
- }
- for(i = this.BMAX;i !== 0;i--) {
- if(c[i] !== 0) {
- break
- }
- }
- g = i;
- if(mm > i) {
- mm = i
- }
- for(y = 1 << j;j < i;j++, y <<= 1) {
- y -= c[j];
- if(y < 0) {
- this.status = 2;
- this.m = mm;
- return
- }
- }
- y -= c[i];
- if(y < 0) {
- this.status = 2;
- this.m = mm;
- return
- }
- c[i] += y;
- x[1] = j = 0;
- p = c;
- pidx = 1;
- xp = 2;
- while(--i > 0) {
- j += p[pidx++];
- x[xp++] = j
- }
- p = b;
- pidx = 0;
- i = 0;
- do {
- j = p[pidx++];
- if(j !== 0) {
- v[x[j]++] = i
- }
- }while(++i < n);
- n = x[g];
- x[0] = i = 0;
- p = v;
- pidx = 0;
- h = -1;
- w = lx[0] = 0;
- q = null;
- z = 0;
- k -= 1;
- for(k += 1;k <= g;k++) {
- a = c[k];
- while(a-- > 0) {
- while(k > w + lx[1 + h]) {
- w += lx[1 + h];
- h++;
- z = g - w;
- z = z > mm ? mm : z;
- j = k - w;
- f = 1 << j;
- if(f > a + 1) {
- f -= a + 1;
- xp = k;
- while(++j < z) {
- f <<= 1;
- if(f <= c[++xp]) {
- break
+(function() {
+ function createRawInflateSingleton() {
+ var pako;
+ (function(e) {
+ pako = e();
+ })(function() {
+ var module, exports;
+ return function e(t, n, r) {
+ function s(o, u) {
+ if (!n[o]) {
+ if (!t[o]) {
+ throw new Error("Cannot find module '" + o + "'");
+ }
+ var f = n[o] = {exports:{}};
+ t[o][0].call(f.exports, function(e) {
+ var n = t[o][1][e];
+ return s(n ? n : e);
+ }, f, f.exports, e, t, n, r);
+ }
+ return n[o].exports;
+ }
+ for (var o = 0;o < r.length;o++) {
+ s(r[o]);
+ }
+ return s;
+ }({1:[function(_dereq_, module, exports) {
+ var zlib_inflate = _dereq_("./zlib/inflate.js");
+ var utils = _dereq_("./utils/common");
+ var strings = _dereq_("./utils/strings");
+ var c = _dereq_("./zlib/constants");
+ var msg = _dereq_("./zlib/messages");
+ var zstream = _dereq_("./zlib/zstream");
+ var gzheader = _dereq_("./zlib/gzheader");
+ var Inflate = function(options) {
+ this.options = utils.assign({chunkSize:16384, windowBits:0, to:""}, options || {});
+ var opt = this.options;
+ if (opt.raw && opt.windowBits >= 0 && opt.windowBits < 16) {
+ opt.windowBits = -opt.windowBits;
+ if (opt.windowBits === 0) {
+ opt.windowBits = -15;
+ }
+ }
+ if (opt.windowBits >= 0 && opt.windowBits < 16 && !(options && options.windowBits)) {
+ opt.windowBits += 32;
+ }
+ if (opt.windowBits > 15 && opt.windowBits < 48) {
+ if ((opt.windowBits & 15) === 0) {
+ opt.windowBits |= 15;
+ }
+ }
+ this.err = 0;
+ this.msg = "";
+ this.ended = false;
+ this.chunks = [];
+ this.strm = new zstream;
+ this.strm.avail_out = 0;
+ var status = zlib_inflate.inflateInit2(this.strm, opt.windowBits);
+ if (status !== c.Z_OK) {
+ throw new Error(msg[status]);
+ }
+ this.header = new gzheader;
+ zlib_inflate.inflateGetHeader(this.strm, this.header);
+ };
+ Inflate.prototype.push = function(data, mode) {
+ var strm = this.strm;
+ var chunkSize = this.options.chunkSize;
+ var status, _mode;
+ var next_out_utf8, tail, utf8str;
+ if (this.ended) {
+ return false;
+ }
+ _mode = mode === ~~mode ? mode : mode === true ? c.Z_FINISH : c.Z_NO_FLUSH;
+ if (typeof data === "string") {
+ strm.input = strings.binstring2buf(data);
+ } else {
+ strm.input = data;
+ }
+ strm.next_in = 0;
+ strm.avail_in = strm.input.length;
+ do {
+ if (strm.avail_out === 0) {
+ strm.output = new utils.Buf8(chunkSize);
+ strm.next_out = 0;
+ strm.avail_out = chunkSize;
+ }
+ status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH);
+ if (status !== c.Z_STREAM_END && status !== c.Z_OK) {
+ this.onEnd(status);
+ this.ended = true;
+ return false;
+ }
+ if (strm.next_out) {
+ if (strm.avail_out === 0 || status === c.Z_STREAM_END || strm.avail_in === 0 && _mode === c.Z_FINISH) {
+ if (this.options.to === "string") {
+ next_out_utf8 = strings.utf8border(strm.output, strm.next_out);
+ tail = strm.next_out - next_out_utf8;
+ utf8str = strings.buf2string(strm.output, next_out_utf8);
+ strm.next_out = tail;
+ strm.avail_out = chunkSize - tail;
+ if (tail) {
+ utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0);
+ }
+ this.onData(utf8str);
+ } else {
+ this.onData(utils.shrinkBuf(strm.output, strm.next_out));
+ }
}
- f -= c[xp]
}
+ } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);
+ if (status === c.Z_STREAM_END) {
+ _mode = c.Z_FINISH;
}
- if(w + j > el && w < el) {
- j = el - w
+ if (_mode === c.Z_FINISH) {
+ status = zlib_inflate.inflateEnd(this.strm);
+ this.onEnd(status);
+ this.ended = true;
+ return status === c.Z_OK;
}
- z = 1 << j;
- lx[1 + h] = j;
- q = new Array(z);
- for(o = 0;o < z;o++) {
- q[o] = new core.zip_HuftNode
+ return true;
+ };
+ Inflate.prototype.onData = function(chunk) {
+ this.chunks.push(chunk);
+ };
+ Inflate.prototype.onEnd = function(status) {
+ if (status === c.Z_OK) {
+ if (this.options.to === "string") {
+ this.result = this.chunks.join("");
+ } else {
+ this.result = utils.flattenChunks(this.chunks);
+ }
}
- if(tail === null) {
- tail = this.root = new core.zip_HuftList
- }else {
- tail = tail.next = new core.zip_HuftList
+ this.chunks = [];
+ this.err = status;
+ this.msg = this.strm.msg;
+ };
+ function inflate(input, options) {
+ var inflator = new Inflate(options);
+ inflator.push(input, true);
+ if (inflator.err) {
+ throw inflator.msg;
}
- tail.next = null;
- tail.list = q;
- u[h] = q;
- if(h > 0) {
- x[h] = i;
- r.b = lx[h];
- r.e = 16 + j;
- r.t = q;
- j = (i & (1 << w) - 1) >> w - lx[h];
- u[h - 1][j].e = r.e;
- u[h - 1][j].b = r.b;
- u[h - 1][j].n = (r).n;
- u[h - 1][j].t = r.t
+ return inflator.result;
+ }
+ function inflateRaw(input, options) {
+ options = options || {};
+ options.raw = true;
+ return inflate(input, options);
+ }
+ exports.Inflate = Inflate;
+ exports.inflate = inflate;
+ exports.inflateRaw = inflateRaw;
+ exports.ungzip = inflate;
+ }, {"./utils/common":2, "./utils/strings":3, "./zlib/constants":5, "./zlib/gzheader":7, "./zlib/inflate.js":9, "./zlib/messages":11, "./zlib/zstream":12}], 2:[function(_dereq_, module, exports) {
+ var TYPED_OK = typeof Uint8Array !== "undefined" && typeof Uint16Array !== "undefined" && typeof Int32Array !== "undefined";
+ exports.assign = function(obj) {
+ var sources = Array.prototype.slice.call(arguments, 1);
+ while (sources.length) {
+ var source = sources.shift();
+ if (!source) {
+ continue;
+ }
+ if (typeof source !== "object") {
+ throw new TypeError(source + "must be non-object");
+ }
+ for (var p in source) {
+ if (source.hasOwnProperty(p)) {
+ obj[p] = source[p];
+ }
+ }
}
- }
- r.b = k - w;
- if(pidx >= n) {
- r.e = 99
- }else {
- if(p[pidx] < s) {
- r.e = p[pidx] < 256 ? 16 : 15;
- r.n = p[pidx++]
- }else {
- r.e = e[p[pidx] - s];
- r.n = d[p[pidx++] - s]
+ return obj;
+ };
+ exports.shrinkBuf = function(buf, size) {
+ if (buf.length === size) {
+ return buf;
}
- }
- f = 1 << k - w;
- for(j = i >> w;j < z;j += f) {
- q[j].e = r.e;
- q[j].b = r.b;
- q[j].n = (r).n;
- q[j].t = r.t
- }
- for(j = 1 << k - 1;(i & j) !== 0;j >>= 1) {
- i ^= j
- }
- i ^= j;
- while((i & (1 << w) - 1) !== x[h]) {
- w -= lx[h];
- h--
- }
- }
- }
- this.m = lx[1];
- this.status = y !== 0 && g !== 1 ? 1 : 0
- }
- function zip_GET_BYTE() {
- if(zip_inflate_data.length === zip_inflate_pos) {
- return-1
- }
- return zip_inflate_data[zip_inflate_pos++]
- }
- function zip_NEEDBITS(n) {
- while(zip_bit_len < n) {
- zip_bit_buf |= zip_GET_BYTE() << zip_bit_len;
- zip_bit_len += 8
- }
- }
- function zip_GETBITS(n) {
- return zip_bit_buf & zip_MASK_BITS[n]
- }
- function zip_DUMPBITS(n) {
- zip_bit_buf >>= n;
- zip_bit_len -= n
- }
- function zip_inflate_codes(buff, off, size) {
- var e, t, n;
- if(size === 0) {
- return 0
- }
- n = 0;
- for(;;) {
- zip_NEEDBITS(zip_bl);
- t = zip_tl.list[zip_GETBITS(zip_bl)];
- e = t.e;
- while(e > 16) {
- if(e === 99) {
- return-1
- }
- zip_DUMPBITS(t.b);
- e -= 16;
- zip_NEEDBITS(e);
- t = t.t[zip_GETBITS(e)];
- e = t.e
- }
- zip_DUMPBITS(t.b);
- if(e === 16) {
- zip_wp &= zip_WSIZE - 1;
- buff[off + n++] = zip_slide[zip_wp++] = t.n;
- if(n === size) {
- return size
- }
- }else {
- if(e === 15) {
- break
- }
- zip_NEEDBITS(e);
- zip_copy_leng = t.n + zip_GETBITS(e);
- zip_DUMPBITS(e);
- zip_NEEDBITS(zip_bd);
- t = zip_td.list[zip_GETBITS(zip_bd)];
- e = t.e;
- while(e > 16) {
- if(e === 99) {
- return-1
+ if (buf.subarray) {
+ return buf.subarray(0, size);
}
- zip_DUMPBITS(t.b);
- e -= 16;
- zip_NEEDBITS(e);
- t = t.t[zip_GETBITS(e)];
- e = t.e
- }
- zip_DUMPBITS(t.b);
- zip_NEEDBITS(e);
- zip_copy_dist = zip_wp - t.n - zip_GETBITS(e);
- zip_DUMPBITS(e);
- while(zip_copy_leng > 0 && n < size) {
- zip_copy_leng--;
- zip_copy_dist &= zip_WSIZE - 1;
- zip_wp &= zip_WSIZE - 1;
- buff[off + n++] = zip_slide[zip_wp++] = zip_slide[zip_copy_dist++]
- }
- if(n === size) {
- return size
+ buf.length = size;
+ return buf;
+ };
+ var fnTyped = {arraySet:function(dest, src, src_offs, len, dest_offs) {
+ if (src.subarray && dest.subarray) {
+ dest.set(src.subarray(src_offs, src_offs + len), dest_offs);
+ return;
+ }
+ for (var i = 0;i < len;i++) {
+ dest[dest_offs + i] = src[src_offs + i];
+ }
+ }, flattenChunks:function(chunks) {
+ var i, l, len, pos, chunk, result;
+ len = 0;
+ for (i = 0, l = chunks.length;i < l;i++) {
+ len += chunks[i].length;
+ }
+ result = new Uint8Array(len);
+ pos = 0;
+ for (i = 0, l = chunks.length;i < l;i++) {
+ chunk = chunks[i];
+ result.set(chunk, pos);
+ pos += chunk.length;
+ }
+ return result;
+ }};
+ var fnUntyped = {arraySet:function(dest, src, src_offs, len, dest_offs) {
+ for (var i = 0;i < len;i++) {
+ dest[dest_offs + i] = src[src_offs + i];
+ }
+ }, flattenChunks:function(chunks) {
+ return [].concat.apply([], chunks);
+ }};
+ exports.setTyped = function(on) {
+ if (on) {
+ exports.Buf8 = Uint8Array;
+ exports.Buf16 = Uint16Array;
+ exports.Buf32 = Int32Array;
+ exports.assign(exports, fnTyped);
+ } else {
+ exports.Buf8 = Array;
+ exports.Buf16 = Array;
+ exports.Buf32 = Array;
+ exports.assign(exports, fnUntyped);
+ }
+ };
+ exports.setTyped(TYPED_OK);
+ }, {}], 3:[function(_dereq_, module, exports) {
+ var utils = _dereq_("./common");
+ var STR_APPLY_OK = true;
+ var STR_APPLY_UIA_OK = true;
+ try {
+ String.fromCharCode.apply(null, [0]);
+ } catch (__) {
+ STR_APPLY_OK = false;
}
- }
- }
- zip_method = -1;
- return n
- }
- function zip_inflate_stored(buff, off, size) {
- var n;
- n = zip_bit_len & 7;
- zip_DUMPBITS(n);
- zip_NEEDBITS(16);
- n = zip_GETBITS(16);
- zip_DUMPBITS(16);
- zip_NEEDBITS(16);
- if(n !== (~zip_bit_buf & 65535)) {
- return-1
- }
- zip_DUMPBITS(16);
- zip_copy_leng = n;
- n = 0;
- while(zip_copy_leng > 0 && n < size) {
- zip_copy_leng--;
- zip_wp &= zip_WSIZE - 1;
- zip_NEEDBITS(8);
- buff[off + n++] = zip_slide[zip_wp++] = zip_GETBITS(8);
- zip_DUMPBITS(8)
- }
- if(zip_copy_leng === 0) {
- zip_method = -1
- }
- return n
- }
- var zip_fixed_bd;
- function zip_inflate_fixed(buff, off, size) {
- if(zip_fixed_tl === null) {
- var i;
- var l = new Array(288);
- var h;
- for(i = 0;i < 144;i++) {
- l[i] = 8
- }
- for(i = 144;i < 256;i++) {
- l[i] = 9
- }
- for(i = 256;i < 280;i++) {
- l[i] = 7
- }
- for(i = 280;i < 288;i++) {
- l[i] = 8
- }
- zip_fixed_bl = 7;
- h = new Zip_HuftBuild(l, 288, 257, zip_cplens, zip_cplext, zip_fixed_bl);
- if(h.status !== 0) {
- alert("HufBuild error: " + h.status);
- return-1
- }
- zip_fixed_tl = h.root;
- zip_fixed_bl = h.m;
- for(i = 0;i < 30;i++) {
- l[i] = 5
- }
- zip_fixed_bd = 5;
- h = new Zip_HuftBuild(l, 30, 0, zip_cpdist, zip_cpdext, zip_fixed_bd);
- if(h.status > 1) {
- zip_fixed_tl = null;
- alert("HufBuild error: " + h.status);
- return-1
- }
- zip_fixed_td = h.root;
- zip_fixed_bd = h.m
- }
- zip_tl = zip_fixed_tl;
- zip_td = zip_fixed_td;
- zip_bl = zip_fixed_bl;
- zip_bd = zip_fixed_bd;
- return zip_inflate_codes(buff, off, size)
- }
- function zip_inflate_dynamic(buff, off, size) {
- var i;
- var j;
- var l;
- var n;
- var t;
- var nb;
- var nl;
- var nd;
- var ll = new Array(286 + 30);
- var h;
- for(i = 0;i < ll.length;i++) {
- ll[i] = 0
- }
- zip_NEEDBITS(5);
- nl = 257 + zip_GETBITS(5);
- zip_DUMPBITS(5);
- zip_NEEDBITS(5);
- nd = 1 + zip_GETBITS(5);
- zip_DUMPBITS(5);
- zip_NEEDBITS(4);
- nb = 4 + zip_GETBITS(4);
- zip_DUMPBITS(4);
- if(nl > 286 || nd > 30) {
- return-1
- }
- for(j = 0;j < nb;j++) {
- zip_NEEDBITS(3);
- ll[zip_border[j]] = zip_GETBITS(3);
- zip_DUMPBITS(3)
- }
- for(j = nb;j < 19;j++) {
- ll[zip_border[j]] = 0
- }
- zip_bl = 7;
- h = new Zip_HuftBuild(ll, 19, 19, null, null, zip_bl);
- if(h.status !== 0) {
- return-1
- }
- zip_tl = h.root;
- zip_bl = h.m;
- n = nl + nd;
- i = l = 0;
- while(i < n) {
- zip_NEEDBITS(zip_bl);
- t = zip_tl.list[zip_GETBITS(zip_bl)];
- j = t.b;
- zip_DUMPBITS(j);
- j = t.n;
- if(j < 16) {
- ll[i++] = l = j
- }else {
- if(j === 16) {
- zip_NEEDBITS(2);
- j = 3 + zip_GETBITS(2);
- zip_DUMPBITS(2);
- if(i + j > n) {
- return-1
+ try {
+ String.fromCharCode.apply(null, new Uint8Array(1));
+ } catch (__) {
+ STR_APPLY_UIA_OK = false;
+ }
+ var _utf8len = new utils.Buf8(256);
+ for (var i = 0;i < 256;i++) {
+ _utf8len[i] = i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1;
+ }
+ _utf8len[254] = _utf8len[254] = 1;
+ exports.string2buf = function(str) {
+ var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;
+ for (m_pos = 0;m_pos < str_len;m_pos++) {
+ c = str.charCodeAt(m_pos);
+ if ((c & 64512) === 55296 && m_pos + 1 < str_len) {
+ c2 = str.charCodeAt(m_pos + 1);
+ if ((c2 & 64512) === 56320) {
+ c = 65536 + (c - 55296 << 10) + (c2 - 56320);
+ m_pos++;
+ }
+ }
+ buf_len += c < 128 ? 1 : c < 2048 ? 2 : c < 65536 ? 3 : 4;
+ }
+ buf = new utils.Buf8(buf_len);
+ for (i = 0, m_pos = 0;i < buf_len;m_pos++) {
+ c = str.charCodeAt(m_pos);
+ if ((c & 64512) === 55296 && m_pos + 1 < str_len) {
+ c2 = str.charCodeAt(m_pos + 1);
+ if ((c2 & 64512) === 56320) {
+ c = 65536 + (c - 55296 << 10) + (c2 - 56320);
+ m_pos++;
+ }
+ }
+ if (c < 128) {
+ buf[i++] = c;
+ } else {
+ if (c < 2048) {
+ buf[i++] = 192 | c >>> 6;
+ buf[i++] = 128 | c & 63;
+ } else {
+ if (c < 65536) {
+ buf[i++] = 224 | c >>> 12;
+ buf[i++] = 128 | c >>> 6 & 63;
+ buf[i++] = 128 | c & 63;
+ } else {
+ buf[i++] = 240 | c >>> 18;
+ buf[i++] = 128 | c >>> 12 & 63;
+ buf[i++] = 128 | c >>> 6 & 63;
+ buf[i++] = 128 | c & 63;
+ }
+ }
+ }
+ }
+ return buf;
+ };
+ function buf2binstring(buf, len) {
+ if (len < 65537) {
+ if (buf.subarray && STR_APPLY_UIA_OK || !buf.subarray && STR_APPLY_OK) {
+ return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));
+ }
+ }
+ var result = "";
+ for (var i = 0;i < len;i++) {
+ result += String.fromCharCode(buf[i]);
}
- while(j-- > 0) {
- ll[i++] = l
+ return result;
+ }
+ exports.buf2binstring = function(buf) {
+ return buf2binstring(buf, buf.length);
+ };
+ exports.binstring2buf = function(str) {
+ var buf = new utils.Buf8(str.length);
+ for (var i = 0, len = buf.length;i < len;i++) {
+ buf[i] = str.charCodeAt(i);
}
- }else {
- if(j === 17) {
- zip_NEEDBITS(3);
- j = 3 + zip_GETBITS(3);
- zip_DUMPBITS(3);
- if(i + j > n) {
- return-1
+ return buf;
+ };
+ exports.buf2string = function(buf, max) {
+ var i, out, c, c_len;
+ var len = max || buf.length;
+ var utf16buf = new Array(len * 2);
+ for (out = 0, i = 0;i < len;) {
+ c = buf[i++];
+ if (c < 128) {
+ utf16buf[out++] = c;
+ continue;
}
- while(j-- > 0) {
- ll[i++] = 0
+ c_len = _utf8len[c];
+ if (c_len > 4) {
+ utf16buf[out++] = 65533;
+ i += c_len - 1;
+ continue;
}
- l = 0
- }else {
- zip_NEEDBITS(7);
- j = 11 + zip_GETBITS(7);
- zip_DUMPBITS(7);
- if(i + j > n) {
- return-1
+ c &= c_len === 2 ? 31 : c_len === 3 ? 15 : 7;
+ while (c_len > 1 && i < len) {
+ c = c << 6 | buf[i++] & 63;
+ c_len--;
}
- while(j-- > 0) {
- ll[i++] = 0
+ if (c_len > 1) {
+ utf16buf[out++] = 65533;
+ continue;
+ }
+ if (c < 65536) {
+ utf16buf[out++] = c;
+ } else {
+ c -= 65536;
+ utf16buf[out++] = 55296 | c >> 10 & 1023;
+ utf16buf[out++] = 56320 | c & 1023;
}
- l = 0
}
- }
- }
- }
- zip_bl = zip_lbits;
- h = new Zip_HuftBuild(ll, nl, 257, zip_cplens, zip_cplext, zip_bl);
- if(zip_bl === 0) {
- h.status = 1
- }
- if(h.status !== 0) {
- return-1
- }
- zip_tl = h.root;
- zip_bl = h.m;
- for(i = 0;i < nd;i++) {
- ll[i] = ll[i + nl]
- }
- zip_bd = zip_dbits;
- h = new Zip_HuftBuild(ll, nd, 0, zip_cpdist, zip_cpdext, zip_bd);
- zip_td = h.root;
- zip_bd = h.m;
- if(zip_bd === 0 && nl > 257) {
- return-1
- }
- if(h.status !== 0) {
- return-1
- }
- return zip_inflate_codes(buff, off, size)
- }
- function zip_inflate_start() {
- zip_slide.length = 2 * zip_WSIZE;
- zip_wp = 0;
- zip_bit_buf = 0;
- zip_bit_len = 0;
- zip_method = -1;
- zip_eof = false;
- zip_copy_leng = zip_copy_dist = 0;
- zip_tl = null
- }
- function zip_inflate_internal(buff, off, size) {
- var n = 0, i;
- while(n < size) {
- if(zip_eof && zip_method === -1) {
- return n
- }
- if(zip_copy_leng > 0) {
- if(zip_method !== zip_STORED_BLOCK) {
- while(zip_copy_leng > 0 && n < size) {
- zip_copy_leng--;
- zip_copy_dist &= zip_WSIZE - 1;
- zip_wp &= zip_WSIZE - 1;
- buff[off + n] = zip_slide[zip_wp] = zip_slide[zip_copy_dist];
- n += 1;
- zip_wp += 1;
- zip_copy_dist += 1
+ return buf2binstring(utf16buf, out);
+ };
+ exports.utf8border = function(buf, max) {
+ var pos;
+ max = max || buf.length;
+ if (max > buf.length) {
+ max = buf.length;
}
- }else {
- while(zip_copy_leng > 0 && n < size) {
- zip_copy_leng -= 1;
- zip_wp &= zip_WSIZE - 1;
- zip_NEEDBITS(8);
- buff[off + n] = zip_slide[zip_wp] = zip_GETBITS(8);
- n += 1;
- zip_wp += 1;
- zip_DUMPBITS(8)
+ pos = max - 1;
+ while (pos >= 0 && (buf[pos] & 192) === 128) {
+ pos--;
}
- if(zip_copy_leng === 0) {
- zip_method = -1
+ if (pos < 0) {
+ return max;
}
+ if (pos === 0) {
+ return max;
+ }
+ return pos + _utf8len[buf[pos]] > max ? pos : max;
+ };
+ }, {"./common":2}], 4:[function(_dereq_, module, exports) {
+ function adler32(adler, buf, len, pos) {
+ var s1 = adler & 65535 | 0, s2 = adler >>> 16 & 65535 | 0, n = 0;
+ while (len !== 0) {
+ n = len > 2E3 ? 2E3 : len;
+ len -= n;
+ do {
+ s1 = s1 + buf[pos++] | 0;
+ s2 = s2 + s1 | 0;
+ } while (--n);
+ s1 %= 65521;
+ s2 %= 65521;
+ }
+ return s1 | s2 << 16 | 0;
+ }
+ module.exports = adler32;
+ }, {}], 5:[function(_dereq_, module, exports) {
+ module.exports = {Z_NO_FLUSH:0, Z_PARTIAL_FLUSH:1, Z_SYNC_FLUSH:2, Z_FULL_FLUSH:3, Z_FINISH:4, Z_BLOCK:5, Z_TREES:6, Z_OK:0, Z_STREAM_END:1, Z_NEED_DICT:2, Z_ERRNO:-1, Z_STREAM_ERROR:-2, Z_DATA_ERROR:-3, Z_BUF_ERROR:-5, Z_NO_COMPRESSION:0, Z_BEST_SPEED:1, Z_BEST_COMPRESSION:9, Z_DEFAULT_COMPRESSION:-1, Z_FILTERED:1, Z_HUFFMAN_ONLY:2, Z_RLE:3, Z_FIXED:4, Z_DEFAULT_STRATEGY:0, Z_BINARY:0, Z_TEXT:1, Z_UNKNOWN:2, Z_DEFLATED:8};
+ }, {}], 6:[function(_dereq_, module, exports) {
+ function makeTable() {
+ var c, table = [];
+ for (var n = 0;n < 256;n++) {
+ c = n;
+ for (var k = 0;k < 8;k++) {
+ c = c & 1 ? 3988292384 ^ c >>> 1 : c >>> 1;
+ }
+ table[n] = c;
+ }
+ return table;
+ }
+ var crcTable = makeTable();
+ function crc32(crc, buf, len, pos) {
+ var t = crcTable, end = pos + len;
+ crc = crc ^ -1;
+ for (var i = pos;i < end;i++) {
+ crc = crc >>> 8 ^ t[(crc ^ buf[i]) & 255];
+ }
+ return crc ^ -1;
+ }
+ module.exports = crc32;
+ }, {}], 7:[function(_dereq_, module, exports) {
+ function GZheader() {
+ this.text = 0;
+ this.time = 0;
+ this.xflags = 0;
+ this.os = 0;
+ this.extra = null;
+ this.extra_len = 0;
+ this.name = "";
+ this.comment = "";
+ this.hcrc = 0;
+ this.done = false;
+ }
+ module.exports = GZheader;
+ }, {}], 8:[function(_dereq_, module, exports) {
+ var BAD = 30;
+ var TYPE = 12;
+ module.exports = function inflate_fast(strm, start) {
+ var state;
+ var _in;
+ var last;
+ var _out;
+ var beg;
+ var end;
+ var dmax;
+ var wsize;
+ var whave;
+ var wnext;
+ var window;
+ var hold;
+ var bits;
+ var lcode;
+ var dcode;
+ var lmask;
+ var dmask;
+ var here;
+ var op;
+ var len;
+ var dist;
+ var from;
+ var from_source;
+ var input, output;
+ state = strm.state;
+ _in = strm.next_in;
+ input = strm.input;
+ last = _in + (strm.avail_in - 5);
+ _out = strm.next_out;
+ output = strm.output;
+ beg = _out - (start - strm.avail_out);
+ end = _out + (strm.avail_out - 257);
+ dmax = state.dmax;
+ wsize = state.wsize;
+ whave = state.whave;
+ wnext = state.wnext;
+ window = state.window;
+ hold = state.hold;
+ bits = state.bits;
+ lcode = state.lencode;
+ dcode = state.distcode;
+ lmask = (1 << state.lenbits) - 1;
+ dmask = (1 << state.distbits) - 1;
+ top: do {
+ if (bits < 15) {
+ hold += input[_in++] << bits;
+ bits += 8;
+ hold += input[_in++] << bits;
+ bits += 8;
+ }
+ here = lcode[hold & lmask];
+ dolen: for (;;) {
+ op = here >>> 24;
+ hold >>>= op;
+ bits -= op;
+ op = here >>> 16 & 255;
+ if (op === 0) {
+ output[_out++] = here & 65535;
+ } else {
+ if (op & 16) {
+ len = here & 65535;
+ op &= 15;
+ if (op) {
+ if (bits < op) {
+ hold += input[_in++] << bits;
+ bits += 8;
+ }
+ len += hold & (1 << op) - 1;
+ hold >>>= op;
+ bits -= op;
+ }
+ if (bits < 15) {
+ hold += input[_in++] << bits;
+ bits += 8;
+ hold += input[_in++] << bits;
+ bits += 8;
+ }
+ here = dcode[hold & dmask];
+ dodist: for (;;) {
+ op = here >>> 24;
+ hold >>>= op;
+ bits -= op;
+ op = here >>> 16 & 255;
+ if (op & 16) {
+ dist = here & 65535;
+ op &= 15;
+ if (bits < op) {
+ hold += input[_in++] << bits;
+ bits += 8;
+ if (bits < op) {
+ hold += input[_in++] << bits;
+ bits += 8;
+ }
+ }
+ dist += hold & (1 << op) - 1;
+ if (dist > dmax) {
+ strm.msg = "invalid distance too far back";
+ state.mode = BAD;
+ break top;
+ }
+ hold >>>= op;
+ bits -= op;
+ op = _out - beg;
+ if (dist > op) {
+ op = dist - op;
+ if (op > whave) {
+ if (state.sane) {
+ strm.msg = "invalid distance too far back";
+ state.mode = BAD;
+ break top;
+ }
+ }
+ from = 0;
+ from_source = window;
+ if (wnext === 0) {
+ from += wsize - op;
+ if (op < len) {
+ len -= op;
+ do {
+ output[_out++] = window[from++];
+ } while (--op);
+ from = _out - dist;
+ from_source = output;
+ }
+ } else {
+ if (wnext < op) {
+ from += wsize + wnext - op;
+ op -= wnext;
+ if (op < len) {
+ len -= op;
+ do {
+ output[_out++] = window[from++];
+ } while (--op);
+ from = 0;
+ if (wnext < len) {
+ op = wnext;
+ len -= op;
+ do {
+ output[_out++] = window[from++];
+ } while (--op);
+ from = _out - dist;
+ from_source = output;
+ }
+ }
+ } else {
+ from += wnext - op;
+ if (op < len) {
+ len -= op;
+ do {
+ output[_out++] = window[from++];
+ } while (--op);
+ from = _out - dist;
+ from_source = output;
+ }
+ }
+ }
+ while (len > 2) {
+ output[_out++] = from_source[from++];
+ output[_out++] = from_source[from++];
+ output[_out++] = from_source[from++];
+ len -= 3;
+ }
+ if (len) {
+ output[_out++] = from_source[from++];
+ if (len > 1) {
+ output[_out++] = from_source[from++];
+ }
+ }
+ } else {
+ from = _out - dist;
+ do {
+ output[_out++] = output[from++];
+ output[_out++] = output[from++];
+ output[_out++] = output[from++];
+ len -= 3;
+ } while (len > 2);
+ if (len) {
+ output[_out++] = output[from++];
+ if (len > 1) {
+ output[_out++] = output[from++];
+ }
+ }
+ }
+ } else {
+ if ((op & 64) === 0) {
+ here = dcode[(here & 65535) + (hold & (1 << op) - 1)];
+ continue dodist;
+ } else {
+ strm.msg = "invalid distance code";
+ state.mode = BAD;
+ break top;
+ }
+ }
+ break;
+ }
+ } else {
+ if ((op & 64) === 0) {
+ here = lcode[(here & 65535) + (hold & (1 << op) - 1)];
+ continue dolen;
+ } else {
+ if (op & 32) {
+ state.mode = TYPE;
+ break top;
+ } else {
+ strm.msg = "invalid literal/length code";
+ state.mode = BAD;
+ break top;
+ }
+ }
+ }
+ }
+ break;
+ }
+ } while (_in < last && _out < end);
+ len = bits >> 3;
+ _in -= len;
+ bits -= len << 3;
+ hold &= (1 << bits) - 1;
+ strm.next_in = _in;
+ strm.next_out = _out;
+ strm.avail_in = _in < last ? 5 + (last - _in) : 5 - (_in - last);
+ strm.avail_out = _out < end ? 257 + (end - _out) : 257 - (_out - end);
+ state.hold = hold;
+ state.bits = bits;
+ return;
+ };
+ }, {}], 9:[function(_dereq_, module, exports) {
+ var utils = _dereq_("../utils/common");
+ var adler32 = _dereq_("./adler32");
+ var crc32 = _dereq_("./crc32");
+ var inflate_fast = _dereq_("./inffast");
+ var inflate_table = _dereq_("./inftrees");
+ var CODES = 0;
+ var LENS = 1;
+ var DISTS = 2;
+ var Z_FINISH = 4;
+ var Z_BLOCK = 5;
+ var Z_TREES = 6;
+ var Z_OK = 0;
+ var Z_STREAM_END = 1;
+ var Z_NEED_DICT = 2;
+ var Z_STREAM_ERROR = -2;
+ var Z_DATA_ERROR = -3;
+ var Z_MEM_ERROR = -4;
+ var Z_BUF_ERROR = -5;
+ var Z_DEFLATED = 8;
+ var HEAD = 1;
+ var FLAGS = 2;
+ var TIME = 3;
+ var OS = 4;
+ var EXLEN = 5;
+ var EXTRA = 6;
+ var NAME = 7;
+ var COMMENT = 8;
+ var HCRC = 9;
+ var DICTID = 10;
+ var DICT = 11;
+ var TYPE = 12;
+ var TYPEDO = 13;
+ var STORED = 14;
+ var COPY_ = 15;
+ var COPY = 16;
+ var TABLE = 17;
+ var LENLENS = 18;
+ var CODELENS = 19;
+ var LEN_ = 20;
+ var LEN = 21;
+ var LENEXT = 22;
+ var DIST = 23;
+ var DISTEXT = 24;
+ var MATCH = 25;
+ var LIT = 26;
+ var CHECK = 27;
+ var LENGTH = 28;
+ var DONE = 29;
+ var BAD = 30;
+ var MEM = 31;
+ var SYNC = 32;
+ var ENOUGH_LENS = 852;
+ var ENOUGH_DISTS = 592;
+ var MAX_WBITS = 15;
+ var DEF_WBITS = MAX_WBITS;
+ function ZSWAP32(q) {
+ return (q >>> 24 & 255) + (q >>> 8 & 65280) + ((q & 65280) << 8) + ((q & 255) << 24);
+ }
+ function InflateState() {
+ this.mode = 0;
+ this.last = false;
+ this.wrap = 0;
+ this.havedict = false;
+ this.flags = 0;
+ this.dmax = 0;
+ this.check = 0;
+ this.total = 0;
+ this.head = null;
+ this.wbits = 0;
+ this.wsize = 0;
+ this.whave = 0;
+ this.wnext = 0;
+ this.window = null;
+ this.hold = 0;
+ this.bits = 0;
+ this.length = 0;
+ this.offset = 0;
+ this.extra = 0;
+ this.lencode = null;
+ this.distcode = null;
+ this.lenbits = 0;
+ this.distbits = 0;
+ this.ncode = 0;
+ this.nlen = 0;
+ this.ndist = 0;
+ this.have = 0;
+ this.next = null;
+ this.lens = new utils.Buf16(320);
+ this.work = new utils.Buf16(288);
+ this.lendyn = null;
+ this.distdyn = null;
+ this.sane = 0;
+ this.back = 0;
+ this.was = 0;
+ }
+ function inflateResetKeep(strm) {
+ var state;
+ if (!strm || !strm.state) {
+ return Z_STREAM_ERROR;
+ }
+ state = strm.state;
+ strm.total_in = strm.total_out = state.total = 0;
+ strm.msg = "";
+ if (state.wrap) {
+ strm.adler = state.wrap & 1;
+ }
+ state.mode = HEAD;
+ state.last = 0;
+ state.havedict = 0;
+ state.dmax = 32768;
+ state.head = null;
+ state.hold = 0;
+ state.bits = 0;
+ state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);
+ state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);
+ state.sane = 1;
+ state.back = -1;
+ return Z_OK;
+ }
+ function inflateReset(strm) {
+ var state;
+ if (!strm || !strm.state) {
+ return Z_STREAM_ERROR;
+ }
+ state = strm.state;
+ state.wsize = 0;
+ state.whave = 0;
+ state.wnext = 0;
+ return inflateResetKeep(strm);
+ }
+ function inflateReset2(strm, windowBits) {
+ var wrap;
+ var state;
+ if (!strm || !strm.state) {
+ return Z_STREAM_ERROR;
+ }
+ state = strm.state;
+ if (windowBits < 0) {
+ wrap = 0;
+ windowBits = -windowBits;
+ } else {
+ wrap = (windowBits >> 4) + 1;
+ if (windowBits < 48) {
+ windowBits &= 15;
+ }
+ }
+ if (windowBits && (windowBits < 8 || windowBits > 15)) {
+ return Z_STREAM_ERROR;
+ }
+ if (state.window !== null && state.wbits !== windowBits) {
+ state.window = null;
+ }
+ state.wrap = wrap;
+ state.wbits = windowBits;
+ return inflateReset(strm);
+ }
+ function inflateInit2(strm, windowBits) {
+ var ret;
+ var state;
+ if (!strm) {
+ return Z_STREAM_ERROR;
+ }
+ state = new InflateState;
+ strm.state = state;
+ state.window = null;
+ ret = inflateReset2(strm, windowBits);
+ if (ret !== Z_OK) {
+ strm.state = null;
+ }
+ return ret;
+ }
+ function inflateInit(strm) {
+ return inflateInit2(strm, DEF_WBITS);
+ }
+ var virgin = true;
+ var lenfix, distfix;
+ function fixedtables(state) {
+ if (virgin) {
+ var sym;
+ lenfix = new utils.Buf32(512);
+ distfix = new utils.Buf32(32);
+ sym = 0;
+ while (sym < 144) {
+ state.lens[sym++] = 8;
+ }
+ while (sym < 256) {
+ state.lens[sym++] = 9;
+ }
+ while (sym < 280) {
+ state.lens[sym++] = 7;
+ }
+ while (sym < 288) {
+ state.lens[sym++] = 8;
+ }
+ inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, {bits:9});
+ sym = 0;
+ while (sym < 32) {
+ state.lens[sym++] = 5;
+ }
+ inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, {bits:5});
+ virgin = false;
+ }
+ state.lencode = lenfix;
+ state.lenbits = 9;
+ state.distcode = distfix;
+ state.distbits = 5;
+ }
+ function updatewindow(strm, src, end, copy) {
+ var dist;
+ var state = strm.state;
+ if (state.window === null) {
+ state.wsize = 1 << state.wbits;
+ state.wnext = 0;
+ state.whave = 0;
+ state.window = new utils.Buf8(state.wsize);
+ }
+ if (copy >= state.wsize) {
+ utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);
+ state.wnext = 0;
+ state.whave = state.wsize;
+ } else {
+ dist = state.wsize - state.wnext;
+ if (dist > copy) {
+ dist = copy;
+ }
+ utils.arraySet(state.window, src, end - copy, dist, state.wnext);
+ copy -= dist;
+ if (copy) {
+ utils.arraySet(state.window, src, end - copy, copy, 0);
+ state.wnext = copy;
+ state.whave = state.wsize;
+ } else {
+ state.wnext += dist;
+ if (state.wnext === state.wsize) {
+ state.wnext = 0;
+ }
+ if (state.whave < state.wsize) {
+ state.whave += dist;
+ }
+ }
+ }
+ return 0;
+ }
+ function inflate(strm, flush) {
+ var state;
+ var input, output;
+ var next;
+ var put;
+ var have, left;
+ var hold;
+ var bits;
+ var _in, _out;
+ var copy;
+ var from;
+ var from_source;
+ var here = 0;
+ var here_bits, here_op, here_val;
+ var last_bits, last_op, last_val;
+ var len;
+ var ret;
+ var hbuf = new utils.Buf8(4);
+ var opts;
+ var n;
+ var order = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];
+ if (!strm || !strm.state || !strm.output || !strm.input && strm.avail_in !== 0) {
+ return Z_STREAM_ERROR;
+ }
+ state = strm.state;
+ if (state.mode === TYPE) {
+ state.mode = TYPEDO;
+ }
+ put = strm.next_out;
+ output = strm.output;
+ left = strm.avail_out;
+ next = strm.next_in;
+ input = strm.input;
+ have = strm.avail_in;
+ hold = state.hold;
+ bits = state.bits;
+ _in = have;
+ _out = left;
+ ret = Z_OK;
+ inf_leave: for (;;) {
+ switch(state.mode) {
+ case HEAD:
+ if (state.wrap === 0) {
+ state.mode = TYPEDO;
+ break;
+ }
+ while (bits < 16) {
+ if (have === 0) {
+ break inf_leave;
+ }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ if (state.wrap & 2 && hold === 35615) {
+ state.check = 0;
+ hbuf[0] = hold & 255;
+ hbuf[1] = hold >>> 8 & 255;
+ state.check = crc32(state.check, hbuf, 2, 0);
+ hold = 0;
+ bits = 0;
+ state.mode = FLAGS;
+ break;
+ }
+ state.flags = 0;
+ if (state.head) {
+ state.head.done = false;
+ }
+ if (!(state.wrap & 1) || (((hold & 255) << 8) + (hold >> 8)) % 31) {
+ strm.msg = "incorrect header check";
+ state.mode = BAD;
+ break;
+ }
+ if ((hold & 15) !== Z_DEFLATED) {
+ strm.msg = "unknown compression method";
+ state.mode = BAD;
+ break;
+ }
+ hold >>>= 4;
+ bits -= 4;
+ len = (hold & 15) + 8;
+ if (state.wbits === 0) {
+ state.wbits = len;
+ } else {
+ if (len > state.wbits) {
+ strm.msg = "invalid window size";
+ state.mode = BAD;
+ break;
+ }
+ }
+ state.dmax = 1 << len;
+ strm.adler = state.check = 1;
+ state.mode = hold & 512 ? DICTID : TYPE;
+ hold = 0;
+ bits = 0;
+ break;
+ case FLAGS:
+ while (bits < 16) {
+ if (have === 0) {
+ break inf_leave;
+ }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ state.flags = hold;
+ if ((state.flags & 255) !== Z_DEFLATED) {
+ strm.msg = "unknown compression method";
+ state.mode = BAD;
+ break;
+ }
+ if (state.flags & 57344) {
+ strm.msg = "unknown header flags set";
+ state.mode = BAD;
+ break;
+ }
+ if (state.head) {
+ state.head.text = hold >> 8 & 1;
+ }
+ if (state.flags & 512) {
+ hbuf[0] = hold & 255;
+ hbuf[1] = hold >>> 8 & 255;
+ state.check = crc32(state.check, hbuf, 2, 0);
+ }
+ hold = 0;
+ bits = 0;
+ state.mode = TIME;
+ case TIME:
+ while (bits < 32) {
+ if (have === 0) {
+ break inf_leave;
+ }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ if (state.head) {
+ state.head.time = hold;
+ }
+ if (state.flags & 512) {
+ hbuf[0] = hold & 255;
+ hbuf[1] = hold >>> 8 & 255;
+ hbuf[2] = hold >>> 16 & 255;
+ hbuf[3] = hold >>> 24 & 255;
+ state.check = crc32(state.check, hbuf, 4, 0);
+ }
+ hold = 0;
+ bits = 0;
+ state.mode = OS;
+ case OS:
+ while (bits < 16) {
+ if (have === 0) {
+ break inf_leave;
+ }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ if (state.head) {
+ state.head.xflags = hold & 255;
+ state.head.os = hold >> 8;
+ }
+ if (state.flags & 512) {
+ hbuf[0] = hold & 255;
+ hbuf[1] = hold >>> 8 & 255;
+ state.check = crc32(state.check, hbuf, 2, 0);
+ }
+ hold = 0;
+ bits = 0;
+ state.mode = EXLEN;
+ case EXLEN:
+ if (state.flags & 1024) {
+ while (bits < 16) {
+ if (have === 0) {
+ break inf_leave;
+ }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ state.length = hold;
+ if (state.head) {
+ state.head.extra_len = hold;
+ }
+ if (state.flags & 512) {
+ hbuf[0] = hold & 255;
+ hbuf[1] = hold >>> 8 & 255;
+ state.check = crc32(state.check, hbuf, 2, 0);
+ }
+ hold = 0;
+ bits = 0;
+ } else {
+ if (state.head) {
+ state.head.extra = null;
+ }
+ }
+ state.mode = EXTRA;
+ case EXTRA:
+ if (state.flags & 1024) {
+ copy = state.length;
+ if (copy > have) {
+ copy = have;
+ }
+ if (copy) {
+ if (state.head) {
+ len = state.head.extra_len - state.length;
+ if (!state.head.extra) {
+ state.head.extra = new Array(state.head.extra_len);
+ }
+ utils.arraySet(state.head.extra, input, next, copy, len);
+ }
+ if (state.flags & 512) {
+ state.check = crc32(state.check, input, copy, next);
+ }
+ have -= copy;
+ next += copy;
+ state.length -= copy;
+ }
+ if (state.length) {
+ break inf_leave;
+ }
+ }
+ state.length = 0;
+ state.mode = NAME;
+ case NAME:
+ if (state.flags & 2048) {
+ if (have === 0) {
+ break inf_leave;
+ }
+ copy = 0;
+ do {
+ len = input[next + copy++];
+ if (state.head && len && state.length < 65536) {
+ state.head.name += String.fromCharCode(len);
+ }
+ } while (len && copy < have);
+ if (state.flags & 512) {
+ state.check = crc32(state.check, input, copy, next);
+ }
+ have -= copy;
+ next += copy;
+ if (len) {
+ break inf_leave;
+ }
+ } else {
+ if (state.head) {
+ state.head.name = null;
+ }
+ }
+ state.length = 0;
+ state.mode = COMMENT;
+ case COMMENT:
+ if (state.flags & 4096) {
+ if (have === 0) {
+ break inf_leave;
+ }
+ copy = 0;
+ do {
+ len = input[next + copy++];
+ if (state.head && len && state.length < 65536) {
+ state.head.comment += String.fromCharCode(len);
+ }
+ } while (len && copy < have);
+ if (state.flags & 512) {
+ state.check = crc32(state.check, input, copy, next);
+ }
+ have -= copy;
+ next += copy;
+ if (len) {
+ break inf_leave;
+ }
+ } else {
+ if (state.head) {
+ state.head.comment = null;
+ }
+ }
+ state.mode = HCRC;
+ case HCRC:
+ if (state.flags & 512) {
+ while (bits < 16) {
+ if (have === 0) {
+ break inf_leave;
+ }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ if (hold !== (state.check & 65535)) {
+ strm.msg = "header crc mismatch";
+ state.mode = BAD;
+ break;
+ }
+ hold = 0;
+ bits = 0;
+ }
+ if (state.head) {
+ state.head.hcrc = state.flags >> 9 & 1;
+ state.head.done = true;
+ }
+ strm.adler = state.check = 0;
+ state.mode = TYPE;
+ break;
+ case DICTID:
+ while (bits < 32) {
+ if (have === 0) {
+ break inf_leave;
+ }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ strm.adler = state.check = ZSWAP32(hold);
+ hold = 0;
+ bits = 0;
+ state.mode = DICT;
+ case DICT:
+ if (state.havedict === 0) {
+ strm.next_out = put;
+ strm.avail_out = left;
+ strm.next_in = next;
+ strm.avail_in = have;
+ state.hold = hold;
+ state.bits = bits;
+ return Z_NEED_DICT;
+ }
+ strm.adler = state.check = 1;
+ state.mode = TYPE;
+ case TYPE:
+ if (flush === Z_BLOCK || flush === Z_TREES) {
+ break inf_leave;
+ }
+ ;
+ case TYPEDO:
+ if (state.last) {
+ hold >>>= bits & 7;
+ bits -= bits & 7;
+ state.mode = CHECK;
+ break;
+ }
+ while (bits < 3) {
+ if (have === 0) {
+ break inf_leave;
+ }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ state.last = hold & 1;
+ hold >>>= 1;
+ bits -= 1;
+ switch(hold & 3) {
+ case 0:
+ state.mode = STORED;
+ break;
+ case 1:
+ fixedtables(state);
+ state.mode = LEN_;
+ if (flush === Z_TREES) {
+ hold >>>= 2;
+ bits -= 2;
+ break inf_leave;
+ }
+ break;
+ case 2:
+ state.mode = TABLE;
+ break;
+ case 3:
+ strm.msg = "invalid block type";
+ state.mode = BAD;
+ }
+ hold >>>= 2;
+ bits -= 2;
+ break;
+ case STORED:
+ hold >>>= bits & 7;
+ bits -= bits & 7;
+ while (bits < 32) {
+ if (have === 0) {
+ break inf_leave;
+ }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ if ((hold & 65535) !== (hold >>> 16 ^ 65535)) {
+ strm.msg = "invalid stored block lengths";
+ state.mode = BAD;
+ break;
+ }
+ state.length = hold & 65535;
+ hold = 0;
+ bits = 0;
+ state.mode = COPY_;
+ if (flush === Z_TREES) {
+ break inf_leave;
+ }
+ ;
+ case COPY_:
+ state.mode = COPY;
+ case COPY:
+ copy = state.length;
+ if (copy) {
+ if (copy > have) {
+ copy = have;
+ }
+ if (copy > left) {
+ copy = left;
+ }
+ if (copy === 0) {
+ break inf_leave;
+ }
+ utils.arraySet(output, input, next, copy, put);
+ have -= copy;
+ next += copy;
+ left -= copy;
+ put += copy;
+ state.length -= copy;
+ break;
+ }
+ state.mode = TYPE;
+ break;
+ case TABLE:
+ while (bits < 14) {
+ if (have === 0) {
+ break inf_leave;
+ }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ state.nlen = (hold & 31) + 257;
+ hold >>>= 5;
+ bits -= 5;
+ state.ndist = (hold & 31) + 1;
+ hold >>>= 5;
+ bits -= 5;
+ state.ncode = (hold & 15) + 4;
+ hold >>>= 4;
+ bits -= 4;
+ if (state.nlen > 286 || state.ndist > 30) {
+ strm.msg = "too many length or distance symbols";
+ state.mode = BAD;
+ break;
+ }
+ state.have = 0;
+ state.mode = LENLENS;
+ case LENLENS:
+ while (state.have < state.ncode) {
+ while (bits < 3) {
+ if (have === 0) {
+ break inf_leave;
+ }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ state.lens[order[state.have++]] = hold & 7;
+ hold >>>= 3;
+ bits -= 3;
+ }
+ while (state.have < 19) {
+ state.lens[order[state.have++]] = 0;
+ }
+ state.lencode = state.lendyn;
+ state.lenbits = 7;
+ opts = {bits:state.lenbits};
+ ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);
+ state.lenbits = opts.bits;
+ if (ret) {
+ strm.msg = "invalid code lengths set";
+ state.mode = BAD;
+ break;
+ }
+ state.have = 0;
+ state.mode = CODELENS;
+ case CODELENS:
+ while (state.have < state.nlen + state.ndist) {
+ for (;;) {
+ here = state.lencode[hold & (1 << state.lenbits) - 1];
+ here_bits = here >>> 24;
+ here_op = here >>> 16 & 255;
+ here_val = here & 65535;
+ if (here_bits <= bits) {
+ break;
+ }
+ if (have === 0) {
+ break inf_leave;
+ }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ if (here_val < 16) {
+ hold >>>= here_bits;
+ bits -= here_bits;
+ state.lens[state.have++] = here_val;
+ } else {
+ if (here_val === 16) {
+ n = here_bits + 2;
+ while (bits < n) {
+ if (have === 0) {
+ break inf_leave;
+ }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ hold >>>= here_bits;
+ bits -= here_bits;
+ if (state.have === 0) {
+ strm.msg = "invalid bit length repeat";
+ state.mode = BAD;
+ break;
+ }
+ len = state.lens[state.have - 1];
+ copy = 3 + (hold & 3);
+ hold >>>= 2;
+ bits -= 2;
+ } else {
+ if (here_val === 17) {
+ n = here_bits + 3;
+ while (bits < n) {
+ if (have === 0) {
+ break inf_leave;
+ }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ hold >>>= here_bits;
+ bits -= here_bits;
+ len = 0;
+ copy = 3 + (hold & 7);
+ hold >>>= 3;
+ bits -= 3;
+ } else {
+ n = here_bits + 7;
+ while (bits < n) {
+ if (have === 0) {
+ break inf_leave;
+ }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ hold >>>= here_bits;
+ bits -= here_bits;
+ len = 0;
+ copy = 11 + (hold & 127);
+ hold >>>= 7;
+ bits -= 7;
+ }
+ }
+ if (state.have + copy > state.nlen + state.ndist) {
+ strm.msg = "invalid bit length repeat";
+ state.mode = BAD;
+ break;
+ }
+ while (copy--) {
+ state.lens[state.have++] = len;
+ }
+ }
+ }
+ if (state.mode === BAD) {
+ break;
+ }
+ if (state.lens[256] === 0) {
+ strm.msg = "invalid code -- missing end-of-block";
+ state.mode = BAD;
+ break;
+ }
+ state.lenbits = 9;
+ opts = {bits:state.lenbits};
+ ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);
+ state.lenbits = opts.bits;
+ if (ret) {
+ strm.msg = "invalid literal/lengths set";
+ state.mode = BAD;
+ break;
+ }
+ state.distbits = 6;
+ state.distcode = state.distdyn;
+ opts = {bits:state.distbits};
+ ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);
+ state.distbits = opts.bits;
+ if (ret) {
+ strm.msg = "invalid distances set";
+ state.mode = BAD;
+ break;
+ }
+ state.mode = LEN_;
+ if (flush === Z_TREES) {
+ break inf_leave;
+ }
+ ;
+ case LEN_:
+ state.mode = LEN;
+ case LEN:
+ if (have >= 6 && left >= 258) {
+ strm.next_out = put;
+ strm.avail_out = left;
+ strm.next_in = next;
+ strm.avail_in = have;
+ state.hold = hold;
+ state.bits = bits;
+ inflate_fast(strm, _out);
+ put = strm.next_out;
+ output = strm.output;
+ left = strm.avail_out;
+ next = strm.next_in;
+ input = strm.input;
+ have = strm.avail_in;
+ hold = state.hold;
+ bits = state.bits;
+ if (state.mode === TYPE) {
+ state.back = -1;
+ }
+ break;
+ }
+ state.back = 0;
+ for (;;) {
+ here = state.lencode[hold & (1 << state.lenbits) - 1];
+ here_bits = here >>> 24;
+ here_op = here >>> 16 & 255;
+ here_val = here & 65535;
+ if (here_bits <= bits) {
+ break;
+ }
+ if (have === 0) {
+ break inf_leave;
+ }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ if (here_op && (here_op & 240) === 0) {
+ last_bits = here_bits;
+ last_op = here_op;
+ last_val = here_val;
+ for (;;) {
+ here = state.lencode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)];
+ here_bits = here >>> 24;
+ here_op = here >>> 16 & 255;
+ here_val = here & 65535;
+ if (last_bits + here_bits <= bits) {
+ break;
+ }
+ if (have === 0) {
+ break inf_leave;
+ }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ hold >>>= last_bits;
+ bits -= last_bits;
+ state.back += last_bits;
+ }
+ hold >>>= here_bits;
+ bits -= here_bits;
+ state.back += here_bits;
+ state.length = here_val;
+ if (here_op === 0) {
+ state.mode = LIT;
+ break;
+ }
+ if (here_op & 32) {
+ state.back = -1;
+ state.mode = TYPE;
+ break;
+ }
+ if (here_op & 64) {
+ strm.msg = "invalid literal/length code";
+ state.mode = BAD;
+ break;
+ }
+ state.extra = here_op & 15;
+ state.mode = LENEXT;
+ case LENEXT:
+ if (state.extra) {
+ n = state.extra;
+ while (bits < n) {
+ if (have === 0) {
+ break inf_leave;
+ }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ state.length += hold & (1 << state.extra) - 1;
+ hold >>>= state.extra;
+ bits -= state.extra;
+ state.back += state.extra;
+ }
+ state.was = state.length;
+ state.mode = DIST;
+ case DIST:
+ for (;;) {
+ here = state.distcode[hold & (1 << state.distbits) - 1];
+ here_bits = here >>> 24;
+ here_op = here >>> 16 & 255;
+ here_val = here & 65535;
+ if (here_bits <= bits) {
+ break;
+ }
+ if (have === 0) {
+ break inf_leave;
+ }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ if ((here_op & 240) === 0) {
+ last_bits = here_bits;
+ last_op = here_op;
+ last_val = here_val;
+ for (;;) {
+ here = state.distcode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)];
+ here_bits = here >>> 24;
+ here_op = here >>> 16 & 255;
+ here_val = here & 65535;
+ if (last_bits + here_bits <= bits) {
+ break;
+ }
+ if (have === 0) {
+ break inf_leave;
+ }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ hold >>>= last_bits;
+ bits -= last_bits;
+ state.back += last_bits;
+ }
+ hold >>>= here_bits;
+ bits -= here_bits;
+ state.back += here_bits;
+ if (here_op & 64) {
+ strm.msg = "invalid distance code";
+ state.mode = BAD;
+ break;
+ }
+ state.offset = here_val;
+ state.extra = here_op & 15;
+ state.mode = DISTEXT;
+ case DISTEXT:
+ if (state.extra) {
+ n = state.extra;
+ while (bits < n) {
+ if (have === 0) {
+ break inf_leave;
+ }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ state.offset += hold & (1 << state.extra) - 1;
+ hold >>>= state.extra;
+ bits -= state.extra;
+ state.back += state.extra;
+ }
+ if (state.offset > state.dmax) {
+ strm.msg = "invalid distance too far back";
+ state.mode = BAD;
+ break;
+ }
+ state.mode = MATCH;
+ case MATCH:
+ if (left === 0) {
+ break inf_leave;
+ }
+ copy = _out - left;
+ if (state.offset > copy) {
+ copy = state.offset - copy;
+ if (copy > state.whave) {
+ if (state.sane) {
+ strm.msg = "invalid distance too far back";
+ state.mode = BAD;
+ break;
+ }
+ }
+ if (copy > state.wnext) {
+ copy -= state.wnext;
+ from = state.wsize - copy;
+ } else {
+ from = state.wnext - copy;
+ }
+ if (copy > state.length) {
+ copy = state.length;
+ }
+ from_source = state.window;
+ } else {
+ from_source = output;
+ from = put - state.offset;
+ copy = state.length;
+ }
+ if (copy > left) {
+ copy = left;
+ }
+ left -= copy;
+ state.length -= copy;
+ do {
+ output[put++] = from_source[from++];
+ } while (--copy);
+ if (state.length === 0) {
+ state.mode = LEN;
+ }
+ break;
+ case LIT:
+ if (left === 0) {
+ break inf_leave;
+ }
+ output[put++] = state.length;
+ left--;
+ state.mode = LEN;
+ break;
+ case CHECK:
+ if (state.wrap) {
+ while (bits < 32) {
+ if (have === 0) {
+ break inf_leave;
+ }
+ have--;
+ hold |= input[next++] << bits;
+ bits += 8;
+ }
+ _out -= left;
+ strm.total_out += _out;
+ state.total += _out;
+ if (_out) {
+ strm.adler = state.check = state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out);
+ }
+ _out = left;
+ if ((state.flags ? hold : ZSWAP32(hold)) !== state.check) {
+ strm.msg = "incorrect data check";
+ state.mode = BAD;
+ break;
+ }
+ hold = 0;
+ bits = 0;
+ }
+ state.mode = LENGTH;
+ case LENGTH:
+ if (state.wrap && state.flags) {
+ while (bits < 32) {
+ if (have === 0) {
+ break inf_leave;
+ }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ if (hold !== (state.total & 4294967295)) {
+ strm.msg = "incorrect length check";
+ state.mode = BAD;
+ break;
+ }
+ hold = 0;
+ bits = 0;
+ }
+ state.mode = DONE;
+ case DONE:
+ ret = Z_STREAM_END;
+ break inf_leave;
+ case BAD:
+ ret = Z_DATA_ERROR;
+ break inf_leave;
+ case MEM:
+ return Z_MEM_ERROR;
+ case SYNC:
+ ;
+ default:
+ return Z_STREAM_ERROR;
+ }
+ }
+ strm.next_out = put;
+ strm.avail_out = left;
+ strm.next_in = next;
+ strm.avail_in = have;
+ state.hold = hold;
+ state.bits = bits;
+ if (state.wsize || _out !== strm.avail_out && state.mode < BAD && (state.mode < CHECK || flush !== Z_FINISH)) {
+ if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {
+ state.mode = MEM;
+ return Z_MEM_ERROR;
+ }
+ }
+ _in -= strm.avail_in;
+ _out -= strm.avail_out;
+ strm.total_in += _in;
+ strm.total_out += _out;
+ state.total += _out;
+ if (state.wrap && _out) {
+ strm.adler = state.check = state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out);
+ }
+ strm.data_type = state.bits + (state.last ? 64 : 0) + (state.mode === TYPE ? 128 : 0) + (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);
+ if ((_in === 0 && _out === 0 || flush === Z_FINISH) && ret === Z_OK) {
+ ret = Z_BUF_ERROR;
+ }
+ return ret;
}
- if(n === size) {
- return n
- }
- }
- if(zip_method === -1) {
- if(zip_eof) {
- break
- }
- zip_NEEDBITS(1);
- if(zip_GETBITS(1) !== 0) {
- zip_eof = true
- }
- zip_DUMPBITS(1);
- zip_NEEDBITS(2);
- zip_method = zip_GETBITS(2);
- zip_DUMPBITS(2);
- zip_tl = null;
- zip_copy_leng = 0
- }
- switch(zip_method) {
- case 0:
- i = zip_inflate_stored(buff, off + n, size - n);
- break;
- case 1:
- if(zip_tl !== null) {
- i = zip_inflate_codes(buff, off + n, size - n)
- }else {
- i = zip_inflate_fixed(buff, off + n, size - n)
+ function inflateEnd(strm) {
+ if (!strm || !strm.state) {
+ return Z_STREAM_ERROR;
}
- break;
- case 2:
- if(zip_tl !== null) {
- i = zip_inflate_codes(buff, off + n, size - n)
- }else {
- i = zip_inflate_dynamic(buff, off + n, size - n)
+ var state = strm.state;
+ if (state.window) {
+ state.window = null;
}
- break;
- default:
- i = -1;
- break
- }
- if(i === -1) {
- if(zip_eof) {
- return 0
+ strm.state = null;
+ return Z_OK;
}
- return-1
- }
- n += i
- }
- return n
- }
- function zip_inflate(data, size) {
- zip_inflate_start();
- zip_inflate_data = data;
- zip_inflate_pos = 0;
- var buff = new Uint8Array(new ArrayBuffer(size));
- zip_inflate_internal(buff, 0, size);
- zip_inflate_data = new Uint8Array(new ArrayBuffer(0));
- return buff
- }
- this.inflate = zip_inflate
-};
-core.ScheduledTask = function ScheduledTask(fn, delay) {
- var timeoutId, scheduled = false, args = [];
- function cancel() {
- if(scheduled) {
- runtime.clearTimeout(timeoutId);
- scheduled = false
- }
- }
- function execute() {
- cancel();
- fn.apply(undefined, args);
- args = null
- }
- this.trigger = function() {
- args = Array.prototype.slice.call(arguments);
- if(!scheduled) {
- scheduled = true;
- timeoutId = runtime.setTimeout(execute, delay)
- }
- };
- this.triggerImmediate = function() {
- args = Array.prototype.slice.call(arguments);
- execute()
- };
- this.processRequests = function() {
- if(scheduled) {
- execute()
+ function inflateGetHeader(strm, head) {
+ var state;
+ if (!strm || !strm.state) {
+ return Z_STREAM_ERROR;
+ }
+ state = strm.state;
+ if ((state.wrap & 2) === 0) {
+ return Z_STREAM_ERROR;
+ }
+ state.head = head;
+ head.done = false;
+ return Z_OK;
+ }
+ exports.inflateReset = inflateReset;
+ exports.inflateReset2 = inflateReset2;
+ exports.inflateResetKeep = inflateResetKeep;
+ exports.inflateInit = inflateInit;
+ exports.inflateInit2 = inflateInit2;
+ exports.inflate = inflate;
+ exports.inflateEnd = inflateEnd;
+ exports.inflateGetHeader = inflateGetHeader;
+ exports.inflateInfo = "pako inflate (from Nodeca project)";
+ }, {"../utils/common":2, "./adler32":4, "./crc32":6, "./inffast":8, "./inftrees":10}], 10:[function(_dereq_, module, exports) {
+ var utils = _dereq_("../utils/common");
+ var MAXBITS = 15;
+ var ENOUGH_LENS = 852;
+ var ENOUGH_DISTS = 592;
+ var CODES = 0;
+ var LENS = 1;
+ var DISTS = 2;
+ var lbase = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0];
+ var lext = [16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78];
+ var dbase = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0];
+ var dext = [16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64];
+ module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) {
+ var bits = opts.bits;
+ var len = 0;
+ var sym = 0;
+ var min = 0, max = 0;
+ var root = 0;
+ var curr = 0;
+ var drop = 0;
+ var left = 0;
+ var used = 0;
+ var huff = 0;
+ var incr;
+ var fill;
+ var low;
+ var mask;
+ var next;
+ var base = null;
+ var base_index = 0;
+ var end;
+ var count = new utils.Buf16(MAXBITS + 1);
+ var offs = new utils.Buf16(MAXBITS + 1);
+ var extra = null;
+ var extra_index = 0;
+ var here_bits, here_op, here_val;
+ for (len = 0;len <= MAXBITS;len++) {
+ count[len] = 0;
+ }
+ for (sym = 0;sym < codes;sym++) {
+ count[lens[lens_index + sym]]++;
+ }
+ root = bits;
+ for (max = MAXBITS;max >= 1;max--) {
+ if (count[max] !== 0) {
+ break;
+ }
+ }
+ if (root > max) {
+ root = max;
+ }
+ if (max === 0) {
+ table[table_index++] = 1 << 24 | 64 << 16 | 0;
+ table[table_index++] = 1 << 24 | 64 << 16 | 0;
+ opts.bits = 1;
+ return 0;
+ }
+ for (min = 1;min < max;min++) {
+ if (count[min] !== 0) {
+ break;
+ }
+ }
+ if (root < min) {
+ root = min;
+ }
+ left = 1;
+ for (len = 1;len <= MAXBITS;len++) {
+ left <<= 1;
+ left -= count[len];
+ if (left < 0) {
+ return -1;
+ }
+ }
+ if (left > 0 && (type === CODES || max !== 1)) {
+ return -1;
+ }
+ offs[1] = 0;
+ for (len = 1;len < MAXBITS;len++) {
+ offs[len + 1] = offs[len] + count[len];
+ }
+ for (sym = 0;sym < codes;sym++) {
+ if (lens[lens_index + sym] !== 0) {
+ work[offs[lens[lens_index + sym]]++] = sym;
+ }
+ }
+ switch(type) {
+ case CODES:
+ base = extra = work;
+ end = 19;
+ break;
+ case LENS:
+ base = lbase;
+ base_index -= 257;
+ extra = lext;
+ extra_index -= 257;
+ end = 256;
+ break;
+ default:
+ base = dbase;
+ extra = dext;
+ end = -1;
+ }
+ huff = 0;
+ sym = 0;
+ len = min;
+ next = table_index;
+ curr = root;
+ drop = 0;
+ low = -1;
+ used = 1 << root;
+ mask = used - 1;
+ if (type === LENS && used > ENOUGH_LENS || type === DISTS && used > ENOUGH_DISTS) {
+ return 1;
+ }
+ var i = 0;
+ for (;;) {
+ i++;
+ here_bits = len - drop;
+ if (work[sym] < end) {
+ here_op = 0;
+ here_val = work[sym];
+ } else {
+ if (work[sym] > end) {
+ here_op = extra[extra_index + work[sym]];
+ here_val = base[base_index + work[sym]];
+ } else {
+ here_op = 32 + 64;
+ here_val = 0;
+ }
+ }
+ incr = 1 << len - drop;
+ fill = 1 << curr;
+ min = fill;
+ do {
+ fill -= incr;
+ table[next + (huff >> drop) + fill] = here_bits << 24 | here_op << 16 | here_val | 0;
+ } while (fill !== 0);
+ incr = 1 << len - 1;
+ while (huff & incr) {
+ incr >>= 1;
+ }
+ if (incr !== 0) {
+ huff &= incr - 1;
+ huff += incr;
+ } else {
+ huff = 0;
+ }
+ sym++;
+ if (--count[len] === 0) {
+ if (len === max) {
+ break;
+ }
+ len = lens[lens_index + work[sym]];
+ }
+ if (len > root && (huff & mask) !== low) {
+ if (drop === 0) {
+ drop = root;
+ }
+ next += min;
+ curr = len - drop;
+ left = 1 << curr;
+ while (curr + drop < max) {
+ left -= count[curr + drop];
+ if (left <= 0) {
+ break;
+ }
+ curr++;
+ left <<= 1;
+ }
+ used += 1 << curr;
+ if (type === LENS && used > ENOUGH_LENS || type === DISTS && used > ENOUGH_DISTS) {
+ return 1;
+ }
+ low = huff & mask;
+ table[low] = root << 24 | curr << 16 | next - table_index | 0;
+ }
+ }
+ if (huff !== 0) {
+ table[next + huff] = len - drop << 24 | 64 << 16 | 0;
+ }
+ opts.bits = root;
+ return 0;
+ };
+ }, {"../utils/common":2}], 11:[function(_dereq_, module, exports) {
+ module.exports = {2:"need dictionary", 1:"stream end", 0:"", "-1":"file error", "-2":"stream error", "-3":"data error", "-4":"insufficient memory", "-5":"buffer error", "-6":"incompatible version"};
+ }, {}], 12:[function(_dereq_, module, exports) {
+ function ZStream() {
+ this.input = null;
+ this.next_in = 0;
+ this.avail_in = 0;
+ this.total_in = 0;
+ this.output = null;
+ this.next_out = 0;
+ this.avail_out = 0;
+ this.total_out = 0;
+ this.msg = "";
+ this.state = null;
+ this.data_type = 2;
+ this.adler = 0;
+ }
+ module.exports = ZStream;
+ }, {}]}, {}, [1])(1);
+ });
+ function zip_inflate(data, size) {
+ return pako.inflateRaw(data);
}
- };
- this.cancel = cancel;
- this.destroy = function(callback) {
- cancel();
- callback()
+ return {inflate:zip_inflate};
}
-};
-/*
-
- Copyright (C) 2014 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
+ core.RawInflate = createRawInflateSingleton();
+})();
+core.StepDirection = {PREVIOUS:1, NEXT:2};
core.StepIterator = function StepIterator(filter, iterator) {
- var FILTER_ACCEPT = core.PositionFilter.FilterResult.FILTER_ACCEPT, cachedContainer, cachedOffset, cachedFilterResult;
+ var FILTER_ACCEPT = core.PositionFilter.FilterResult.FILTER_ACCEPT, NEXT = core.StepDirection.NEXT, cachedContainer, cachedOffset, cachedFilterResult;
function resetCache() {
cachedContainer = null;
cachedOffset = undefined;
- cachedFilterResult = undefined
+ cachedFilterResult = undefined;
}
function isStep() {
- if(cachedFilterResult === undefined) {
- cachedFilterResult = filter.acceptPosition(iterator) === FILTER_ACCEPT
+ if (cachedFilterResult === undefined) {
+ cachedFilterResult = filter.acceptPosition(iterator) === FILTER_ACCEPT;
}
- return(cachedFilterResult)
+ return (cachedFilterResult);
}
this.isStep = isStep;
function setPosition(newContainer, newOffset) {
resetCache();
- return iterator.setUnfilteredPosition(newContainer, newOffset)
+ return iterator.setUnfilteredPosition(newContainer, newOffset);
}
this.setPosition = setPosition;
function container() {
- if(!cachedContainer) {
- cachedContainer = iterator.container()
+ if (!cachedContainer) {
+ cachedContainer = iterator.container();
}
- return cachedContainer
+ return cachedContainer;
}
this.container = container;
function offset() {
- if(cachedOffset === undefined) {
- cachedOffset = iterator.unfilteredDomOffset()
+ if (cachedOffset === undefined) {
+ cachedOffset = iterator.unfilteredDomOffset();
}
- return(cachedOffset)
+ return (cachedOffset);
}
this.offset = offset;
function nextStep() {
resetCache();
- while(iterator.nextPosition()) {
+ while (iterator.nextPosition()) {
resetCache();
- if(isStep()) {
- return true
+ if (isStep()) {
+ return true;
}
}
- return false
+ return false;
}
this.nextStep = nextStep;
function previousStep() {
resetCache();
- while(iterator.previousPosition()) {
+ while (iterator.previousPosition()) {
resetCache();
- if(isStep()) {
- return true
+ if (isStep()) {
+ return true;
}
}
- return false
+ return false;
}
this.previousStep = previousStep;
+ this.advanceStep = function(direction) {
+ return direction === NEXT ? nextStep() : previousStep();
+ };
this.roundToClosestStep = function() {
- var currentContainer = container(), currentOffset = offset(), isAtStep = isStep();
- if(!isAtStep) {
+ var currentContainer, currentOffset, isAtStep = isStep();
+ if (!isAtStep) {
+ currentContainer = container();
+ currentOffset = offset();
isAtStep = previousStep();
- if(!isAtStep) {
+ if (!isAtStep) {
setPosition(currentContainer, currentOffset);
- isAtStep = nextStep()
+ isAtStep = nextStep();
}
}
- return isAtStep
+ return isAtStep;
};
this.roundToPreviousStep = function() {
var isAtStep = isStep();
- if(!isAtStep) {
- isAtStep = previousStep()
+ if (!isAtStep) {
+ isAtStep = previousStep();
}
- return isAtStep
+ return isAtStep;
};
this.roundToNextStep = function() {
var isAtStep = isStep();
- if(!isAtStep) {
- isAtStep = nextStep()
+ if (!isAtStep) {
+ isAtStep = nextStep();
}
- return isAtStep
- }
-};
-core.TestData;
-core.AsyncTestData;
-core.UnitTest = function UnitTest() {
-};
-core.UnitTest.prototype.setUp = function() {
-};
-core.UnitTest.prototype.tearDown = function() {
-};
-core.UnitTest.prototype.description = function() {
-};
-core.UnitTest.prototype.tests = function() {
-};
-core.UnitTest.prototype.asyncTests = function() {
-};
-core.UnitTest.provideTestAreaDiv = function() {
- var maindoc = runtime.getWindow().document, testarea = maindoc.getElementById("testarea");
- runtime.assert(!testarea, 'Unclean test environment, found a div with id "testarea".');
- testarea = maindoc.createElement("div");
- testarea.setAttribute("id", "testarea");
- maindoc.body.appendChild(testarea);
- return(testarea)
-};
-core.UnitTest.cleanupTestAreaDiv = function() {
- var maindoc = runtime.getWindow().document, testarea = maindoc.getElementById("testarea");
- runtime.assert(!!testarea && testarea.parentNode === maindoc.body, 'Test environment broken, found no div with id "testarea" below body.');
- maindoc.body.removeChild(testarea)
-};
-core.UnitTest.createOdtDocument = function(xml, namespaceMap) {
- var xmlDoc = "<?xml version='1.0' encoding='UTF-8'?>";
- xmlDoc += "<office:document";
- Object.keys(namespaceMap).forEach(function(key) {
- xmlDoc += " xmlns:" + key + '="' + namespaceMap[key] + '"'
- });
- xmlDoc += ">";
- xmlDoc += xml;
- xmlDoc += "</office:document>";
- return runtime.parseXML(xmlDoc)
-};
-core.UnitTestLogger = function UnitTestLogger() {
- var messages = [], errors = 0, start = 0, suite = "", test = "";
- this.startTest = function(suiteName, testName) {
- messages = [];
- errors = 0;
- suite = suiteName;
- test = testName;
- start = (new Date).getTime()
- };
- this.endTest = function() {
- var end = (new Date).getTime();
- return{description:test, suite:[suite, test], success:errors === 0, log:messages, time:end - start}
- };
- this.debug = function(msg) {
- messages.push({category:"debug", message:msg})
- };
- this.fail = function(msg) {
- errors += 1;
- messages.push({category:"fail", message:msg})
+ return isAtStep;
};
- this.pass = function(msg) {
- messages.push({category:"pass", message:msg})
- }
-};
-core.UnitTestRunner = function UnitTestRunner(resourcePrefix, logger) {
- var failedTests = 0, failedTestsOnBeginExpectFail, areObjectsEqual, expectFail = false;
- this.resourcePrefix = function() {
- return resourcePrefix
+ this.leftNode = function() {
+ return iterator.leftNode();
};
- this.beginExpectFail = function() {
- failedTestsOnBeginExpectFail = failedTests;
- expectFail = true
+ this.snapshot = function() {
+ return new core.StepIterator.StepSnapshot(container(), offset());
};
- this.endExpectFail = function() {
- var hasNoFailedTests = failedTestsOnBeginExpectFail === failedTests;
- expectFail = false;
- failedTests = failedTestsOnBeginExpectFail;
- if(hasNoFailedTests) {
- failedTests += 1;
- logger.fail("Expected at least one failed test, but none registered.")
- }
+ this.restore = function(snapshot) {
+ setPosition(snapshot.container, snapshot.offset);
};
- function debug(msg) {
- logger.debug(msg)
- }
- function testFailed(msg) {
- failedTests += 1;
- if(!expectFail) {
- logger.fail(msg)
- }else {
- logger.debug(msg)
- }
- }
- function testPassed(msg) {
- logger.pass(msg)
- }
- function areArraysEqual(a, b) {
- var i;
- try {
- if(a.length !== b.length) {
- testFailed("array of length " + a.length + " should be " + b.length + " long");
- return false
- }
- for(i = 0;i < a.length;i += 1) {
- if(a[i] !== b[i]) {
- testFailed(a[i] + " should be " + b[i] + " at array index " + i);
- return false
- }
- }
- }catch(ex) {
- return false
- }
- return true
- }
- function areAttributesEqual(a, b, skipReverseCheck) {
- var aatts = a.attributes, n = aatts.length, i, att, v;
- for(i = 0;i < n;i += 1) {
- att = (aatts.item(i));
- if(att.prefix !== "xmlns" && att.namespaceURI !== "urn:webodf:names:steps") {
- v = b.getAttributeNS(att.namespaceURI, att.localName);
- if(!b.hasAttributeNS(att.namespaceURI, att.localName)) {
- testFailed("Attribute " + att.localName + " with value " + att.value + " was not present");
- return false
- }
- if(v !== att.value) {
- testFailed("Attribute " + att.localName + " was " + v + " should be " + att.value);
- return false
- }
- }
- }
- return skipReverseCheck ? true : areAttributesEqual(b, a, true)
- }
- function areNodesEqual(a, b) {
- var an, bn, atype = a.nodeType, btype = b.nodeType;
- if(atype !== btype) {
- testFailed("Nodetype '" + atype + "' should be '" + btype + "'");
- return false
- }
- if(atype === Node.TEXT_NODE) {
- if((a).data === (b).data) {
- return true
- }
- testFailed("Textnode data '" + (a).data + "' should be '" + (b).data + "'");
- return false
- }
- runtime.assert(atype === Node.ELEMENT_NODE, "Only textnodes and elements supported.");
- if(a.namespaceURI !== b.namespaceURI) {
- testFailed("namespace '" + a.namespaceURI + "' should be '" + b.namespaceURI + "'");
- return false
- }
- if(a.localName !== b.localName) {
- testFailed("localName '" + a.localName + "' should be '" + b.localName + "'");
- return false
- }
- if(!areAttributesEqual((a), (b), false)) {
- return false
- }
- an = a.firstChild;
- bn = b.firstChild;
- while(an) {
- if(!bn) {
- testFailed("Nodetype '" + an.nodeType + "' is unexpected here.");
- return false
- }
- if(!areNodesEqual(an, bn)) {
- return false
- }
- an = an.nextSibling;
- bn = bn.nextSibling
- }
- if(bn) {
- testFailed("Nodetype '" + bn.nodeType + "' is missing here.");
- return false
- }
- return true
- }
- function isResultCorrect(actual, expected) {
- if(expected === 0) {
- return actual === expected && 1 / actual === 1 / expected
- }
- if(actual === expected) {
- return true
- }
- if(actual === null || expected === null) {
- return false
- }
- if(typeof expected === "number" && isNaN(expected)) {
- return typeof actual === "number" && isNaN(actual)
- }
- if(Object.prototype.toString.call(expected) === Object.prototype.toString.call([])) {
- return areArraysEqual((actual), (expected))
- }
- if(typeof expected === "object" && typeof actual === "object") {
- if((expected).constructor === Element || (expected).constructor === Node) {
- return areNodesEqual((actual), (expected))
- }
- return areObjectsEqual((actual), (expected))
- }
- return false
- }
- function stringify(v) {
- if(v === 0 && 1 / v < 0) {
- return"-0"
- }
- return String(v)
- }
- function shouldBe(t, a, b) {
- if(typeof a !== "string" || typeof b !== "string") {
- debug("WARN: shouldBe() expects string arguments")
- }
- var exception, av, bv;
- try {
- av = eval(a)
- }catch(e) {
- exception = e
- }
- bv = eval(b);
- if(exception) {
- testFailed(a + " should be " + bv + ". Threw exception " + exception)
- }else {
- if(isResultCorrect(av, bv)) {
- testPassed(a + " is " + b)
- }else {
- if(String(typeof av) === String(typeof bv)) {
- testFailed(a + " should be " + bv + ". Was " + stringify(av) + ".")
- }else {
- testFailed(a + " should be " + bv + " (of type " + typeof bv + "). Was " + av + " (of type " + typeof av + ").")
- }
- }
- }
- }
- function shouldBeNonNull(t, a) {
- var exception, av;
- try {
- av = eval(a)
- }catch(e) {
- exception = e
- }
- if(exception) {
- testFailed(a + " should be non-null. Threw exception " + exception)
- }else {
- if(av !== null) {
- testPassed(a + " is non-null.")
- }else {
- testFailed(a + " should be non-null. Was " + av)
- }
- }
- }
- function shouldBeNull(t, a) {
- shouldBe(t, a, "null")
- }
- areObjectsEqual = function(a, b) {
- var akeys = Object.keys(a), bkeys = Object.keys(b);
- akeys.sort();
- bkeys.sort();
- return areArraysEqual(akeys, bkeys) && Object.keys(a).every(function(key) {
- var aval = a[key], bval = b[key];
- if(!isResultCorrect(aval, bval)) {
- testFailed(aval + " should be " + bval + " for key " + key);
- return false
- }
- return true
- })
- };
- this.areNodesEqual = areNodesEqual;
- this.shouldBeNull = shouldBeNull;
- this.shouldBeNonNull = shouldBeNonNull;
- this.shouldBe = shouldBe;
- this.testFailed = testFailed;
- this.countFailedTests = function() {
- return failedTests
- };
- this.name = function(functions) {
- var i, fname, nf = [], l = functions.length;
- nf.length = l;
- for(i = 0;i < l;i += 1) {
- fname = Runtime.getFunctionName(functions[i]) || "";
- if(fname === "") {
- throw"Found a function without a name.";
- }
- nf[i] = {f:functions[i], name:fname}
- }
- return nf
- }
};
-core.UnitTester = function UnitTester() {
- var self = this, failedTests = 0, logger = new core.UnitTestLogger, results = {}, inBrowser = runtime.type() === "BrowserRuntime";
- this.resourcePrefix = "";
- function link(text, code) {
- return"<span style='color:blue;cursor:pointer' onclick='" + code + "'>" + text + "</span>"
- }
- this.reporter = function(r) {
- var i, m;
- if(inBrowser) {
- runtime.log("<span>Running " + link(r.description, 'runTest("' + r.suite[0] + '","' + r.description + '")') + "</span>")
- }else {
- runtime.log("Running " + r.description)
- }
- if(!r.success) {
- for(i = 0;i < r.log.length;i += 1) {
- m = r.log[i];
- runtime.log(m.category, m.message)
- }
- }
- };
- function report(r) {
- if(self.reporter) {
- self.reporter(r)
- }
- }
- this.runTests = function(TestClass, callback, testNames) {
- var testName = Runtime.getFunctionName(TestClass) || "", tname, runner = new core.UnitTestRunner(self.resourcePrefix, logger), test = new TestClass(runner), testResults = {}, i, t, tests, texpectFail, lastFailCount;
- if(results.hasOwnProperty(testName)) {
- runtime.log("Test " + testName + " has already run.");
- return
- }
- if(inBrowser) {
- runtime.log("<span>Running " + link(testName, 'runSuite("' + testName + '");') + ": " + test.description() + "</span>")
- }else {
- runtime.log("Running " + testName + ": " + test.description)
- }
- tests = test.tests();
- for(i = 0;i < tests.length;i += 1) {
- t = tests[i].f;
- tname = tests[i].name;
- texpectFail = tests[i].expectFail === true;
- if(testNames.length && testNames.indexOf(tname) === -1) {
- continue
- }
- lastFailCount = runner.countFailedTests();
- test.setUp();
- logger.startTest(testName, tname);
- if(texpectFail) {
- runner.beginExpectFail()
- }
- try {
- t()
- }catch(e) {
- runner.testFailed("Unexpected exception encountered: " + e.toString() + "\n" + e.stack)
- }
- if(texpectFail) {
- runner.endExpectFail()
- }
- report(logger.endTest());
- test.tearDown();
- testResults[tname] = lastFailCount === runner.countFailedTests()
- }
- function runAsyncTests(todo) {
- if(todo.length === 0) {
- results[testName] = testResults;
- failedTests += runner.countFailedTests();
- callback();
- return
- }
- t = todo[0].f;
- var fname = todo[0].name, expectFail = todo[0].expectFail === true;
- lastFailCount = runner.countFailedTests();
- if(testNames.length && testNames.indexOf(fname) === -1) {
- runAsyncTests(todo.slice(1))
- }else {
- test.setUp();
- logger.startTest(testName, fname);
- if(expectFail) {
- runner.beginExpectFail()
- }
- t(function() {
- if(expectFail) {
- runner.endExpectFail()
- }
- report(logger.endTest());
- test.tearDown();
- testResults[fname] = lastFailCount === runner.countFailedTests();
- runAsyncTests(todo.slice(1))
- })
- }
- }
- runAsyncTests(test.asyncTests())
- };
- this.countFailedTests = function() {
- return failedTests
- };
- this.results = function() {
- return results
- }
+core.StepIterator.StepSnapshot = function(container, offset) {
+ this.container = container;
+ this.offset = offset;
};
core.Utils = function Utils() {
function hashString(value) {
var hash = 0, i, l;
- for(i = 0, l = value.length;i < l;i += 1) {
+ for (i = 0, l = value.length;i < l;i += 1) {
hash = (hash << 5) - hash + value.charCodeAt(i);
- hash |= 0
+ hash |= 0;
}
- return hash
+ return hash;
}
this.hashString = hashString;
var mergeObjects;
function mergeItems(destination, source) {
- if(source && Array.isArray(source)) {
+ if (source && Array.isArray(source)) {
destination = destination || [];
- if(!Array.isArray(destination)) {
- throw"Destination is not an array.";
+ if (!Array.isArray(destination)) {
+ throw "Destination is not an array.";
}
destination = (destination).concat((source).map(function(obj) {
- return mergeItems(null, obj)
- }))
- }else {
- if(source && typeof source === "object") {
+ return mergeItems(null, obj);
+ }));
+ } else {
+ if (source && typeof source === "object") {
destination = destination || {};
- if(typeof destination !== "object") {
- throw"Destination is not an object.";
+ if (typeof destination !== "object") {
+ throw "Destination is not an object.";
}
Object.keys((source)).forEach(function(p) {
- destination[p] = mergeItems(destination[p], source[p])
- })
- }else {
- destination = source
+ destination[p] = mergeItems(destination[p], source[p]);
+ });
+ } else {
+ destination = source;
}
}
- return destination
+ return destination;
}
mergeObjects = function(destination, source) {
Object.keys(source).forEach(function(p) {
- destination[p] = mergeItems(destination[p], source[p])
+ destination[p] = mergeItems(destination[p], source[p]);
});
- return destination
+ return destination;
};
- this.mergeObjects = mergeObjects
+ this.mergeObjects = mergeObjects;
};
-/*
-
- WebODF
- Copyright (c) 2010 Jos van den Oever
- Licensed under the ... License:
-
- Project home: http://www.webodf.org/
-*/
core.Zip = function Zip(url, entriesReadCallback) {
- var entries, filesize, nEntries, inflate = (new core.RawInflate).inflate, zip = this, base64 = new core.Base64;
+ var entries, fileData, filesize, nEntries, inflate = core.RawInflate.inflate, zip = this, base64 = new core.Base64;
+ function read(offset, length, callback) {
+ if (fileData) {
+ callback(null, fileData.subarray(offset, offset + length));
+ } else {
+ callback("File data not loaded", null);
+ }
+ }
function crc32(data) {
var table = [0, 1996959894, 3993919788, 2567524794, 124634137, 1886057615, 3915621685, 2657392035, 249268274, 2044508324, 3772115230, 2547177864, 162941995, 2125561021, 3887607047, 2428444049, 498536548, 1789927666, 4089016648, 2227061214, 450548861, 1843258603, 4107580753, 2211677639, 325883990, 1684777152, 4251122042, 2321926636, 335633487, 1661365465, 4195302755, 2366115317, 997073096, 1281953886, 3579855332, 2724688242, 1006888145, 1258607687, 3524101629, 2768942443, 901097722, 1119000684,
3686517206, 2898065728, 853044451, 1172266101, 3705015759, 2882616665, 651767980, 1373503546, 3369554304, 3218104598, 565507253, 1454621731, 3485111705, 3099436303, 671266974, 1594198024, 3322730930, 2970347812, 795835527, 1483230225, 3244367275, 3060149565, 1994146192, 31158534, 2563907772, 4023717930, 1907459465, 112637215, 2680153253, 3904427059, 2013776290, 251722036, 2517215374, 3775830040, 2137656763, 141376813, 2439277719, 3865271297, 1802195444, 476864866, 2238001368, 4066508878, 1812370925,
@@ -3627,83 +4659,83 @@ core.Zip = function Zip(url, entriesReadCallback) {
1873836001, 414664567, 2282248934, 4279200368, 1711684554, 285281116, 2405801727, 4167216745, 1634467795, 376229701, 2685067896, 3608007406, 1308918612, 956543938, 2808555105, 3495958263, 1231636301, 1047427035, 2932959818, 3654703836, 1088359270, 936918E3, 2847714899, 3736837829, 1202900863, 817233897, 3183342108, 3401237130, 1404277552, 615818150, 3134207493, 3453421203, 1423857449, 601450431, 3009837614, 3294710456, 1567103746, 711928724, 3020668471, 3272380065, 1510334235, 755167117], crc =
0, i, iTop = data.length, x = 0, y = 0;
crc = crc ^ -1;
- for(i = 0;i < iTop;i += 1) {
+ for (i = 0;i < iTop;i += 1) {
y = (crc ^ data[i]) & 255;
x = table[y];
- crc = crc >>> 8 ^ x
+ crc = crc >>> 8 ^ x;
}
- return crc ^ -1
+ return crc ^ -1;
}
function dosTime2Date(dostime) {
var year = (dostime >> 25 & 127) + 1980, month = (dostime >> 21 & 15) - 1, mday = dostime >> 16 & 31, hour = dostime >> 11 & 15, min = dostime >> 5 & 63, sec = (dostime & 31) << 1, d = new Date(year, month, mday, hour, min, sec);
- return d
+ return d;
}
function date2DosTime(date) {
var y = date.getFullYear();
- return y < 1980 ? 0 : y - 1980 << 25 | date.getMonth() + 1 << 21 | date.getDate() << 16 | date.getHours() << 11 | date.getMinutes() << 5 | date.getSeconds() >> 1
+ return y < 1980 ? 0 : y - 1980 << 25 | date.getMonth() + 1 << 21 | date.getDate() << 16 | date.getHours() << 11 | date.getMinutes() << 5 | date.getSeconds() >> 1;
}
function ZipEntry(url, stream) {
var sig, namelen, extralen, commentlen, compressionMethod, compressedSize, uncompressedSize, offset, entry = this;
function handleEntryData(data, callback) {
var estream = new core.ByteArray(data), esig = estream.readUInt32LE(), filenamelen, eextralen;
- if(esig !== 67324752) {
+ if (esig !== 67324752) {
callback("File entry signature is wrong." + esig.toString() + " " + data.length.toString(), null);
- return
+ return;
}
estream.pos += 22;
filenamelen = estream.readUInt16LE();
eextralen = estream.readUInt16LE();
estream.pos += filenamelen + eextralen;
- if(compressionMethod) {
+ if (compressionMethod) {
data = data.subarray(estream.pos, estream.pos + compressedSize);
- if(compressedSize !== data.length) {
+ if (compressedSize !== data.length) {
callback("The amount of compressed bytes read was " + data.length.toString() + " instead of " + compressedSize.toString() + " for " + entry.filename + " in " + url + ".", null);
- return
+ return;
}
- data = inflate(data, uncompressedSize)
- }else {
- data = data.subarray(estream.pos, estream.pos + uncompressedSize)
+ data = inflate(data, uncompressedSize);
+ } else {
+ data = data.subarray(estream.pos, estream.pos + uncompressedSize);
}
- if(uncompressedSize !== data.length) {
+ if (uncompressedSize !== data.length) {
callback("The amount of bytes read was " + data.length.toString() + " instead of " + uncompressedSize.toString() + " for " + entry.filename + " in " + url + ".", null);
- return
+ return;
}
entry.data = data;
- callback(null, data)
+ callback(null, data);
}
function load(callback) {
- if(entry.data !== null) {
+ if (entry.data !== null) {
callback(null, entry.data);
- return
+ return;
}
var size = compressedSize + 34 + namelen + extralen + 256;
- if(size + offset > filesize) {
- size = filesize - offset
+ if (size + offset > filesize) {
+ size = filesize - offset;
}
- runtime.read(url, offset, size, function(err, data) {
- if(err || data === null) {
- callback(err, data)
- }else {
- handleEntryData(data, callback)
+ read(offset, size, function(err, data) {
+ if (err || data === null) {
+ callback(err, data);
+ } else {
+ handleEntryData(data, callback);
}
- })
+ });
}
this.load = load;
function set(filename, data, compressed, date) {
entry.filename = filename;
entry.data = data;
entry.compressed = compressed;
- entry.date = date
+ entry.date = date;
}
this.set = set;
this.error = null;
- if(!stream) {
- return
+ if (!stream) {
+ return;
}
sig = stream.readUInt32LE();
- if(sig !== 33639248) {
+ if (sig !== 33639248) {
this.error = "Central directory entry has wrong signature at position " + (stream.pos - 4).toString() + ' for file "' + url + '": ' + stream.data.length.toString();
- return
+ return;
}
stream.pos += 6;
compressionMethod = stream.readUInt16LE();
@@ -3718,163 +4750,163 @@ core.Zip = function Zip(url, entriesReadCallback) {
offset = stream.readUInt32LE();
this.filename = runtime.byteArrayToString(stream.data.subarray(stream.pos, stream.pos + namelen), "utf8");
this.data = null;
- stream.pos += namelen + extralen + commentlen
+ stream.pos += namelen + extralen + commentlen;
}
function handleCentralDirectory(data, callback) {
var stream = new core.ByteArray(data), i, e;
entries = [];
- for(i = 0;i < nEntries;i += 1) {
+ for (i = 0;i < nEntries;i += 1) {
e = new ZipEntry(url, stream);
- if(e.error) {
+ if (e.error) {
callback(e.error, zip);
- return
+ return;
}
- entries[entries.length] = e
+ entries[entries.length] = e;
}
- callback(null, zip)
+ callback(null, zip);
}
function handleCentralDirectoryEnd(data, callback) {
- if(data.length !== 22) {
+ if (data.length !== 22) {
callback("Central directory length should be 22.", zip);
- return
+ return;
}
var stream = new core.ByteArray(data), sig, disk, cddisk, diskNEntries, cdsSize, cdsOffset;
sig = stream.readUInt32LE();
- if(sig !== 101010256) {
+ if (sig !== 101010256) {
callback("Central directory signature is wrong: " + sig.toString(), zip);
- return
+ return;
}
disk = stream.readUInt16LE();
- if(disk !== 0) {
+ if (disk !== 0) {
callback("Zip files with non-zero disk numbers are not supported.", zip);
- return
+ return;
}
cddisk = stream.readUInt16LE();
- if(cddisk !== 0) {
+ if (cddisk !== 0) {
callback("Zip files with non-zero disk numbers are not supported.", zip);
- return
+ return;
}
diskNEntries = stream.readUInt16LE();
nEntries = stream.readUInt16LE();
- if(diskNEntries !== nEntries) {
+ if (diskNEntries !== nEntries) {
callback("Number of entries is inconsistent.", zip);
- return
+ return;
}
cdsSize = stream.readUInt32LE();
cdsOffset = stream.readUInt16LE();
cdsOffset = filesize - 22 - cdsSize;
- runtime.read(url, cdsOffset, filesize - cdsOffset, function(err, data) {
- if(err || data === null) {
- callback(err, zip)
- }else {
- handleCentralDirectory(data, callback)
+ read(cdsOffset, filesize - cdsOffset, function(err, data) {
+ if (err || data === null) {
+ callback(err, zip);
+ } else {
+ handleCentralDirectory(data, callback);
}
- })
+ });
}
function load(filename, callback) {
var entry = null, e, i;
- for(i = 0;i < entries.length;i += 1) {
+ for (i = 0;i < entries.length;i += 1) {
e = entries[i];
- if(e.filename === filename) {
+ if (e.filename === filename) {
entry = e;
- break
+ break;
}
}
- if(entry) {
- if(entry.data) {
- callback(null, entry.data)
- }else {
- entry.load(callback)
+ if (entry) {
+ if (entry.data) {
+ callback(null, entry.data);
+ } else {
+ entry.load(callback);
}
- }else {
- callback(filename + " not found.", null)
+ } else {
+ callback(filename + " not found.", null);
}
}
function loadAsString(filename, callback) {
load(filename, function(err, data) {
- if(err || data === null) {
- return callback(err, null)
+ if (err || data === null) {
+ return callback(err, null);
}
var d = runtime.byteArrayToString(data, "utf8");
- callback(null, d)
- })
+ callback(null, d);
+ });
}
function loadContentXmlAsFragments(filename, handler) {
zip.loadAsString(filename, function(err, data) {
- if(err) {
- return handler.rootElementReady(err)
+ if (err) {
+ return handler.rootElementReady(err);
}
- handler.rootElementReady(null, data, true)
- })
+ handler.rootElementReady(null, data, true);
+ });
}
function loadAsDataURL(filename, mimetype, callback) {
load(filename, function(err, data) {
- if(err || !data) {
- return callback(err, null)
+ if (err || !data) {
+ return callback(err, null);
}
var p = data, chunksize = 45E3, i = 0, dataurl;
- if(!mimetype) {
- if(p[1] === 80 && (p[2] === 78 && p[3] === 71)) {
- mimetype = "image/png"
- }else {
- if(p[0] === 255 && (p[1] === 216 && p[2] === 255)) {
- mimetype = "image/jpeg"
- }else {
- if(p[0] === 71 && (p[1] === 73 && p[2] === 70)) {
- mimetype = "image/gif"
- }else {
- mimetype = ""
+ if (!mimetype) {
+ if (p[1] === 80 && p[2] === 78 && p[3] === 71) {
+ mimetype = "image/png";
+ } else {
+ if (p[0] === 255 && p[1] === 216 && p[2] === 255) {
+ mimetype = "image/jpeg";
+ } else {
+ if (p[0] === 71 && p[1] === 73 && p[2] === 70) {
+ mimetype = "image/gif";
+ } else {
+ mimetype = "";
}
}
}
}
dataurl = "data:" + mimetype + ";base64,";
- while(i < data.length) {
+ while (i < data.length) {
dataurl += base64.convertUTF8ArrayToBase64(p.subarray(i, Math.min(i + chunksize, p.length)));
- i += chunksize
+ i += chunksize;
}
- callback(null, dataurl)
- })
+ callback(null, dataurl);
+ });
}
function loadAsDOM(filename, callback) {
zip.loadAsString(filename, function(err, xmldata) {
- if(err || xmldata === null) {
+ if (err || xmldata === null) {
callback(err, null);
- return
+ return;
}
var parser = new DOMParser, dom = parser.parseFromString(xmldata, "text/xml");
- callback(null, dom)
- })
+ callback(null, dom);
+ });
}
function save(filename, data, compressed, date) {
var i, entry;
- for(i = 0;i < entries.length;i += 1) {
+ for (i = 0;i < entries.length;i += 1) {
entry = entries[i];
- if(entry.filename === filename) {
+ if (entry.filename === filename) {
entry.set(filename, data, compressed, date);
- return
+ return;
}
}
entry = new ZipEntry(url);
entry.set(filename, data, compressed, date);
- entries.push(entry)
+ entries.push(entry);
}
function remove(filename) {
var i, entry;
- for(i = 0;i < entries.length;i += 1) {
+ for (i = 0;i < entries.length;i += 1) {
entry = entries[i];
- if(entry.filename === filename) {
+ if (entry.filename === filename) {
entries.splice(i, 1);
- return true
+ return true;
}
}
- return false
+ return false;
}
function writeEntry(entry) {
var data = new core.ByteArrayWriter("utf8"), length = 0;
data.appendArray([80, 75, 3, 4, 20, 0, 0, 0, 0, 0]);
- if(entry.data) {
- length = entry.data.length
+ if (entry.data) {
+ length = entry.data.length;
}
data.appendUInt32LE(date2DosTime(entry.date));
data.appendUInt32LE(entry.data ? crc32(entry.data) : 0);
@@ -3883,16 +4915,16 @@ core.Zip = function Zip(url, entriesReadCallback) {
data.appendUInt16LE(entry.filename.length);
data.appendUInt16LE(0);
data.appendString(entry.filename);
- if(entry.data) {
- data.appendByteArray(entry.data)
+ if (entry.data) {
+ data.appendByteArray(entry.data);
}
- return data
+ return data;
}
function writeCODEntry(entry, offset) {
var data = new core.ByteArrayWriter("utf8"), length = 0;
data.appendArray([80, 75, 1, 2, 20, 0, 20, 0, 0, 0, 0, 0]);
- if(entry.data) {
- length = entry.data.length
+ if (entry.data) {
+ length = entry.data.length;
}
data.appendUInt32LE(date2DosTime(entry.date));
data.appendUInt32LE(entry.data ? crc32(entry.data) : 0);
@@ -3902,41 +4934,41 @@ core.Zip = function Zip(url, entriesReadCallback) {
data.appendArray([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
data.appendUInt32LE(offset);
data.appendString(entry.filename);
- return data
+ return data;
}
function loadAllEntries(position, callback) {
- if(position === entries.length) {
+ if (position === entries.length) {
callback(null);
- return
+ return;
}
var entry = entries[position];
- if(entry.data !== null) {
+ if (entry.data !== null) {
loadAllEntries(position + 1, callback);
- return
+ return;
}
entry.load(function(err) {
- if(err) {
+ if (err) {
callback(err);
- return
+ return;
}
- loadAllEntries(position + 1, callback)
- })
+ loadAllEntries(position + 1, callback);
+ });
}
function createByteArray(successCallback, errorCallback) {
loadAllEntries(0, function(err) {
- if(err) {
+ if (err) {
errorCallback(err);
- return
+ return;
}
var i, e, codoffset, codsize, data = new core.ByteArrayWriter("utf8"), offsets = [0];
- for(i = 0;i < entries.length;i += 1) {
+ for (i = 0;i < entries.length;i += 1) {
data.appendByteArrayWriter(writeEntry(entries[i]));
- offsets.push(data.getLength())
+ offsets.push(data.getLength());
}
codoffset = data.getLength();
- for(i = 0;i < entries.length;i += 1) {
+ for (i = 0;i < entries.length;i += 1) {
e = entries[i];
- data.appendByteArrayWriter(writeCODEntry(e, offsets[i]))
+ data.appendByteArrayWriter(writeCODEntry(e, offsets[i]));
}
codsize = data.getLength() - codoffset;
data.appendArray([80, 75, 5, 6, 0, 0, 0, 0]);
@@ -3945,16 +4977,22 @@ core.Zip = function Zip(url, entriesReadCallback) {
data.appendUInt32LE(codsize);
data.appendUInt32LE(codoffset);
data.appendArray([0, 0]);
- successCallback(data.getByteArray())
- })
+ successCallback(data.getByteArray());
+ });
}
function writeAs(newurl, callback) {
createByteArray(function(data) {
- runtime.writeFile(newurl, data, callback)
- }, callback)
+ runtime.writeFile(newurl, data, function(err) {
+ if (!err) {
+ fileData = data;
+ filesize = fileData.length;
+ }
+ callback(err);
+ });
+ }, callback);
}
function write(callback) {
- writeAs(url, callback)
+ writeAs(url, callback);
}
this.load = load;
this.save = save;
@@ -3967,153 +5005,724 @@ core.Zip = function Zip(url, entriesReadCallback) {
this.loadAsDOM = loadAsDOM;
this.loadAsDataURL = loadAsDataURL;
this.getEntries = function() {
- return entries.slice()
+ return entries.slice();
};
filesize = -1;
- if(entriesReadCallback === null) {
+ if (entriesReadCallback === null) {
entries = [];
- return
- }
- runtime.getFileSize(url, function(size) {
- filesize = size;
- if(filesize < 0) {
- entriesReadCallback("File '" + url + "' cannot be read.", zip)
- }else {
- runtime.read(url, filesize - 22, 22, function(err, data) {
- if(err || (entriesReadCallback === null || data === null)) {
- entriesReadCallback(err, zip)
- }else {
- handleCentralDirectoryEnd(data, entriesReadCallback)
- }
- })
- }
- })
-};
-xmldom.LSSerializerFilter = function LSSerializerFilter() {
+ return;
+ }
+ runtime.readFile(url, "binary", function(err, result) {
+ if (typeof result === "string") {
+ err = "file was read as a string. Should be Uint8Array.";
+ }
+ if (err || !result || result.length === 0) {
+ entriesReadCallback("File '" + url + "' cannot be read. Err: " + (err || "[none]"), zip);
+ } else {
+ fileData = (result);
+ filesize = fileData.length;
+ read(filesize - 22, 22, function(err, data) {
+ if (err || data === null) {
+ entriesReadCallback(err, zip);
+ } else {
+ handleCentralDirectoryEnd(data, (entriesReadCallback));
+ }
+ });
+ }
+ });
};
-xmldom.LSSerializerFilter.prototype.acceptNode = function(node) {
+core.SimpleClientRect = null;
+gui.CommonConstraints = {EDIT:{ANNOTATIONS:{ONLY_DELETE_OWN:"onlyDeleteOwn"}, REVIEW_MODE:"reviewMode"}};
+gui.SessionConstraints = function SessionConstraints() {
+ var constraints = {}, constraintNotifier = new core.EventNotifier;
+ function registerConstraint(constraint) {
+ if (!constraints.hasOwnProperty(constraint)) {
+ constraints[constraint] = false;
+ constraintNotifier.register(constraint);
+ }
+ }
+ this.registerConstraint = registerConstraint;
+ this.subscribe = function(constraint, callback) {
+ registerConstraint(constraint);
+ constraintNotifier.subscribe(constraint, callback);
+ };
+ this.unsubscribe = function(constraint, callback) {
+ constraintNotifier.unsubscribe(constraint, callback);
+ };
+ this.setState = function(constraint, enabled) {
+ runtime.assert(constraints.hasOwnProperty(constraint) === true, "No such constraint");
+ if (constraints[constraint] !== enabled) {
+ constraints[constraint] = enabled;
+ constraintNotifier.emit(constraint, enabled);
+ }
+ };
+ this.getState = function(constraint) {
+ runtime.assert(constraints.hasOwnProperty(constraint) === true, "No such constraint");
+ return constraints[constraint];
+ };
};
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-odf.OdfNodeFilter = function OdfNodeFilter() {
+gui.BlacklistNamespaceNodeFilter = function(excludedNamespaces) {
+ var excludedNamespacesObj = {}, FILTER_REJECT = NodeFilter.FILTER_REJECT, FILTER_ACCEPT = NodeFilter.FILTER_ACCEPT;
this.acceptNode = function(node) {
- var result;
- if(node.namespaceURI === "http://www.w3.org/1999/xhtml") {
- result = NodeFilter.FILTER_SKIP
- }else {
- if(node.namespaceURI && node.namespaceURI.match(/^urn:webodf:/)) {
- result = NodeFilter.FILTER_REJECT
- }else {
- result = NodeFilter.FILTER_ACCEPT
- }
+ if (!node || excludedNamespacesObj.hasOwnProperty(node.namespaceURI)) {
+ return FILTER_REJECT;
}
- return result
+ return FILTER_ACCEPT;
+ };
+ function init() {
+ excludedNamespaces.forEach(function(ns) {
+ excludedNamespacesObj[ns] = true;
+ });
}
+ init();
};
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-odf.Namespaces = {namespaceMap:{db:"urn:oasis:names:tc:opendocument:xmlns:database:1.0", dc:"http://purl.org/dc/elements/1.1/", dr3d:"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0", draw:"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0", chart:"urn:oasis:names:tc:opendocument:xmlns:chart:1.0", fo:"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0", form:"urn:oasis:names:tc:opendocument:xmlns:form:1.0", meta:"urn:oasis:names:tc:opendocument:xmlns:meta:1.0", number:"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0",
-office:"urn:oasis:names:tc:opendocument:xmlns:office:1.0", presentation:"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0", style:"urn:oasis:names:tc:opendocument:xmlns:style:1.0", svg:"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0", table:"urn:oasis:names:tc:opendocument:xmlns:table:1.0", text:"urn:oasis:names:tc:opendocument:xmlns:text:1.0", xlink:"http://www.w3.org/1999/xlink", xml:"http://www.w3.org/XML/1998/namespace"}, prefixMap:{}, dbns:"urn:oasis:names:tc:opendocument:xmlns:database:1.0",
-dcns:"http://purl.org/dc/elements/1.1/", dr3dns:"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0", drawns:"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0", chartns:"urn:oasis:names:tc:opendocument:xmlns:chart:1.0", fons:"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0", formns:"urn:oasis:names:tc:opendocument:xmlns:form:1.0", metans:"urn:oasis:names:tc:opendocument:xmlns:meta:1.0", numberns:"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0", officens:"urn:oasis:names:tc:opendocument:xmlns:office:1.0",
-presentationns:"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0", stylens:"urn:oasis:names:tc:opendocument:xmlns:style:1.0", svgns:"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0", tablens:"urn:oasis:names:tc:opendocument:xmlns:table:1.0", textns:"urn:oasis:names:tc:opendocument:xmlns:text:1.0", xlinkns:"http://www.w3.org/1999/xlink", xmlns:"http://www.w3.org/XML/1998/namespace"};
+odf.Namespaces = {namespaceMap:{config:"urn:oasis:names:tc:opendocument:xmlns:config:1.0", db:"urn:oasis:names:tc:opendocument:xmlns:database:1.0", dc:"http://purl.org/dc/elements/1.1/", dr3d:"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0", draw:"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0", chart:"urn:oasis:names:tc:opendocument:xmlns:chart:1.0", fo:"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0", form:"urn:oasis:names:tc:opendocument:xmlns:form:1.0", math:"http://www.w3.org/1998/Math/MathML",
+meta:"urn:oasis:names:tc:opendocument:xmlns:meta:1.0", number:"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0", office:"urn:oasis:names:tc:opendocument:xmlns:office:1.0", presentation:"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0", style:"urn:oasis:names:tc:opendocument:xmlns:style:1.0", svg:"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0", table:"urn:oasis:names:tc:opendocument:xmlns:table:1.0", text:"urn:oasis:names:tc:opendocument:xmlns:text:1.0", xforms:"http://www.w3.org/2002/xforms",
+xlink:"http://www.w3.org/1999/xlink", xml:"http://www.w3.org/XML/1998/namespace"}, prefixMap:{}, configns:"urn:oasis:names:tc:opendocument:xmlns:config:1.0", dbns:"urn:oasis:names:tc:opendocument:xmlns:database:1.0", dcns:"http://purl.org/dc/elements/1.1/", dr3dns:"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0", drawns:"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0", chartns:"urn:oasis:names:tc:opendocument:xmlns:chart:1.0", fons:"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0",
+formns:"urn:oasis:names:tc:opendocument:xmlns:form:1.0", mathns:"http://www.w3.org/1998/Math/MathML", metans:"urn:oasis:names:tc:opendocument:xmlns:meta:1.0", numberns:"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0", officens:"urn:oasis:names:tc:opendocument:xmlns:office:1.0", presentationns:"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0", stylens:"urn:oasis:names:tc:opendocument:xmlns:style:1.0", svgns:"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0", tablens:"urn:oasis:names:tc:opendocument:xmlns:table:1.0",
+textns:"urn:oasis:names:tc:opendocument:xmlns:text:1.0", xformsns:"http://www.w3.org/2002/xforms", xlinkns:"http://www.w3.org/1999/xlink", xmlns:"http://www.w3.org/XML/1998/namespace"};
(function() {
var map = odf.Namespaces.namespaceMap, pmap = odf.Namespaces.prefixMap, prefix;
- for(prefix in map) {
- if(map.hasOwnProperty(prefix)) {
- pmap[map[prefix]] = prefix
+ for (prefix in map) {
+ if (map.hasOwnProperty(prefix)) {
+ pmap[map[prefix]] = prefix;
}
}
})();
odf.Namespaces.forEachPrefix = function forEachPrefix(cb) {
var ns = odf.Namespaces.namespaceMap, prefix;
- for(prefix in ns) {
- if(ns.hasOwnProperty(prefix)) {
- cb(prefix, ns[prefix])
+ for (prefix in ns) {
+ if (ns.hasOwnProperty(prefix)) {
+ cb(prefix, ns[prefix]);
}
}
};
odf.Namespaces.lookupNamespaceURI = function lookupNamespaceURI(prefix) {
var r = null;
- if(odf.Namespaces.namespaceMap.hasOwnProperty(prefix)) {
- r = (odf.Namespaces.namespaceMap[prefix])
+ if (odf.Namespaces.namespaceMap.hasOwnProperty(prefix)) {
+ r = (odf.Namespaces.namespaceMap[prefix]);
}
- return r
+ return r;
};
odf.Namespaces.lookupPrefix = function lookupPrefix(namespaceURI) {
var map = odf.Namespaces.prefixMap;
- return map.hasOwnProperty(namespaceURI) ? map[namespaceURI] : null
+ return map.hasOwnProperty(namespaceURI) ? map[namespaceURI] : null;
};
odf.Namespaces.lookupNamespaceURI.lookupNamespaceURI = odf.Namespaces.lookupNamespaceURI;
+(function() {
+ odf.OdfSchemaImpl = function() {
+ var TEXT = "text", FIELD = "field", OBJECT = "object", STYLE = "style", DEPRECATED = "deprecated", UNKNOWN = "uncategorized", containers = [["config:config-item", UNKNOWN], ["form:item", OBJECT], ["form:option", UNKNOWN], ["math:math", FIELD], ["meta:user-defined", UNKNOWN], ["number:currency-symbol", UNKNOWN], ["number:embedded-text", UNKNOWN], ["number:text", UNKNOWN], ["presentation:date-time-decl", UNKNOWN], ["presentation:footer-decl", UNKNOWN], ["presentation:header-decl", UNKNOWN], ["svg:desc",
+ TEXT], ["svg:title", TEXT], ["table:desc", UNKNOWN], ["table:title", UNKNOWN], ["text:a", TEXT], ["text:author-initials", FIELD], ["text:author-name", FIELD], ["text:bibliography-mark", FIELD], ["text:bookmark-ref", FIELD], ["text:chapter", FIELD], ["text:character-count", FIELD], ["text:conditional-text", FIELD], ["text:creation-date", FIELD], ["text:creation-time", FIELD], ["text:creator", FIELD], ["text:database-display", FIELD], ["text:database-name", FIELD], ["text:database-row-number",
+ FIELD], ["text:date", FIELD], ["text:dde-connection", FIELD], ["text:description", FIELD], ["text:editing-cycles", FIELD], ["text:editing-duration", FIELD], ["text:execute-macro", UNKNOWN], ["text:expression", UNKNOWN], ["text:file-name", FIELD], ["text:h", TEXT], ["text:hidden-paragraph", TEXT], ["text:hidden-text", TEXT], ["text:image-count", FIELD], ["text:index-entry-span", UNKNOWN], ["text:index-title-template", UNKNOWN], ["text:initial-creator", FIELD], ["text:keywords", FIELD], ["text:linenumbering-separator",
+ STYLE], ["text:measure", UNKNOWN], ["text:meta", UNKNOWN], ["text:meta-field", UNKNOWN], ["text:modification-date", FIELD], ["text:modification-time", FIELD], ["text:note-citation", FIELD], ["text:note-continuation-notice-backward", STYLE], ["text:note-continuation-notice-forward", STYLE], ["text:note-ref", FIELD], ["text:object-count", FIELD], ["text:p", TEXT], ["text:page-continuation", UNKNOWN], ["text:page-count", FIELD], ["text:page-number", FIELD], ["text:page-variable-get", FIELD], ["text:page-variable-set",
+ FIELD], ["text:paragraph-count", FIELD], ["text:placeholder", FIELD], ["text:print-date", FIELD], ["text:print-time", FIELD], ["text:printed-by", FIELD], ["text:reference-ref", FIELD], ["text:ruby-base", TEXT], ["text:ruby-text", TEXT], ["text:script", TEXT], ["text:sender-city", FIELD], ["text:sender-company", FIELD], ["text:sender-country", FIELD], ["text:sender-email", FIELD], ["text:sender-fax", FIELD], ["text:sender-firstname", FIELD], ["text:sender-initials", FIELD], ["text:sender-lastname",
+ FIELD], ["text:sender-phone-private", FIELD], ["text:sender-phone-work", FIELD], ["text:sender-position", FIELD], ["text:sender-postal-code", FIELD], ["text:sender-state-or-province", FIELD], ["text:sender-street", FIELD], ["text:sender-title", FIELD], ["text:sequence", UNKNOWN], ["text:sequence-ref", UNKNOWN], ["text:sheet-name", UNKNOWN], ["text:span", TEXT], ["text:subject", FIELD], ["text:table-count", FIELD], ["text:table-formula", DEPRECATED], ["text:template-name", UNKNOWN], ["text:text-input",
+ FIELD], ["text:time", FIELD], ["text:title", FIELD], ["text:user-defined", FIELD], ["text:user-field-get", FIELD], ["text:user-field-input", FIELD], ["text:variable-get", FIELD], ["text:variable-input", FIELD], ["text:variable-set", FIELD], ["text:word-count", FIELD], ["xforms:model", UNKNOWN]], cache = {};
+ this.isTextContainer = function(namespaceURI, localName) {
+ return cache[namespaceURI + ":" + localName] === TEXT;
+ };
+ this.isField = function(namespaceURI, localName) {
+ return cache[namespaceURI + ":" + localName] === FIELD;
+ };
+ this.getFields = function() {
+ return containers.filter(function(containerInfo) {
+ return containerInfo[1] === FIELD;
+ }).map(function(containerInfo) {
+ return containerInfo[0];
+ });
+ };
+ function init() {
+ containers.forEach(function(containerInfo) {
+ var name = containerInfo[0], type = containerInfo[1], nameParts = name.split(":"), prefix = nameParts[0], localName = nameParts[1], namespaceURI = odf.Namespaces.lookupNamespaceURI(prefix);
+ if (namespaceURI) {
+ cache[namespaceURI + ":" + localName] = type;
+ } else {
+ runtime.log("DEBUG: OdfSchema - unknown prefix '" + prefix + "'");
+ }
+ });
+ }
+ init();
+ };
+ odf.OdfSchema = new odf.OdfSchemaImpl;
+})();
+odf.OdfUtilsImpl = function OdfUtilsImpl() {
+ var textns = odf.Namespaces.textns, drawns = odf.Namespaces.drawns, xlinkns = odf.Namespaces.xlinkns, domUtils = core.DomUtils, odfNodeNamespaceMap = [odf.Namespaces.dbns, odf.Namespaces.dcns, odf.Namespaces.dr3dns, odf.Namespaces.drawns, odf.Namespaces.chartns, odf.Namespaces.formns, odf.Namespaces.numberns, odf.Namespaces.officens, odf.Namespaces.presentationns, odf.Namespaces.stylens, odf.Namespaces.svgns, odf.Namespaces.tablens, odf.Namespaces.textns], odfSchema = odf.OdfSchema;
+ function isImage(e) {
+ var name = e && e.localName;
+ return name === "image" && e.namespaceURI === drawns;
+ }
+ this.isImage = isImage;
+ function isCharacterFrame(e) {
+ return e !== null && e.nodeType === Node.ELEMENT_NODE && e.localName === "frame" && e.namespaceURI === drawns && (e).getAttributeNS(textns, "anchor-type") === "as-char";
+ }
+ this.isCharacterFrame = isCharacterFrame;
+ function isAnnotation(e) {
+ var name = e && e.localName;
+ return name === "annotation" && e.namespaceURI === odf.Namespaces.officens;
+ }
+ function isAnnotationWrapper(e) {
+ var name = e && e.localName;
+ return name === "div" && (e).className === "annotationWrapper";
+ }
+ function isInlineRoot(e) {
+ return isAnnotation(e) || isAnnotationWrapper(e);
+ }
+ this.isInlineRoot = isInlineRoot;
+ this.isTextSpan = function(e) {
+ var name = e && e.localName;
+ return name === "span" && e.namespaceURI === textns;
+ };
+ function isHyperlink(node) {
+ var name = node && node.localName;
+ return name === "a" && node.namespaceURI === textns;
+ }
+ this.isHyperlink = isHyperlink;
+ this.getHyperlinkTarget = function(element) {
+ return element.getAttributeNS(xlinkns, "href") || "";
+ };
+ function isParagraph(e) {
+ var name = e && e.localName;
+ return (name === "p" || name === "h") && e.namespaceURI === textns;
+ }
+ this.isParagraph = isParagraph;
+ function getParagraphElement(node, offset) {
+ if (node && offset !== undefined && !isParagraph(node) && node.childNodes.item(offset)) {
+ node = node.childNodes.item(offset);
+ }
+ while (node && !isParagraph(node)) {
+ node = node.parentNode;
+ }
+ return (node);
+ }
+ this.getParagraphElement = getParagraphElement;
+ function getParentAnnotation(node, container) {
+ while (node && node !== container) {
+ if (node.namespaceURI === odf.Namespaces.officens && node.localName === "annotation") {
+ return (node);
+ }
+ node = node.parentNode;
+ }
+ return null;
+ }
+ this.getParentAnnotation = getParentAnnotation;
+ this.isWithinAnnotation = function(node, container) {
+ return Boolean(getParentAnnotation(node, container));
+ };
+ this.getAnnotationCreator = function(annotationElement) {
+ var creatorElement = (annotationElement.getElementsByTagNameNS(odf.Namespaces.dcns, "creator")[0]);
+ return creatorElement.textContent;
+ };
+ this.isListItem = function(e) {
+ var name = e && e.localName;
+ return name === "list-item" && e.namespaceURI === textns;
+ };
+ this.isLineBreak = function(e) {
+ var name = e && e.localName;
+ return name === "line-break" && e.namespaceURI === textns;
+ };
+ function isODFWhitespace(text) {
+ return /^[ \t\r\n]+$/.test(text);
+ }
+ this.isODFWhitespace = isODFWhitespace;
+ function isGroupingElement(n) {
+ if (n === null || n.nodeType !== Node.ELEMENT_NODE) {
+ return false;
+ }
+ var e = (n), localName = e.localName;
+ return odfSchema.isTextContainer(e.namespaceURI, localName) || localName === "span" && e.className === "webodf-annotationHighlight";
+ }
+ this.isGroupingElement = isGroupingElement;
+ function isFieldElement(n) {
+ if (n === null || n.nodeType !== Node.ELEMENT_NODE) {
+ return false;
+ }
+ var e = (n), localName = e.localName;
+ return odfSchema.isField(e.namespaceURI, localName);
+ }
+ this.isFieldElement = isFieldElement;
+ function isCharacterElement(e) {
+ var n = e && e.localName, ns, r = false;
+ if (n) {
+ ns = e.namespaceURI;
+ if (ns === textns) {
+ r = n === "s" || n === "tab" || n === "line-break";
+ }
+ }
+ return r;
+ }
+ this.isCharacterElement = isCharacterElement;
+ function isAnchoredAsCharacterElement(e) {
+ return isCharacterElement(e) || isFieldElement(e) || isCharacterFrame(e) || isInlineRoot(e);
+ }
+ this.isAnchoredAsCharacterElement = isAnchoredAsCharacterElement;
+ function isSpaceElement(e) {
+ var n = e && e.localName, ns, r = false;
+ if (n) {
+ ns = e.namespaceURI;
+ if (ns === textns) {
+ r = n === "s";
+ }
+ }
+ return r;
+ }
+ this.isSpaceElement = isSpaceElement;
+ function isODFNode(node) {
+ return odfNodeNamespaceMap.indexOf(node.namespaceURI) !== -1;
+ }
+ this.isODFNode = isODFNode;
+ function hasNoODFContent(node) {
+ var childNode;
+ if (isCharacterElement(node) || isFieldElement(node)) {
+ return false;
+ }
+ if (isGroupingElement((node.parentNode)) && node.nodeType === Node.TEXT_NODE) {
+ return node.textContent.length === 0;
+ }
+ childNode = node.firstChild;
+ while (childNode) {
+ if (isODFNode(childNode) || !hasNoODFContent(childNode)) {
+ return false;
+ }
+ childNode = childNode.nextSibling;
+ }
+ return true;
+ }
+ this.hasNoODFContent = hasNoODFContent;
+ function firstChild(node) {
+ while (node.firstChild !== null && isGroupingElement(node)) {
+ node = node.firstChild;
+ }
+ return node;
+ }
+ this.firstChild = firstChild;
+ function lastChild(node) {
+ while (node.lastChild !== null && isGroupingElement(node)) {
+ node = node.lastChild;
+ }
+ return node;
+ }
+ this.lastChild = lastChild;
+ function previousNode(node) {
+ while (!isParagraph(node) && node.previousSibling === null) {
+ node = (node.parentNode);
+ }
+ return isParagraph(node) ? null : lastChild((node.previousSibling));
+ }
+ this.previousNode = previousNode;
+ function nextNode(node) {
+ while (!isParagraph(node) && node.nextSibling === null) {
+ node = (node.parentNode);
+ }
+ return isParagraph(node) ? null : firstChild((node.nextSibling));
+ }
+ this.nextNode = nextNode;
+ function scanLeftForNonSpace(node) {
+ var r = false, text;
+ while (node) {
+ if (node.nodeType === Node.TEXT_NODE) {
+ text = (node);
+ if (text.length === 0) {
+ node = previousNode(text);
+ } else {
+ return !isODFWhitespace(text.data.substr(text.length - 1, 1));
+ }
+ } else {
+ if (isAnchoredAsCharacterElement(node)) {
+ r = isSpaceElement(node) === false;
+ node = null;
+ } else {
+ node = previousNode(node);
+ }
+ }
+ }
+ return r;
+ }
+ this.scanLeftForNonSpace = scanLeftForNonSpace;
+ function lookLeftForCharacter(node) {
+ var text, r = 0, tl = 0;
+ if (node.nodeType === Node.TEXT_NODE) {
+ tl = (node).length;
+ }
+ if (tl > 0) {
+ text = (node).data;
+ if (!isODFWhitespace(text.substr(tl - 1, 1))) {
+ r = 1;
+ } else {
+ if (tl === 1) {
+ r = scanLeftForNonSpace(previousNode(node)) ? 2 : 0;
+ } else {
+ r = isODFWhitespace(text.substr(tl - 2, 1)) ? 0 : 2;
+ }
+ }
+ } else {
+ if (isAnchoredAsCharacterElement(node)) {
+ r = 1;
+ }
+ }
+ return r;
+ }
+ this.lookLeftForCharacter = lookLeftForCharacter;
+ function lookRightForCharacter(node) {
+ var r = false, l = 0;
+ if (node && node.nodeType === Node.TEXT_NODE) {
+ l = (node).length;
+ }
+ if (l > 0) {
+ r = !isODFWhitespace((node).data.substr(0, 1));
+ } else {
+ if (isAnchoredAsCharacterElement(node)) {
+ r = true;
+ }
+ }
+ return r;
+ }
+ this.lookRightForCharacter = lookRightForCharacter;
+ function scanLeftForAnyCharacter(node) {
+ var r = false, l;
+ node = node && lastChild(node);
+ while (node) {
+ if (node.nodeType === Node.TEXT_NODE) {
+ l = (node).length;
+ } else {
+ l = 0;
+ }
+ if (l > 0 && !isODFWhitespace((node).data)) {
+ r = true;
+ break;
+ }
+ if (isAnchoredAsCharacterElement(node)) {
+ r = true;
+ break;
+ }
+ node = previousNode(node);
+ }
+ return r;
+ }
+ this.scanLeftForAnyCharacter = scanLeftForAnyCharacter;
+ function scanRightForAnyCharacter(node) {
+ var r = false, l;
+ node = node && firstChild(node);
+ while (node) {
+ if (node.nodeType === Node.TEXT_NODE) {
+ l = (node).length;
+ } else {
+ l = 0;
+ }
+ if (l > 0 && !isODFWhitespace((node).data)) {
+ r = true;
+ break;
+ }
+ if (isAnchoredAsCharacterElement(node)) {
+ r = true;
+ break;
+ }
+ node = nextNode(node);
+ }
+ return r;
+ }
+ this.scanRightForAnyCharacter = scanRightForAnyCharacter;
+ function isTrailingWhitespace(textnode, offset) {
+ if (!isODFWhitespace(textnode.data.substr(offset))) {
+ return false;
+ }
+ return !scanRightForAnyCharacter(nextNode(textnode));
+ }
+ this.isTrailingWhitespace = isTrailingWhitespace;
+ function isSignificantWhitespace(textNode, offset) {
+ var text = textNode.data, result;
+ if (!isODFWhitespace(text[offset])) {
+ return false;
+ }
+ if (isAnchoredAsCharacterElement(textNode.parentNode)) {
+ return false;
+ }
+ if (offset > 0) {
+ if (!isODFWhitespace(text[offset - 1])) {
+ result = true;
+ }
+ } else {
+ if (scanLeftForNonSpace(previousNode(textNode))) {
+ result = true;
+ }
+ }
+ if (result === true) {
+ return isTrailingWhitespace(textNode, offset) ? false : true;
+ }
+ return false;
+ }
+ this.isSignificantWhitespace = isSignificantWhitespace;
+ this.isDowngradableSpaceElement = function(node) {
+ if (isSpaceElement(node)) {
+ return scanLeftForNonSpace(previousNode(node)) && scanRightForAnyCharacter(nextNode(node));
+ }
+ return false;
+ };
+ function parseLength(length) {
+ var re = /(-?[0-9]*[0-9][0-9]*(\.[0-9]*)?|0+\.[0-9]*[1-9][0-9]*|\.[0-9]*[1-9][0-9]*)((cm)|(mm)|(in)|(pt)|(pc)|(px)|(%))/, m = re.exec(length);
+ if (!m) {
+ return null;
+ }
+ return {value:parseFloat(m[1]), unit:m[3]};
+ }
+ this.parseLength = parseLength;
+ function parsePositiveLength(length) {
+ var result = parseLength(length);
+ if (result && (result.value <= 0 || result.unit === "%")) {
+ return null;
+ }
+ return result;
+ }
+ function parseNonNegativeLength(length) {
+ var result = parseLength(length);
+ if (result && (result.value < 0 || result.unit === "%")) {
+ return null;
+ }
+ return result;
+ }
+ this.parseNonNegativeLength = parseNonNegativeLength;
+ function parsePercentage(length) {
+ var result = parseLength(length);
+ if (result && result.unit !== "%") {
+ return null;
+ }
+ return result;
+ }
+ function parseFoFontSize(fontSize) {
+ return parsePositiveLength(fontSize) || parsePercentage(fontSize);
+ }
+ this.parseFoFontSize = parseFoFontSize;
+ function parseFoLineHeight(lineHeight) {
+ return parseNonNegativeLength(lineHeight) || parsePercentage(lineHeight);
+ }
+ this.parseFoLineHeight = parseFoLineHeight;
+ function isTextContentContainingNode(node) {
+ switch(node.namespaceURI) {
+ case odf.Namespaces.drawns:
+ ;
+ case odf.Namespaces.svgns:
+ ;
+ case odf.Namespaces.dr3dns:
+ return false;
+ case odf.Namespaces.textns:
+ switch(node.localName) {
+ case "note-body":
+ ;
+ case "ruby-text":
+ return false;
+ }
+ break;
+ case odf.Namespaces.officens:
+ switch(node.localName) {
+ case "annotation":
+ ;
+ case "binary-data":
+ ;
+ case "event-listeners":
+ return false;
+ }
+ break;
+ default:
+ switch(node.localName) {
+ case "cursor":
+ ;
+ case "editinfo":
+ return false;
+ }
+ break;
+ }
+ return true;
+ }
+ this.isTextContentContainingNode = isTextContentContainingNode;
+ function isSignificantTextContent(textNode) {
+ return Boolean(getParagraphElement(textNode) && (!isODFWhitespace(textNode.textContent) || isSignificantWhitespace(textNode, 0)));
+ }
+ function removePartiallyContainedNodes(range, nodes) {
+ while (nodes.length > 0 && !domUtils.rangeContainsNode(range, (nodes[0]))) {
+ nodes.shift();
+ }
+ while (nodes.length > 0 && !domUtils.rangeContainsNode(range, (nodes[nodes.length - 1]))) {
+ nodes.pop();
+ }
+ }
+ function getTextNodes(range, includePartial) {
+ var textNodes;
+ function nodeFilter(node) {
+ var result = NodeFilter.FILTER_REJECT;
+ if (node.nodeType === Node.TEXT_NODE) {
+ if (isSignificantTextContent((node))) {
+ result = NodeFilter.FILTER_ACCEPT;
+ }
+ } else {
+ if (isTextContentContainingNode(node)) {
+ result = NodeFilter.FILTER_SKIP;
+ }
+ }
+ return result;
+ }
+ textNodes = domUtils.getNodesInRange(range, nodeFilter, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT);
+ if (!includePartial) {
+ removePartiallyContainedNodes(range, textNodes);
+ }
+ return textNodes;
+ }
+ this.getTextNodes = getTextNodes;
+ function getTextElements(range, includePartial, includeInsignificantWhitespace) {
+ var elements;
+ function nodeFilter(node) {
+ var result = NodeFilter.FILTER_REJECT;
+ if (isCharacterElement(node.parentNode) || isFieldElement(node.parentNode) || isInlineRoot(node)) {
+ result = NodeFilter.FILTER_REJECT;
+ } else {
+ if (node.nodeType === Node.TEXT_NODE) {
+ if (includeInsignificantWhitespace || isSignificantTextContent((node))) {
+ result = NodeFilter.FILTER_ACCEPT;
+ }
+ } else {
+ if (isAnchoredAsCharacterElement(node)) {
+ result = NodeFilter.FILTER_ACCEPT;
+ } else {
+ if (isTextContentContainingNode(node) || isGroupingElement(node)) {
+ result = NodeFilter.FILTER_SKIP;
+ }
+ }
+ }
+ }
+ return result;
+ }
+ elements = domUtils.getNodesInRange(range, nodeFilter, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT);
+ if (!includePartial) {
+ removePartiallyContainedNodes(range, elements);
+ }
+ return elements;
+ }
+ this.getTextElements = getTextElements;
+ function prependParentContainers(startContainer, elements, filter) {
+ var container = startContainer;
+ while (container) {
+ if (filter(container)) {
+ if (elements[0] !== container) {
+ elements.unshift(container);
+ }
+ break;
+ }
+ if (isInlineRoot(container)) {
+ break;
+ }
+ container = container.parentNode;
+ }
+ }
+ this.getParagraphElements = function(range) {
+ var elements;
+ function nodeFilter(node) {
+ var result = NodeFilter.FILTER_REJECT;
+ if (isParagraph(node)) {
+ result = NodeFilter.FILTER_ACCEPT;
+ } else {
+ if (isTextContentContainingNode(node) || isGroupingElement(node)) {
+ result = NodeFilter.FILTER_SKIP;
+ }
+ }
+ return result;
+ }
+ elements = domUtils.getNodesInRange(range, nodeFilter, NodeFilter.SHOW_ELEMENT);
+ prependParentContainers((range.startContainer), elements, isParagraph);
+ return elements;
+ };
+ this.getImageElements = function(range) {
+ var elements;
+ function nodeFilter(node) {
+ var result = NodeFilter.FILTER_SKIP;
+ if (isImage(node)) {
+ result = NodeFilter.FILTER_ACCEPT;
+ }
+ return result;
+ }
+ elements = domUtils.getNodesInRange(range, nodeFilter, NodeFilter.SHOW_ELEMENT);
+ prependParentContainers((range.startContainer), elements, isImage);
+ return elements;
+ };
+ function getRightNode(container, offset) {
+ var node = container;
+ if (offset < node.childNodes.length - 1) {
+ node = (node.childNodes[offset + 1]);
+ } else {
+ while (!node.nextSibling) {
+ node = node.parentNode;
+ }
+ node = node.nextSibling;
+ }
+ while (node.firstChild) {
+ node = node.firstChild;
+ }
+ return node;
+ }
+ this.getHyperlinkElements = function(range) {
+ var links = [], newRange = (range.cloneRange()), node, textNodes;
+ if (range.collapsed && range.endContainer.nodeType === Node.ELEMENT_NODE) {
+ node = getRightNode(range.endContainer, range.endOffset);
+ if (node.nodeType === Node.TEXT_NODE) {
+ newRange.setEnd(node, 1);
+ }
+ }
+ textNodes = getTextElements(newRange, true, false);
+ textNodes.forEach(function(node) {
+ var parent = node.parentNode;
+ while (!isParagraph(parent)) {
+ if (isHyperlink(parent) && links.indexOf(parent) === -1) {
+ links.push(parent);
+ break;
+ }
+ parent = parent.parentNode;
+ }
+ });
+ newRange.detach();
+ return links;
+ };
+ this.getNormalizedFontFamilyName = function(fontFamilyName) {
+ if (!/^(["'])(?:.|[\n\r])*?\1$/.test(fontFamilyName)) {
+ fontFamilyName = fontFamilyName.replace(/^[ \t\r\n\f]*((?:.|[\n\r])*?)[ \t\r\n\f]*$/, "$1");
+ if (/[ \t\r\n\f]/.test(fontFamilyName)) {
+ fontFamilyName = "'" + fontFamilyName.replace(/[ \t\r\n\f]+/g, " ") + "'";
+ }
+ }
+ return fontFamilyName;
+ };
+};
+odf.OdfUtils = new odf.OdfUtilsImpl;
+gui.OdfTextBodyNodeFilter = function() {
+ var odfUtils = odf.OdfUtils, TEXT_NODE = Node.TEXT_NODE, FILTER_REJECT = NodeFilter.FILTER_REJECT, FILTER_ACCEPT = NodeFilter.FILTER_ACCEPT, textns = odf.Namespaces.textns;
+ this.acceptNode = function(node) {
+ if (node.nodeType === TEXT_NODE) {
+ if (!odfUtils.isGroupingElement(node.parentNode)) {
+ return FILTER_REJECT;
+ }
+ } else {
+ if (node.namespaceURI === textns && node.localName === "tracked-changes") {
+ return FILTER_REJECT;
+ }
+ }
+ return FILTER_ACCEPT;
+ };
+};
+xmldom.LSSerializerFilter = function LSSerializerFilter() {
+};
+xmldom.LSSerializerFilter.prototype.acceptNode = function(node) {
+};
+odf.OdfNodeFilter = function OdfNodeFilter() {
+ this.acceptNode = function(node) {
+ var result;
+ if (node.namespaceURI === "http://www.w3.org/1999/xhtml") {
+ result = NodeFilter.FILTER_SKIP;
+ } else {
+ if (node.namespaceURI && node.namespaceURI.match(/^urn:webodf:/)) {
+ result = NodeFilter.FILTER_REJECT;
+ } else {
+ result = NodeFilter.FILTER_ACCEPT;
+ }
+ }
+ return result;
+ };
+};
xmldom.XPathIterator = function XPathIterator() {
};
xmldom.XPathIterator.prototype.next = function() {
@@ -4124,205 +5733,205 @@ xmldom.XPathAtom;
function createXPathSingleton() {
var createXPathPathIterator, parsePredicates;
function isSmallestPositive(a, b, c) {
- return a !== -1 && ((a < b || b === -1) && (a < c || c === -1))
+ return a !== -1 && (a < b || b === -1) && (a < c || c === -1);
}
function parseXPathStep(xpath, pos, end, steps) {
var location = "", predicates = [], brapos = xpath.indexOf("[", pos), slapos = xpath.indexOf("/", pos), eqpos = xpath.indexOf("=", pos);
- if(isSmallestPositive(slapos, brapos, eqpos)) {
+ if (isSmallestPositive(slapos, brapos, eqpos)) {
location = xpath.substring(pos, slapos);
- pos = slapos + 1
- }else {
- if(isSmallestPositive(brapos, slapos, eqpos)) {
+ pos = slapos + 1;
+ } else {
+ if (isSmallestPositive(brapos, slapos, eqpos)) {
location = xpath.substring(pos, brapos);
- pos = parsePredicates(xpath, brapos, predicates)
- }else {
- if(isSmallestPositive(eqpos, slapos, brapos)) {
+ pos = parsePredicates(xpath, brapos, predicates);
+ } else {
+ if (isSmallestPositive(eqpos, slapos, brapos)) {
location = xpath.substring(pos, eqpos);
- pos = eqpos
- }else {
+ pos = eqpos;
+ } else {
location = xpath.substring(pos, end);
- pos = end
+ pos = end;
}
}
}
steps.push({location:location, predicates:predicates});
- return pos
+ return pos;
}
function parseXPath(xpath) {
var steps = [], p = 0, end = xpath.length, value;
- while(p < end) {
+ while (p < end) {
p = parseXPathStep(xpath, p, end, steps);
- if(p < end && xpath[p] === "=") {
+ if (p < end && xpath[p] === "=") {
value = xpath.substring(p + 1, end);
- if(value.length > 2 && (value[0] === "'" || value[0] === '"')) {
- value = value.slice(1, value.length - 1)
- }else {
+ if (value.length > 2 && (value[0] === "'" || value[0] === '"')) {
+ value = value.slice(1, value.length - 1);
+ } else {
try {
- value = parseInt(value, 10)
- }catch(ignore) {
+ value = parseInt(value, 10);
+ } catch (ignore) {
}
}
- p = end
+ p = end;
}
}
- return{steps:steps, value:value}
+ return {steps:steps, value:value};
}
parsePredicates = function parsePredicates(xpath, start, predicates) {
var pos = start, l = xpath.length, depth = 0;
- while(pos < l) {
- if(xpath[pos] === "]") {
+ while (pos < l) {
+ if (xpath[pos] === "]") {
depth -= 1;
- if(depth <= 0) {
- predicates.push(parseXPath(xpath.substring(start, pos)))
+ if (depth <= 0) {
+ predicates.push(parseXPath(xpath.substring(start, pos)));
}
- }else {
- if(xpath[pos] === "[") {
- if(depth <= 0) {
- start = pos + 1
+ } else {
+ if (xpath[pos] === "[") {
+ if (depth <= 0) {
+ start = pos + 1;
}
- depth += 1
+ depth += 1;
}
}
- pos += 1
+ pos += 1;
}
- return pos
+ return pos;
};
function XPathNodeIterator() {
var node = null, done = false;
this.setNode = function setNode(n) {
- node = n
+ node = n;
};
this.reset = function() {
- done = false
+ done = false;
};
this.next = function next() {
var val = done ? null : node;
done = true;
- return val
- }
+ return val;
+ };
}
function AttributeIterator(it, namespace, localName) {
this.reset = function reset() {
- it.reset()
+ it.reset();
};
this.next = function next() {
var node = it.next();
- while(node) {
- if(node.nodeType === Node.ELEMENT_NODE) {
- node = (node).getAttributeNodeNS(namespace, localName)
+ while (node) {
+ if (node.nodeType === Node.ELEMENT_NODE) {
+ node = (node).getAttributeNodeNS(namespace, localName);
}
- if(node) {
- return node
+ if (node) {
+ return node;
}
- node = it.next()
+ node = it.next();
}
- return node
- }
+ return node;
+ };
}
function AllChildElementIterator(it, recurse) {
var root = it.next(), node = null;
this.reset = function reset() {
it.reset();
root = it.next();
- node = null
+ node = null;
};
this.next = function next() {
- while(root) {
- if(node) {
- if(recurse && node.firstChild) {
- node = node.firstChild
- }else {
- while(!node.nextSibling && node !== root) {
- node = node.parentNode
+ while (root) {
+ if (node) {
+ if (recurse && node.firstChild) {
+ node = node.firstChild;
+ } else {
+ while (!node.nextSibling && node !== root) {
+ node = node.parentNode;
}
- if(node === root) {
- root = it.next()
- }else {
- node = node.nextSibling
+ if (node === root) {
+ root = it.next();
+ } else {
+ node = node.nextSibling;
}
}
- }else {
+ } else {
do {
node = root.firstChild;
- if(!node) {
- root = it.next()
+ if (!node) {
+ root = it.next();
}
- }while(root && !node)
+ } while (root && !node);
}
- if(node && node.nodeType === Node.ELEMENT_NODE) {
- return node
+ if (node && node.nodeType === Node.ELEMENT_NODE) {
+ return node;
}
}
- return null
- }
+ return null;
+ };
}
function ConditionIterator(it, condition) {
this.reset = function reset() {
- it.reset()
+ it.reset();
};
this.next = function next() {
var n = it.next();
- while(n && !condition(n)) {
- n = it.next()
+ while (n && !condition(n)) {
+ n = it.next();
}
- return n
- }
+ return n;
+ };
}
function createNodenameFilter(it, name, namespaceResolver) {
var s = name.split(":", 2), namespace = namespaceResolver(s[0]), localName = s[1];
return new ConditionIterator(it, function(node) {
- return node.localName === localName && node.namespaceURI === namespace
- })
+ return node.localName === localName && node.namespaceURI === namespace;
+ });
}
function createPredicateFilteredIterator(it, p, namespaceResolver) {
var nit = new XPathNodeIterator, pit = createXPathPathIterator(nit, p, namespaceResolver), value = p.value;
- if(value === undefined) {
+ if (value === undefined) {
return new ConditionIterator(it, function(node) {
nit.setNode(node);
pit.reset();
- return pit.next() !== null
- })
+ return pit.next() !== null;
+ });
}
return new ConditionIterator(it, function(node) {
nit.setNode(node);
pit.reset();
var n = pit.next();
- return n ? n.nodeValue === value : false
- })
+ return n ? n.nodeValue === value : false;
+ });
}
function item(p, i) {
- return p[i]
+ return p[i];
}
createXPathPathIterator = function createXPathPathIterator(it, xpath, namespaceResolver) {
var i, j, step, location, s, p, ns;
- for(i = 0;i < xpath.steps.length;i += 1) {
+ for (i = 0;i < xpath.steps.length;i += 1) {
step = xpath.steps[i];
location = step.location;
- if(location === "") {
- it = new AllChildElementIterator(it, false)
- }else {
- if(location[0] === "@") {
+ if (location === "") {
+ it = new AllChildElementIterator(it, false);
+ } else {
+ if (location[0] === "@") {
s = location.substr(1).split(":", 2);
ns = namespaceResolver(s[0]);
- if(!ns) {
- throw"No namespace associated with the prefix " + s[0];
+ if (!ns) {
+ throw "No namespace associated with the prefix " + s[0];
}
- it = new AttributeIterator(it, ns, s[1])
- }else {
- if(location !== ".") {
+ it = new AttributeIterator(it, ns, s[1]);
+ } else {
+ if (location !== ".") {
it = new AllChildElementIterator(it, false);
- if(location.indexOf(":") !== -1) {
- it = createNodenameFilter(it, location, namespaceResolver)
+ if (location.indexOf(":") !== -1) {
+ it = createNodenameFilter(it, location, namespaceResolver);
}
}
}
}
- for(j = 0;j < step.predicates.length;j += 1) {
+ for (j = 0;j < step.predicates.length;j += 1) {
p = item(step.predicates, j);
- it = createPredicateFilteredIterator(it, p, namespaceResolver)
+ it = createPredicateFilteredIterator(it, p, namespaceResolver);
}
}
- return it
+ return it;
};
function fallback(node, xpath, namespaceResolver) {
var it = new XPathNodeIterator, i, nodelist, parsedXPath;
@@ -4331,68 +5940,31 @@ function createXPathSingleton() {
it = createXPathPathIterator(it, parsedXPath, namespaceResolver);
nodelist = [];
i = it.next();
- while(i) {
+ while (i) {
nodelist.push(i);
- i = it.next()
+ i = it.next();
}
- return nodelist
+ return nodelist;
}
function getODFElementsWithXPath(node, xpath, namespaceResolver) {
var doc = node.ownerDocument, nodes, elements = [], n = null;
- if(!doc || typeof doc.evaluate !== "function") {
- elements = fallback(node, xpath, namespaceResolver)
- }else {
+ if (!doc || typeof doc.evaluate !== "function") {
+ elements = fallback(node, xpath, namespaceResolver);
+ } else {
nodes = doc.evaluate(xpath, node, namespaceResolver, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
n = nodes.iterateNext();
- while(n !== null) {
- if(n.nodeType === Node.ELEMENT_NODE) {
- elements.push(n)
+ while (n !== null) {
+ if (n.nodeType === Node.ELEMENT_NODE) {
+ elements.push(n);
}
- n = nodes.iterateNext()
+ n = nodes.iterateNext();
}
}
- return elements
+ return elements;
}
- return{getODFElementsWithXPath:getODFElementsWithXPath}
+ return {getODFElementsWithXPath:getODFElementsWithXPath};
}
xmldom.XPath = createXPathSingleton();
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
odf.StyleInfo = function StyleInfo() {
var chartns = odf.Namespaces.chartns, dbns = odf.Namespaces.dbns, dr3dns = odf.Namespaces.dr3dns, drawns = odf.Namespaces.drawns, formns = odf.Namespaces.formns, numberns = odf.Namespaces.numberns, officens = odf.Namespaces.officens, presentationns = odf.Namespaces.presentationns, stylens = odf.Namespaces.stylens, tablens = odf.Namespaces.tablens, textns = odf.Namespaces.textns, nsprefixes = {"urn:oasis:names:tc:opendocument:xmlns:chart:1.0":"chart:", "urn:oasis:names:tc:opendocument:xmlns:database:1.0":"db:",
"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0":"dr3d:", "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0":"draw:", "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0":"fo:", "urn:oasis:names:tc:opendocument:xmlns:form:1.0":"form:", "urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0":"number:", "urn:oasis:names:tc:opendocument:xmlns:office:1.0":"office:", "urn:oasis:names:tc:opendocument:xmlns:presentation:1.0":"presentation:", "urn:oasis:names:tc:opendocument:xmlns:style:1.0":"style:",
@@ -4424,267 +5996,267 @@ odf.StyleInfo = function StyleInfo() {
en:"variable-set", ans:stylens, a:"data-style-name"}], "page-layout":[{ens:presentationns, en:"notes", ans:stylens, a:"page-layout-name"}, {ens:stylens, en:"handout-master", ans:stylens, a:"page-layout-name"}, {ens:stylens, en:"master-page", ans:stylens, a:"page-layout-name"}]}, elements, xpath = xmldom.XPath;
function hasDerivedStyles(odfbody, nsResolver, styleElement) {
var nodes, xp, styleName = styleElement.getAttributeNS(stylens, "name"), styleFamily = styleElement.getAttributeNS(stylens, "family");
- xp = "//style:*[@style:parent-style-name='" + styleName + "'][@style:family='" + styleFamily + "']";
+ xp = '//style:*[@style:parent-style-name="' + styleName + '"][@style:family="' + styleFamily + '"]';
nodes = xpath.getODFElementsWithXPath(odfbody, xp, nsResolver);
- if(nodes.length) {
- return true
+ if (nodes.length) {
+ return true;
}
- return false
+ return false;
}
function prefixUsedStyleNames(element, prefix) {
var i, stylename, a, e, ns, elname, elns, localName, length = 0;
elname = elements[element.localName];
- if(elname) {
+ if (elname) {
elns = elname[element.namespaceURI];
- if(elns) {
- length = elns.length
+ if (elns) {
+ length = elns.length;
}
}
- for(i = 0;i < length;i += 1) {
+ for (i = 0;i < length;i += 1) {
a = (elns[i]);
ns = a.ns;
localName = a.localname;
stylename = element.getAttributeNS(ns, localName);
- if(stylename) {
- element.setAttributeNS(ns, nsprefixes[ns] + localName, prefix + stylename)
+ if (stylename) {
+ element.setAttributeNS(ns, nsprefixes[ns] + localName, prefix + stylename);
}
}
e = element.firstElementChild;
- while(e) {
+ while (e) {
prefixUsedStyleNames(e, prefix);
- e = e.nextElementSibling
+ e = e.nextElementSibling;
}
}
function prefixStyleName(styleElement, prefix) {
var stylename = styleElement.getAttributeNS(drawns, "name"), ns;
- if(stylename) {
- ns = drawns
- }else {
+ if (stylename) {
+ ns = drawns;
+ } else {
stylename = styleElement.getAttributeNS(stylens, "name");
- if(stylename) {
- ns = stylens
+ if (stylename) {
+ ns = stylens;
}
}
- if(ns) {
- styleElement.setAttributeNS(ns, nsprefixes[ns] + "name", prefix + stylename)
+ if (ns) {
+ styleElement.setAttributeNS(ns, nsprefixes[ns] + "name", prefix + stylename);
}
}
function prefixStyleNames(styleElementsRoot, prefix, styleUsingElementsRoot) {
var s;
- if(styleElementsRoot) {
+ if (styleElementsRoot) {
s = styleElementsRoot.firstChild;
- while(s) {
- if(s.nodeType === Node.ELEMENT_NODE) {
- prefixStyleName((s), prefix)
+ while (s) {
+ if (s.nodeType === Node.ELEMENT_NODE) {
+ prefixStyleName((s), prefix);
}
- s = s.nextSibling
+ s = s.nextSibling;
}
prefixUsedStyleNames(styleElementsRoot, prefix);
- if(styleUsingElementsRoot) {
- prefixUsedStyleNames(styleUsingElementsRoot, prefix)
+ if (styleUsingElementsRoot) {
+ prefixUsedStyleNames(styleUsingElementsRoot, prefix);
}
}
}
function removeRegExpFromUsedStyleNames(element, regExp) {
var i, stylename, e, elname, elns, a, ns, localName, length = 0;
elname = elements[element.localName];
- if(elname) {
+ if (elname) {
elns = elname[element.namespaceURI];
- if(elns) {
- length = elns.length
+ if (elns) {
+ length = elns.length;
}
}
- for(i = 0;i < length;i += 1) {
+ for (i = 0;i < length;i += 1) {
a = (elns[i]);
ns = a.ns;
localName = a.localname;
stylename = element.getAttributeNS(ns, localName);
- if(stylename) {
+ if (stylename) {
stylename = stylename.replace(regExp, "");
- element.setAttributeNS(ns, nsprefixes[ns] + localName, stylename)
+ element.setAttributeNS(ns, nsprefixes[ns] + localName, stylename);
}
}
e = element.firstElementChild;
- while(e) {
+ while (e) {
removeRegExpFromUsedStyleNames(e, regExp);
- e = e.nextElementSibling
+ e = e.nextElementSibling;
}
}
function removeRegExpFromStyleName(styleElement, regExp) {
var stylename = styleElement.getAttributeNS(drawns, "name"), ns;
- if(stylename) {
- ns = drawns
- }else {
+ if (stylename) {
+ ns = drawns;
+ } else {
stylename = styleElement.getAttributeNS(stylens, "name");
- if(stylename) {
- ns = stylens
+ if (stylename) {
+ ns = stylens;
}
}
- if(ns) {
+ if (ns) {
stylename = stylename.replace(regExp, "");
- styleElement.setAttributeNS(ns, nsprefixes[ns] + "name", stylename)
+ styleElement.setAttributeNS(ns, nsprefixes[ns] + "name", stylename);
}
}
function removePrefixFromStyleNames(styleElementsRoot, prefix, styleUsingElementsRoot) {
var s, regExp = new RegExp("^" + prefix);
- if(styleElementsRoot) {
+ if (styleElementsRoot) {
s = styleElementsRoot.firstChild;
- while(s) {
- if(s.nodeType === Node.ELEMENT_NODE) {
- removeRegExpFromStyleName((s), regExp)
+ while (s) {
+ if (s.nodeType === Node.ELEMENT_NODE) {
+ removeRegExpFromStyleName((s), regExp);
}
- s = s.nextSibling
+ s = s.nextSibling;
}
removeRegExpFromUsedStyleNames(styleElementsRoot, regExp);
- if(styleUsingElementsRoot) {
- removeRegExpFromUsedStyleNames(styleUsingElementsRoot, regExp)
+ if (styleUsingElementsRoot) {
+ removeRegExpFromUsedStyleNames(styleUsingElementsRoot, regExp);
}
}
}
function determineStylesForNode(element, usedStyles) {
var i, stylename, elname, elns, a, ns, localName, keyname, length = 0, map;
elname = elements[element.localName];
- if(elname) {
+ if (elname) {
elns = elname[element.namespaceURI];
- if(elns) {
- length = elns.length
+ if (elns) {
+ length = elns.length;
}
}
- for(i = 0;i < length;i += 1) {
+ for (i = 0;i < length;i += 1) {
a = (elns[i]);
ns = a.ns;
localName = a.localname;
stylename = element.getAttributeNS(ns, localName);
- if(stylename) {
+ if (stylename) {
usedStyles = usedStyles || {};
keyname = a.keyname;
- if(usedStyles.hasOwnProperty(keyname)) {
- usedStyles[keyname][stylename] = 1
- }else {
+ if (usedStyles.hasOwnProperty(keyname)) {
+ usedStyles[keyname][stylename] = 1;
+ } else {
map = {};
map[stylename] = 1;
- usedStyles[keyname] = map
+ usedStyles[keyname] = map;
}
}
}
- return usedStyles
+ return usedStyles;
}
function determineUsedStyles(styleUsingElementsRoot, usedStyles) {
var i, e;
determineStylesForNode(styleUsingElementsRoot, usedStyles);
i = styleUsingElementsRoot.firstChild;
- while(i) {
- if(i.nodeType === Node.ELEMENT_NODE) {
+ while (i) {
+ if (i.nodeType === Node.ELEMENT_NODE) {
e = (i);
- determineUsedStyles(e, usedStyles)
+ determineUsedStyles(e, usedStyles);
}
- i = i.nextSibling
+ i = i.nextSibling;
}
}
function StyleDefinition(key, name, family) {
this.key = key;
this.name = name;
this.family = family;
- this.requires = {}
+ this.requires = {};
}
function getStyleDefinition(stylename, stylefamily, knownStyles) {
var styleKey = stylename + '"' + stylefamily, styleDefinition = knownStyles[styleKey];
- if(!styleDefinition) {
- styleDefinition = knownStyles[styleKey] = new StyleDefinition(styleKey, stylename, stylefamily)
+ if (!styleDefinition) {
+ styleDefinition = knownStyles[styleKey] = new StyleDefinition(styleKey, stylename, stylefamily);
}
- return styleDefinition
+ return styleDefinition;
}
function determineDependentStyles(element, styleScope, knownStyles) {
var i, stylename, elname, elns, a, ns, localName, e, referencedStyleFamily, referencedStyleDef, length = 0, newScopeName = element.getAttributeNS(stylens, "name"), newScopeFamily = element.getAttributeNS(stylens, "family");
- if(newScopeName && newScopeFamily) {
- styleScope = getStyleDefinition(newScopeName, newScopeFamily, knownStyles)
+ if (newScopeName && newScopeFamily) {
+ styleScope = getStyleDefinition(newScopeName, newScopeFamily, knownStyles);
}
- if(styleScope) {
+ if (styleScope) {
elname = elements[element.localName];
- if(elname) {
+ if (elname) {
elns = elname[element.namespaceURI];
- if(elns) {
- length = elns.length
+ if (elns) {
+ length = elns.length;
}
}
- for(i = 0;i < length;i += 1) {
+ for (i = 0;i < length;i += 1) {
a = (elns[i]);
ns = a.ns;
localName = a.localname;
stylename = element.getAttributeNS(ns, localName);
- if(stylename) {
+ if (stylename) {
referencedStyleFamily = a.keyname;
referencedStyleDef = getStyleDefinition(stylename, referencedStyleFamily, knownStyles);
- styleScope.requires[referencedStyleDef.key] = referencedStyleDef
+ styleScope.requires[referencedStyleDef.key] = referencedStyleDef;
}
}
}
e = element.firstElementChild;
- while(e) {
+ while (e) {
determineDependentStyles(e, styleScope, knownStyles);
- e = e.nextElementSibling
+ e = e.nextElementSibling;
}
- return knownStyles
+ return knownStyles;
}
function inverse() {
var i, l, keyname, list, item, e = {}, map, array, en, ens;
- for(keyname in elementstyles) {
- if(elementstyles.hasOwnProperty(keyname)) {
+ for (keyname in elementstyles) {
+ if (elementstyles.hasOwnProperty(keyname)) {
list = elementstyles[keyname];
l = list.length;
- for(i = 0;i < l;i += 1) {
+ for (i = 0;i < l;i += 1) {
item = list[i];
en = item.en;
ens = item.ens;
- if(e.hasOwnProperty(en)) {
- map = e[en]
- }else {
- e[en] = map = {}
+ if (e.hasOwnProperty(en)) {
+ map = e[en];
+ } else {
+ e[en] = map = {};
}
- if(map.hasOwnProperty(ens)) {
- array = map[ens]
- }else {
- map[ens] = array = []
+ if (map.hasOwnProperty(ens)) {
+ array = map[ens];
+ } else {
+ map[ens] = array = [];
}
- array.push({ns:item.ans, localname:item.a, keyname:keyname})
+ array.push({ns:item.ans, localname:item.a, keyname:keyname});
}
}
}
- return e
+ return e;
}
function mergeRequiredStyles(styleDependency, usedStyles) {
var family = usedStyles[styleDependency.family];
- if(!family) {
- family = usedStyles[styleDependency.family] = {}
+ if (!family) {
+ family = usedStyles[styleDependency.family] = {};
}
family[styleDependency.name] = 1;
Object.keys((styleDependency.requires)).forEach(function(requiredStyleKey) {
- mergeRequiredStyles((styleDependency.requires[requiredStyleKey]), usedStyles)
- })
+ mergeRequiredStyles((styleDependency.requires[requiredStyleKey]), usedStyles);
+ });
}
function mergeUsedAutomaticStyles(automaticStylesRoot, usedStyles) {
var automaticStyles = determineDependentStyles(automaticStylesRoot, null, {});
Object.keys(automaticStyles).forEach(function(styleKey) {
var automaticStyleDefinition = automaticStyles[styleKey], usedFamily = usedStyles[automaticStyleDefinition.family];
- if(usedFamily && usedFamily.hasOwnProperty(automaticStyleDefinition.name)) {
- mergeRequiredStyles(automaticStyleDefinition, usedStyles)
+ if (usedFamily && usedFamily.hasOwnProperty(automaticStyleDefinition.name)) {
+ mergeRequiredStyles(automaticStyleDefinition, usedStyles);
}
- })
+ });
}
function collectUsedFontFaces(usedFontFaceDeclMap, styleElement) {
var localNames = ["font-name", "font-name-asian", "font-name-complex"], e, currentElement;
function collectByAttribute(localName) {
var fontFaceName = currentElement.getAttributeNS(stylens, localName);
- if(fontFaceName) {
- usedFontFaceDeclMap[fontFaceName] = true
+ if (fontFaceName) {
+ usedFontFaceDeclMap[fontFaceName] = true;
}
}
e = styleElement && styleElement.firstElementChild;
- while(e) {
+ while (e) {
currentElement = e;
localNames.forEach(collectByAttribute);
collectUsedFontFaces(usedFontFaceDeclMap, currentElement);
- e = e.nextElementSibling
+ e = e.nextElementSibling;
}
}
this.collectUsedFontFaces = collectUsedFontFaces;
@@ -4692,16 +6264,16 @@ odf.StyleInfo = function StyleInfo() {
var localNames = ["font-name", "font-name-asian", "font-name-complex"], e, currentElement;
function changeFontFaceNameByAttribute(localName) {
var fontFaceName = currentElement.getAttributeNS(stylens, localName);
- if(fontFaceName && fontFaceNameChangeMap.hasOwnProperty(fontFaceName)) {
- currentElement.setAttributeNS(stylens, "style:" + localName, fontFaceNameChangeMap[fontFaceName])
+ if (fontFaceName && fontFaceNameChangeMap.hasOwnProperty(fontFaceName)) {
+ currentElement.setAttributeNS(stylens, "style:" + localName, fontFaceNameChangeMap[fontFaceName]);
}
}
e = styleElement && styleElement.firstElementChild;
- while(e) {
+ while (e) {
currentElement = e;
localNames.forEach(changeFontFaceNameByAttribute);
changeFontFaceNames(currentElement, fontFaceNameChangeMap);
- e = e.nextElementSibling
+ e = e.nextElementSibling;
}
}
this.changeFontFaceNames = changeFontFaceNames;
@@ -4709,251 +6281,233 @@ odf.StyleInfo = function StyleInfo() {
var usedStyles = {};
this.uses = function(element) {
var localName = element.localName, name = element.getAttributeNS(drawns, "name") || element.getAttributeNS(stylens, "name"), keyName, map;
- if(localName === "style") {
- keyName = element.getAttributeNS(stylens, "family")
- }else {
- if(element.namespaceURI === numberns) {
- keyName = "data"
- }else {
- keyName = localName
+ if (localName === "style") {
+ keyName = element.getAttributeNS(stylens, "family");
+ } else {
+ if (element.namespaceURI === numberns) {
+ keyName = "data";
+ } else {
+ keyName = localName;
}
}
map = usedStyles[keyName];
- return map ? map[name] > 0 : false
+ return map ? map[name] > 0 : false;
};
determineUsedStyles(styleUsingElementsRoot, usedStyles);
- if(automaticStylesRoot) {
- mergeUsedAutomaticStyles(automaticStylesRoot, usedStyles)
+ if (automaticStylesRoot) {
+ mergeUsedAutomaticStyles(automaticStylesRoot, usedStyles);
+ }
+ };
+ function getStyleName(family, element) {
+ var stylename, i, map = elements[element.localName];
+ if (map) {
+ map = map[element.namespaceURI];
+ if (map) {
+ for (i = 0;i < map.length;i += 1) {
+ if (map[i].keyname === family) {
+ map = map[i];
+ if (element.hasAttributeNS(map.ns, map.localname)) {
+ stylename = element.getAttributeNS(map.ns, map.localname);
+ break;
+ }
+ }
+ }
+ }
}
- };
+ return stylename;
+ }
+ this.getStyleName = getStyleName;
this.hasDerivedStyles = hasDerivedStyles;
this.prefixStyleNames = prefixStyleNames;
this.removePrefixFromStyleNames = removePrefixFromStyleNames;
this.determineStylesForNode = determineStylesForNode;
- elements = inverse()
+ elements = inverse();
};
-if(typeof Object.create !== "function") {
+if (typeof Object.create !== "function") {
Object["create"] = function(o) {
var F = function() {
};
F.prototype = o;
- return new F
- }
+ return new F;
+ };
}
xmldom.LSSerializer = function LSSerializer() {
var self = this;
function Namespaces(nsmap) {
function invertMap(map) {
var m = {}, i;
- for(i in map) {
- if(map.hasOwnProperty(i)) {
- m[map[i]] = i
+ for (i in map) {
+ if (map.hasOwnProperty(i)) {
+ m[map[i]] = i;
}
}
- return m
+ return m;
}
var current = nsmap || {}, currentrev = invertMap(nsmap), levels = [current], levelsrev = [currentrev], level = 0;
this.push = function() {
level += 1;
current = levels[level] = Object.create(current);
- currentrev = levelsrev[level] = Object.create(currentrev)
+ currentrev = levelsrev[level] = Object.create(currentrev);
};
this.pop = function() {
levels.pop();
levelsrev.pop();
level -= 1;
current = levels[level];
- currentrev = levelsrev[level]
+ currentrev = levelsrev[level];
};
this.getLocalNamespaceDefinitions = function() {
- return currentrev
+ return currentrev;
};
this.getQName = function(node) {
var ns = node.namespaceURI, i = 0, p;
- if(!ns) {
- return node.localName
+ if (!ns) {
+ return node.localName;
}
p = currentrev[ns];
- if(p) {
- return p + ":" + node.localName
+ if (p) {
+ return p + ":" + node.localName;
}
do {
- if(p || !node.prefix) {
+ if (p || !node.prefix) {
p = "ns" + i;
- i += 1
- }else {
- p = node.prefix
+ i += 1;
+ } else {
+ p = node.prefix;
}
- if(current[p] === ns) {
- break
+ if (current[p] === ns) {
+ break;
}
- if(!current[p]) {
+ if (!current[p]) {
current[p] = ns;
currentrev[ns] = p;
- break
+ break;
}
- p = null
- }while(p === null);
- return p + ":" + node.localName
- }
+ p = null;
+ } while (p === null);
+ return p + ":" + node.localName;
+ };
}
function escapeContent(value) {
- return value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/'/g, "&apos;").replace(/"/g, "&quot;")
+ return value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/'/g, "&apos;").replace(/"/g, "&quot;");
}
function serializeAttribute(qname, attr) {
var escapedValue = typeof attr.value === "string" ? escapeContent(attr.value) : attr.value, s = qname + '="' + escapedValue + '"';
- return s
+ return s;
}
function startElement(ns, qname, element) {
var s = "", atts = (element.attributes), length, i, attr, attstr = "", accept, prefix, nsmap;
s += "<" + qname;
length = atts.length;
- for(i = 0;i < length;i += 1) {
+ for (i = 0;i < length;i += 1) {
attr = (atts.item(i));
- if(attr.namespaceURI !== "http://www.w3.org/2000/xmlns/") {
+ if (attr.namespaceURI !== "http://www.w3.org/2000/xmlns/") {
accept = self.filter ? self.filter.acceptNode(attr) : NodeFilter.FILTER_ACCEPT;
- if(accept === NodeFilter.FILTER_ACCEPT) {
- attstr += " " + serializeAttribute(ns.getQName(attr), attr)
+ if (accept === NodeFilter.FILTER_ACCEPT) {
+ attstr += " " + serializeAttribute(ns.getQName(attr), attr);
}
}
}
nsmap = ns.getLocalNamespaceDefinitions();
- for(i in nsmap) {
- if(nsmap.hasOwnProperty(i)) {
+ for (i in nsmap) {
+ if (nsmap.hasOwnProperty(i)) {
prefix = nsmap[i];
- if(!prefix) {
- s += ' xmlns="' + i + '"'
- }else {
- if(prefix !== "xmlns") {
- s += " xmlns:" + nsmap[i] + '="' + i + '"'
+ if (!prefix) {
+ s += ' xmlns="' + i + '"';
+ } else {
+ if (prefix !== "xmlns") {
+ s += " xmlns:" + nsmap[i] + '="' + i + '"';
}
}
}
}
s += attstr + ">";
- return s
+ return s;
}
function serializeNode(ns, node) {
var s = "", accept = self.filter ? self.filter.acceptNode(node) : NodeFilter.FILTER_ACCEPT, child, qname;
- if(accept === NodeFilter.FILTER_ACCEPT && node.nodeType === Node.ELEMENT_NODE) {
+ if (accept === NodeFilter.FILTER_ACCEPT && node.nodeType === Node.ELEMENT_NODE) {
ns.push();
qname = ns.getQName(node);
- s += startElement(ns, qname, node)
+ s += startElement(ns, qname, node);
}
- if(accept === NodeFilter.FILTER_ACCEPT || accept === NodeFilter.FILTER_SKIP) {
+ if (accept === NodeFilter.FILTER_ACCEPT || accept === NodeFilter.FILTER_SKIP) {
child = node.firstChild;
- while(child) {
+ while (child) {
s += serializeNode(ns, child);
- child = child.nextSibling
+ child = child.nextSibling;
}
- if(node.nodeValue) {
- s += escapeContent(node.nodeValue)
+ if (node.nodeValue) {
+ s += escapeContent(node.nodeValue);
}
}
- if(qname) {
+ if (qname) {
s += "</" + qname + ">";
- ns.pop()
+ ns.pop();
}
- return s
+ return s;
}
this.filter = null;
this.writeToString = function(node, nsmap) {
- if(!node) {
- return""
+ if (!node) {
+ return "";
}
var ns = new Namespaces(nsmap);
- return serializeNode(ns, node)
- }
+ return serializeNode(ns, node);
+ };
};
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
(function() {
- var styleInfo = new odf.StyleInfo, domUtils = new core.DomUtils, officens = "urn:oasis:names:tc:opendocument:xmlns:office:1.0", manifestns = "urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", webodfns = "urn:webodf:names:scope", stylens = odf.Namespaces.stylens, nodeorder = ["meta", "settings", "scripts", "font-face-decls", "styles", "automatic-styles", "master-styles", "body"], automaticStylePrefix = (new Date).getTime() + "_webodf_", base64 = new core.Base64, documentStylesScope = "document-styles",
- documentContentScope = "document-content";
+ var styleInfo = new odf.StyleInfo, domUtils = core.DomUtils, officens = "urn:oasis:names:tc:opendocument:xmlns:office:1.0", manifestns = "urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", webodfns = "urn:webodf:names:scope", stylens = odf.Namespaces.stylens, nodeorder = ["meta", "settings", "scripts", "font-face-decls", "styles", "automatic-styles", "master-styles", "body"], automaticStylePrefix = Date.now() + "_webodf_", base64 = new core.Base64, documentStylesScope = "document-styles", documentContentScope =
+ "document-content";
function getNodePosition(child) {
var i, l = nodeorder.length;
- for(i = 0;i < l;i += 1) {
- if(child.namespaceURI === officens && child.localName === nodeorder[i]) {
- return i
+ for (i = 0;i < l;i += 1) {
+ if (child.namespaceURI === officens && child.localName === nodeorder[i]) {
+ return i;
}
}
- return-1
+ return -1;
}
function OdfStylesFilter(styleUsingElementsRoot, automaticStyles) {
var usedStyleList = new styleInfo.UsedStyleList(styleUsingElementsRoot, automaticStyles), odfNodeFilter = new odf.OdfNodeFilter;
this.acceptNode = function(node) {
var result = odfNodeFilter.acceptNode(node);
- if(result === NodeFilter.FILTER_ACCEPT && (node.parentNode === automaticStyles && node.nodeType === Node.ELEMENT_NODE)) {
- if(usedStyleList.uses((node))) {
- result = NodeFilter.FILTER_ACCEPT
- }else {
- result = NodeFilter.FILTER_REJECT
+ if (result === NodeFilter.FILTER_ACCEPT && node.parentNode === automaticStyles && node.nodeType === Node.ELEMENT_NODE) {
+ if (usedStyleList.uses((node))) {
+ result = NodeFilter.FILTER_ACCEPT;
+ } else {
+ result = NodeFilter.FILTER_REJECT;
}
}
- return result
- }
+ return result;
+ };
}
function OdfContentFilter(styleUsingElementsRoot, automaticStyles) {
var odfStylesFilter = new OdfStylesFilter(styleUsingElementsRoot, automaticStyles);
this.acceptNode = function(node) {
var result = odfStylesFilter.acceptNode(node);
- if(result === NodeFilter.FILTER_ACCEPT && (node.parentNode && (node.parentNode.namespaceURI === odf.Namespaces.textns && (node.parentNode.localName === "s" || node.parentNode.localName === "tab")))) {
- result = NodeFilter.FILTER_REJECT
+ if (result === NodeFilter.FILTER_ACCEPT && node.parentNode && node.parentNode.namespaceURI === odf.Namespaces.textns && (node.parentNode.localName === "s" || node.parentNode.localName === "tab")) {
+ result = NodeFilter.FILTER_REJECT;
}
- return result
- }
+ return result;
+ };
}
function setChild(node, child) {
- if(!child) {
- return
+ if (!child) {
+ return;
}
var childpos = getNodePosition(child), pos, c = node.firstChild;
- if(childpos === -1) {
- return
+ if (childpos === -1) {
+ return;
}
- while(c) {
+ while (c) {
pos = getNodePosition(c);
- if(pos !== -1 && pos > childpos) {
- break
+ if (pos !== -1 && pos > childpos) {
+ break;
}
- c = c.nextSibling
+ c = c.nextSibling;
}
- node.insertBefore(child, c)
+ node.insertBefore(child, c);
}
odf.ODFElement = function ODFElement() {
};
@@ -4991,226 +6545,227 @@ xmldom.LSSerializer = function LSSerializer() {
this.state = this.EMPTY;
this.data = "";
this.load = function() {
- if(zip === null) {
- return
+ if (zip === null) {
+ return;
}
this.mimetype = mimetype;
zip.loadAsDataURL(name, mimetype, function(err, url) {
- if(err) {
- runtime.log(err)
+ if (err) {
+ runtime.log(err);
}
self.url = url;
- if(self.onchange) {
- self.onchange(self)
+ if (self.onchange) {
+ self.onchange(self);
}
- if(self.onstatereadychange) {
- self.onstatereadychange(self)
+ if (self.onstatereadychange) {
+ self.onstatereadychange(self);
}
- })
- }
+ });
+ };
};
odf.OdfPart.prototype.load = function() {
};
odf.OdfPart.prototype.getUrl = function() {
- if(this.data) {
- return"data:;base64," + base64.toBase64(this.data)
+ if (this.data) {
+ return "data:;base64," + base64.toBase64(this.data);
}
- return null
+ return null;
};
- odf.OdfContainer = function OdfContainer(url, onstatereadychange) {
- var self = this, zip, partMimetypes = {}, contentElement;
+ odf.OdfContainer = function OdfContainer(urlOrType, onstatereadychange) {
+ var self = this, zip, partMimetypes = {}, contentElement, url = "";
this.onstatereadychange = onstatereadychange;
this.onchange = null;
this.state = null;
this.rootElement;
function removeProcessingInstructions(element) {
var n = element.firstChild, next, e;
- while(n) {
+ while (n) {
next = n.nextSibling;
- if(n.nodeType === Node.ELEMENT_NODE) {
+ if (n.nodeType === Node.ELEMENT_NODE) {
e = (n);
- removeProcessingInstructions(e)
- }else {
- if(n.nodeType === Node.PROCESSING_INSTRUCTION_NODE) {
- element.removeChild(n)
+ removeProcessingInstructions(e);
+ } else {
+ if (n.nodeType === Node.PROCESSING_INSTRUCTION_NODE) {
+ element.removeChild(n);
}
}
- n = next
+ n = next;
}
}
function linkAnnotationStartAndEndElements(rootElement) {
var document = rootElement.ownerDocument, annotationStarts = {}, n, name, annotationStart, nodeIterator = document.createNodeIterator(rootElement, NodeFilter.SHOW_ELEMENT, null, false);
n = (nodeIterator.nextNode());
- while(n) {
- if(n.namespaceURI === officens) {
- if(n.localName === "annotation") {
+ while (n) {
+ if (n.namespaceURI === officens) {
+ if (n.localName === "annotation") {
name = n.getAttributeNS(officens, "name");
- if(name) {
- if(annotationStarts.hasOwnProperty(name)) {
- runtime.log("Warning: annotation name used more than once with <office:annotation/>: '" + name + "'")
- }else {
- annotationStarts[name] = n
+ if (name) {
+ if (annotationStarts.hasOwnProperty(name)) {
+ runtime.log("Warning: annotation name used more than once with <office:annotation/>: '" + name + "'");
+ } else {
+ annotationStarts[name] = n;
}
}
- }else {
- if(n.localName === "annotation-end") {
+ } else {
+ if (n.localName === "annotation-end") {
name = n.getAttributeNS(officens, "name");
- if(name) {
- if(annotationStarts.hasOwnProperty(name)) {
+ if (name) {
+ if (annotationStarts.hasOwnProperty(name)) {
annotationStart = (annotationStarts[name]);
- if(!annotationStart.annotationEndElement) {
- annotationStart.annotationEndElement = n
- }else {
- runtime.log("Warning: annotation name used more than once with <office:annotation-end/>: '" + name + "'")
+ if (!annotationStart.annotationEndElement) {
+ annotationStart.annotationEndElement = n;
+ } else {
+ runtime.log("Warning: annotation name used more than once with <office:annotation-end/>: '" + name + "'");
}
- }else {
- runtime.log("Warning: annotation end without an annotation start, name: '" + name + "'")
+ } else {
+ runtime.log("Warning: annotation end without an annotation start, name: '" + name + "'");
}
- }else {
- runtime.log("Warning: annotation end without a name found")
+ } else {
+ runtime.log("Warning: annotation end without a name found");
}
}
}
}
- n = (nodeIterator.nextNode())
+ n = (nodeIterator.nextNode());
}
}
function setAutomaticStylesScope(stylesRootElement, scope) {
var n = stylesRootElement && stylesRootElement.firstChild;
- while(n) {
- if(n.nodeType === Node.ELEMENT_NODE) {
- (n).setAttributeNS(webodfns, "scope", scope)
+ while (n) {
+ if (n.nodeType === Node.ELEMENT_NODE) {
+ (n).setAttributeNS(webodfns, "scope", scope);
}
- n = n.nextSibling
+ n = n.nextSibling;
}
}
function getEnsuredMetaElement() {
var root = self.rootElement, meta = root.meta;
- if(!meta) {
+ if (!meta) {
root.meta = meta = document.createElementNS(officens, "meta");
- setChild(root, meta)
+ setChild(root, meta);
}
- return meta
+ return meta;
}
- function getMetaData(metadataNs, metadataLocalName) {
+ function getMetadata(metadataNs, metadataLocalName) {
var node = self.rootElement.meta, textNode;
node = node && node.firstChild;
- while(node && (node.namespaceURI !== metadataNs || node.localName !== metadataLocalName)) {
- node = node.nextSibling
+ while (node && (node.namespaceURI !== metadataNs || node.localName !== metadataLocalName)) {
+ node = node.nextSibling;
}
node = node && node.firstChild;
- while(node && node.nodeType !== Node.TEXT_NODE) {
- node = node.nextSibling
+ while (node && node.nodeType !== Node.TEXT_NODE) {
+ node = node.nextSibling;
}
- if(node) {
+ if (node) {
textNode = (node);
- return textNode.data
+ return textNode.data;
}
- return null
+ return null;
}
+ this.getMetadata = getMetadata;
function unusedKey(key, map1, map2) {
var i = 0, postFixedKey;
key = key.replace(/\d+$/, "");
postFixedKey = key;
- while(map1.hasOwnProperty(postFixedKey) || map2.hasOwnProperty(postFixedKey)) {
+ while (map1.hasOwnProperty(postFixedKey) || map2.hasOwnProperty(postFixedKey)) {
i += 1;
- postFixedKey = key + i
+ postFixedKey = key + i;
}
- return postFixedKey
+ return postFixedKey;
}
function mapByFontFaceName(fontFaceDecls) {
var fn, result = {}, fontname;
fn = fontFaceDecls.firstChild;
- while(fn) {
- if(fn.nodeType === Node.ELEMENT_NODE && (fn.namespaceURI === stylens && fn.localName === "font-face")) {
+ while (fn) {
+ if (fn.nodeType === Node.ELEMENT_NODE && fn.namespaceURI === stylens && fn.localName === "font-face") {
fontname = (fn).getAttributeNS(stylens, "name");
- result[fontname] = fn
+ result[fontname] = fn;
}
- fn = fn.nextSibling
+ fn = fn.nextSibling;
}
- return result
+ return result;
}
function mergeFontFaceDecls(targetFontFaceDeclsRootElement, sourceFontFaceDeclsRootElement) {
var e, s, fontFaceName, newFontFaceName, targetFontFaceDeclsMap, sourceFontFaceDeclsMap, fontFaceNameChangeMap = {};
targetFontFaceDeclsMap = mapByFontFaceName(targetFontFaceDeclsRootElement);
sourceFontFaceDeclsMap = mapByFontFaceName(sourceFontFaceDeclsRootElement);
e = sourceFontFaceDeclsRootElement.firstElementChild;
- while(e) {
+ while (e) {
s = e.nextElementSibling;
- if(e.namespaceURI === stylens && e.localName === "font-face") {
+ if (e.namespaceURI === stylens && e.localName === "font-face") {
fontFaceName = e.getAttributeNS(stylens, "name");
- if(targetFontFaceDeclsMap.hasOwnProperty(fontFaceName)) {
- if(!e.isEqualNode(targetFontFaceDeclsMap[fontFaceName])) {
+ if (targetFontFaceDeclsMap.hasOwnProperty(fontFaceName)) {
+ if (!e.isEqualNode(targetFontFaceDeclsMap[fontFaceName])) {
newFontFaceName = unusedKey(fontFaceName, targetFontFaceDeclsMap, sourceFontFaceDeclsMap);
e.setAttributeNS(stylens, "style:name", newFontFaceName);
targetFontFaceDeclsRootElement.appendChild(e);
targetFontFaceDeclsMap[newFontFaceName] = e;
delete sourceFontFaceDeclsMap[fontFaceName];
- fontFaceNameChangeMap[fontFaceName] = newFontFaceName
+ fontFaceNameChangeMap[fontFaceName] = newFontFaceName;
}
- }else {
+ } else {
targetFontFaceDeclsRootElement.appendChild(e);
targetFontFaceDeclsMap[fontFaceName] = e;
- delete sourceFontFaceDeclsMap[fontFaceName]
+ delete sourceFontFaceDeclsMap[fontFaceName];
}
}
- e = s
+ e = s;
}
- return fontFaceNameChangeMap
+ return fontFaceNameChangeMap;
}
function cloneStylesInScope(stylesRootElement, scope) {
var copy = null, e, s, scopeAttrValue;
- if(stylesRootElement) {
+ if (stylesRootElement) {
copy = stylesRootElement.cloneNode(true);
e = copy.firstElementChild;
- while(e) {
+ while (e) {
s = e.nextElementSibling;
scopeAttrValue = e.getAttributeNS(webodfns, "scope");
- if(scopeAttrValue && scopeAttrValue !== scope) {
- copy.removeChild(e)
+ if (scopeAttrValue && scopeAttrValue !== scope) {
+ copy.removeChild(e);
}
- e = s
+ e = s;
}
}
- return copy
+ return copy;
}
function cloneFontFaceDeclsUsedInStyles(fontFaceDeclsRootElement, stylesRootElementList) {
var e, nextSibling, fontFaceName, copy = null, usedFontFaceDeclMap = {};
- if(fontFaceDeclsRootElement) {
+ if (fontFaceDeclsRootElement) {
stylesRootElementList.forEach(function(stylesRootElement) {
- styleInfo.collectUsedFontFaces(usedFontFaceDeclMap, stylesRootElement)
+ styleInfo.collectUsedFontFaces(usedFontFaceDeclMap, stylesRootElement);
});
copy = fontFaceDeclsRootElement.cloneNode(true);
e = copy.firstElementChild;
- while(e) {
+ while (e) {
nextSibling = e.nextElementSibling;
fontFaceName = e.getAttributeNS(stylens, "name");
- if(!usedFontFaceDeclMap[fontFaceName]) {
- copy.removeChild(e)
+ if (!usedFontFaceDeclMap[fontFaceName]) {
+ copy.removeChild(e);
}
- e = nextSibling
+ e = nextSibling;
}
}
- return copy
+ return copy;
}
function importRootNode(xmldoc) {
var doc = self.rootElement.ownerDocument, node;
- if(xmldoc) {
+ if (xmldoc) {
removeProcessingInstructions(xmldoc.documentElement);
try {
- node = (doc.importNode(xmldoc.documentElement, true))
- }catch(ignore) {
+ node = (doc.importNode(xmldoc.documentElement, true));
+ } catch (ignore) {
}
}
- return node
+ return node;
}
function setState(state) {
self.state = state;
- if(self.onchange) {
- self.onchange(self)
+ if (self.onchange) {
+ self.onchange(self);
}
- if(self.onstatereadychange) {
- self.onstatereadychange(self)
+ if (self.onstatereadychange) {
+ self.onstatereadychange(self);
}
}
function setRootElement(root) {
@@ -5222,22 +6777,24 @@ xmldom.LSSerializer = function LSSerializer() {
root.masterStyles = domUtils.getDirectChild(root, officens, "master-styles");
root.body = domUtils.getDirectChild(root, officens, "body");
root.meta = domUtils.getDirectChild(root, officens, "meta");
- linkAnnotationStartAndEndElements(root)
+ root.settings = domUtils.getDirectChild(root, officens, "settings");
+ root.scripts = domUtils.getDirectChild(root, officens, "scripts");
+ linkAnnotationStartAndEndElements(root);
}
function handleFlatXml(xmldoc) {
var root = importRootNode(xmldoc);
- if(!root || (root.localName !== "document" || root.namespaceURI !== officens)) {
+ if (!root || root.localName !== "document" || root.namespaceURI !== officens) {
setState(OdfContainer.INVALID);
- return
+ return;
}
setRootElement((root));
- setState(OdfContainer.DONE)
+ setState(OdfContainer.DONE);
}
function handleStylesXml(xmldoc) {
var node = importRootNode(xmldoc), root = self.rootElement, n;
- if(!node || (node.localName !== "document-styles" || node.namespaceURI !== officens)) {
+ if (!node || node.localName !== "document-styles" || node.namespaceURI !== officens) {
setState(OdfContainer.INVALID);
- return
+ return;
}
root.fontFaceDecls = domUtils.getDirectChild(node, officens, "font-face-decls");
setChild(root, root.fontFaceDecls);
@@ -5251,139 +6808,184 @@ xmldom.LSSerializer = function LSSerializer() {
node = domUtils.getDirectChild(node, officens, "master-styles");
root.masterStyles = node || xmldoc.createElementNS(officens, "master-styles");
setChild(root, root.masterStyles);
- styleInfo.prefixStyleNames(root.automaticStyles, automaticStylePrefix, root.masterStyles)
+ styleInfo.prefixStyleNames(root.automaticStyles, automaticStylePrefix, root.masterStyles);
}
function handleContentXml(xmldoc) {
var node = importRootNode(xmldoc), root, automaticStyles, fontFaceDecls, fontFaceNameChangeMap, c;
- if(!node || (node.localName !== "document-content" || node.namespaceURI !== officens)) {
+ if (!node || node.localName !== "document-content" || node.namespaceURI !== officens) {
setState(OdfContainer.INVALID);
- return
+ return;
}
root = self.rootElement;
fontFaceDecls = domUtils.getDirectChild(node, officens, "font-face-decls");
- if(root.fontFaceDecls && fontFaceDecls) {
- fontFaceNameChangeMap = mergeFontFaceDecls(root.fontFaceDecls, fontFaceDecls)
- }else {
- if(fontFaceDecls) {
+ if (root.fontFaceDecls && fontFaceDecls) {
+ fontFaceNameChangeMap = mergeFontFaceDecls(root.fontFaceDecls, fontFaceDecls);
+ } else {
+ if (fontFaceDecls) {
root.fontFaceDecls = fontFaceDecls;
- setChild(root, fontFaceDecls)
+ setChild(root, fontFaceDecls);
}
}
automaticStyles = domUtils.getDirectChild(node, officens, "automatic-styles");
setAutomaticStylesScope(automaticStyles, documentContentScope);
- if(fontFaceNameChangeMap) {
- styleInfo.changeFontFaceNames(automaticStyles, fontFaceNameChangeMap)
+ if (fontFaceNameChangeMap) {
+ styleInfo.changeFontFaceNames(automaticStyles, fontFaceNameChangeMap);
}
- if(root.automaticStyles && automaticStyles) {
+ if (root.automaticStyles && automaticStyles) {
c = automaticStyles.firstChild;
- while(c) {
+ while (c) {
root.automaticStyles.appendChild(c);
- c = automaticStyles.firstChild
+ c = automaticStyles.firstChild;
}
- }else {
- if(automaticStyles) {
+ } else {
+ if (automaticStyles) {
root.automaticStyles = automaticStyles;
- setChild(root, automaticStyles)
+ setChild(root, automaticStyles);
}
}
node = domUtils.getDirectChild(node, officens, "body");
- if(node === null) {
- throw"<office:body/> tag is mising.";
+ if (node === null) {
+ throw "<office:body/> tag is mising.";
}
root.body = node;
- setChild(root, root.body)
+ setChild(root, root.body);
}
function handleMetaXml(xmldoc) {
var node = importRootNode(xmldoc), root;
- if(!node || (node.localName !== "document-meta" || node.namespaceURI !== officens)) {
- return
+ if (!node || node.localName !== "document-meta" || node.namespaceURI !== officens) {
+ return;
}
root = self.rootElement;
root.meta = domUtils.getDirectChild(node, officens, "meta");
- setChild(root, root.meta)
+ setChild(root, root.meta);
}
function handleSettingsXml(xmldoc) {
var node = importRootNode(xmldoc), root;
- if(!node || (node.localName !== "document-settings" || node.namespaceURI !== officens)) {
- return
+ if (!node || node.localName !== "document-settings" || node.namespaceURI !== officens) {
+ return;
}
root = self.rootElement;
root.settings = domUtils.getDirectChild(node, officens, "settings");
- setChild(root, root.settings)
+ setChild(root, root.settings);
}
function handleManifestXml(xmldoc) {
var node = importRootNode(xmldoc), root, e;
- if(!node || (node.localName !== "manifest" || node.namespaceURI !== manifestns)) {
- return
+ if (!node || node.localName !== "manifest" || node.namespaceURI !== manifestns) {
+ return;
}
root = self.rootElement;
root.manifest = (node);
e = root.manifest.firstElementChild;
- while(e) {
- if(e.localName === "file-entry" && e.namespaceURI === manifestns) {
- partMimetypes[e.getAttributeNS(manifestns, "full-path")] = e.getAttributeNS(manifestns, "media-type")
+ while (e) {
+ if (e.localName === "file-entry" && e.namespaceURI === manifestns) {
+ partMimetypes[e.getAttributeNS(manifestns, "full-path")] = e.getAttributeNS(manifestns, "media-type");
+ }
+ e = e.nextElementSibling;
+ }
+ }
+ function removeElements(xmldoc, localName, allowedNamespaces) {
+ var elements = domUtils.getElementsByTagName(xmldoc, localName), element, i;
+ for (i = 0;i < elements.length;i += 1) {
+ element = elements[i];
+ if (!allowedNamespaces.hasOwnProperty(element.namespaceURI)) {
+ element.parentNode.removeChild(element);
+ }
+ }
+ }
+ function removeDangerousElements(xmldoc) {
+ removeElements(xmldoc, "script", {"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0":true, "urn:oasis:names:tc:opendocument:xmlns:office:1.0":true, "urn:oasis:names:tc:opendocument:xmlns:table:1.0":true, "urn:oasis:names:tc:opendocument:xmlns:text:1.0":true, "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0":true});
+ removeElements(xmldoc, "style", {"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0":true, "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0":true, "urn:oasis:names:tc:opendocument:xmlns:style:1.0":true});
+ }
+ function removeDangerousAttributes(element) {
+ var e = element.firstElementChild, as = [], i, n, a, atts = element.attributes, l = atts.length;
+ for (i = 0;i < l;i += 1) {
+ a = atts.item(i);
+ n = a.localName.substr(0, 2).toLowerCase();
+ if (a.namespaceURI === null && n === "on") {
+ as.push(a);
}
- e = e.nextElementSibling
+ }
+ l = as.length;
+ for (i = 0;i < l;i += 1) {
+ element.removeAttributeNode(as[i]);
+ }
+ while (e) {
+ removeDangerousAttributes(e);
+ e = e.nextElementSibling;
}
}
function loadNextComponent(remainingComponents) {
var component = remainingComponents.shift();
- if(component) {
+ if (component) {
zip.loadAsDOM(component.path, function(err, xmldoc) {
+ if (xmldoc) {
+ removeDangerousElements(xmldoc);
+ removeDangerousAttributes(xmldoc.documentElement);
+ }
component.handler(xmldoc);
- if(err || self.state === OdfContainer.INVALID) {
- return
+ if (self.state === OdfContainer.INVALID) {
+ if (err) {
+ runtime.log("ERROR: Unable to load " + component.path + " - " + err);
+ } else {
+ runtime.log("ERROR: Unable to load " + component.path);
+ }
+ return;
}
- loadNextComponent(remainingComponents)
- })
- }else {
+ if (err) {
+ runtime.log("DEBUG: Unable to load " + component.path + " - " + err);
+ }
+ loadNextComponent(remainingComponents);
+ });
+ } else {
linkAnnotationStartAndEndElements(self.rootElement);
- setState(OdfContainer.DONE)
+ setState(OdfContainer.DONE);
}
}
function loadComponents() {
var componentOrder = [{path:"styles.xml", handler:handleStylesXml}, {path:"content.xml", handler:handleContentXml}, {path:"meta.xml", handler:handleMetaXml}, {path:"settings.xml", handler:handleSettingsXml}, {path:"META-INF/manifest.xml", handler:handleManifestXml}];
- loadNextComponent(componentOrder)
+ loadNextComponent(componentOrder);
}
function createDocumentElement(name) {
var s = "";
function defineNamespace(prefix, ns) {
- s += " xmlns:" + prefix + '="' + ns + '"'
+ s += " xmlns:" + prefix + '="' + ns + '"';
}
odf.Namespaces.forEachPrefix(defineNamespace);
- return'<?xml version="1.0" encoding="UTF-8"?><office:' + name + " " + s + ' office:version="1.2">'
+ return '<?xml version="1.0" encoding="UTF-8"?><office:' + name + " " + s + ' office:version="1.2">';
}
function serializeMetaXml() {
var serializer = new xmldom.LSSerializer, s = createDocumentElement("document-meta");
serializer.filter = new odf.OdfNodeFilter;
s += serializer.writeToString(self.rootElement.meta, odf.Namespaces.namespaceMap);
s += "</office:document-meta>";
- return s
+ return s;
}
function createManifestEntry(fullPath, mediaType) {
var element = document.createElementNS(manifestns, "manifest:file-entry");
element.setAttributeNS(manifestns, "manifest:full-path", fullPath);
element.setAttributeNS(manifestns, "manifest:media-type", mediaType);
- return element
+ return element;
}
function serializeManifestXml() {
var header = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n', xml = '<manifest:manifest xmlns:manifest="' + manifestns + '" manifest:version="1.2"></manifest:manifest>', manifest = (runtime.parseXML(xml)), manifestRoot = manifest.documentElement, serializer = new xmldom.LSSerializer, fullPath;
- for(fullPath in partMimetypes) {
- if(partMimetypes.hasOwnProperty(fullPath)) {
- manifestRoot.appendChild(createManifestEntry(fullPath, partMimetypes[fullPath]))
+ for (fullPath in partMimetypes) {
+ if (partMimetypes.hasOwnProperty(fullPath)) {
+ manifestRoot.appendChild(createManifestEntry(fullPath, partMimetypes[fullPath]));
}
}
serializer.filter = new odf.OdfNodeFilter;
- return header + serializer.writeToString(manifest, odf.Namespaces.namespaceMap)
+ return header + serializer.writeToString(manifest, odf.Namespaces.namespaceMap);
}
function serializeSettingsXml() {
- var serializer = new xmldom.LSSerializer, s = createDocumentElement("document-settings");
- serializer.filter = new odf.OdfNodeFilter;
- if(self.rootElement.settings.firstElementChild) {
- s += serializer.writeToString(self.rootElement.settings, odf.Namespaces.namespaceMap)
+ var serializer, s = "";
+ if (self.rootElement.settings && self.rootElement.settings.firstElementChild) {
+ serializer = new xmldom.LSSerializer;
+ s = createDocumentElement("document-settings");
+ serializer.filter = new odf.OdfNodeFilter;
+ s += serializer.writeToString(self.rootElement.settings, odf.Namespaces.namespaceMap);
+ s += "</office:document-settings>";
}
- s += "</office:document-settings>";
- return s
+ return s;
}
function serializeStylesXml() {
var fontFaceDecls, automaticStyles, masterStyles, nsmap = odf.Namespaces.namespaceMap, serializer = new xmldom.LSSerializer, s = createDocumentElement("document-styles");
@@ -5397,7 +6999,7 @@ xmldom.LSSerializer = function LSSerializer() {
s += serializer.writeToString(automaticStyles, nsmap);
s += serializer.writeToString(masterStyles, nsmap);
s += "</office:document-styles>";
- return s
+ return s;
}
function serializeContentXml() {
var fontFaceDecls, automaticStyles, nsmap = odf.Namespaces.namespaceMap, serializer = new xmldom.LSSerializer, s = createDocumentElement("document-content");
@@ -5408,84 +7010,110 @@ xmldom.LSSerializer = function LSSerializer() {
s += serializer.writeToString(automaticStyles, nsmap);
s += serializer.writeToString(self.rootElement.body, nsmap);
s += "</office:document-content>";
- return s
+ return s;
}
function createElement(type) {
var original = document.createElementNS(type.namespaceURI, type.localName), method, iface = new type.Type;
- for(method in iface) {
- if(iface.hasOwnProperty(method)) {
- original[method] = iface[method]
+ for (method in iface) {
+ if (iface.hasOwnProperty(method)) {
+ original[method] = iface[method];
}
}
- return original
+ return original;
}
function loadFromXML(url, callback) {
- runtime.loadXML(url, function(err, dom) {
- if(err) {
- callback(err)
- }else {
- handleFlatXml(dom)
+ function handler(err, dom) {
+ if (err) {
+ callback(err);
+ } else {
+ if (!dom) {
+ callback("No DOM was loaded.");
+ } else {
+ removeDangerousElements(dom);
+ removeDangerousAttributes(dom.documentElement);
+ handleFlatXml(dom);
+ }
}
- })
+ }
+ runtime.loadXML(url, handler);
}
this.setRootElement = setRootElement;
this.getContentElement = function() {
var body;
- if(!contentElement) {
+ if (!contentElement) {
body = self.rootElement.body;
- contentElement = domUtils.getDirectChild(body, officens, "text") || (domUtils.getDirectChild(body, officens, "presentation") || domUtils.getDirectChild(body, officens, "spreadsheet"))
+ contentElement = domUtils.getDirectChild(body, officens, "text") || domUtils.getDirectChild(body, officens, "presentation") || domUtils.getDirectChild(body, officens, "spreadsheet");
}
- if(!contentElement) {
- throw"Could not find content element in <office:body/>.";
+ if (!contentElement) {
+ throw "Could not find content element in <office:body/>.";
}
- return contentElement
+ return contentElement;
};
this.getDocumentType = function() {
var content = self.getContentElement();
- return content && content.localName
+ return content && content.localName;
+ };
+ this.isTemplate = function() {
+ var docMimetype = partMimetypes["/"];
+ return docMimetype.substr(-9) === "-template";
+ };
+ this.setIsTemplate = function(isTemplate) {
+ var docMimetype = partMimetypes["/"], oldIsTemplate = docMimetype.substr(-9) === "-template", data;
+ if (isTemplate === oldIsTemplate) {
+ return;
+ }
+ if (isTemplate) {
+ docMimetype = docMimetype + "-template";
+ } else {
+ docMimetype = docMimetype.substr(0, docMimetype.length - 9);
+ }
+ partMimetypes["/"] = docMimetype;
+ data = runtime.byteArrayFromString(docMimetype, "utf8");
+ zip.save("mimetype", data, false, new Date);
};
this.getPart = function(partname) {
- return new odf.OdfPart(partname, partMimetypes[partname], self, zip)
+ return new odf.OdfPart(partname, partMimetypes[partname], self, zip);
};
this.getPartData = function(url, callback) {
- zip.load(url, callback)
+ zip.load(url, callback);
};
function setMetadata(setProperties, removedPropertyNames) {
var metaElement = getEnsuredMetaElement();
- if(setProperties) {
- domUtils.mapKeyValObjOntoNode(metaElement, setProperties, odf.Namespaces.lookupNamespaceURI)
+ if (setProperties) {
+ domUtils.mapKeyValObjOntoNode(metaElement, setProperties, odf.Namespaces.lookupNamespaceURI);
}
- if(removedPropertyNames) {
- domUtils.removeKeyElementsFromNode(metaElement, removedPropertyNames, odf.Namespaces.lookupNamespaceURI)
+ if (removedPropertyNames) {
+ domUtils.removeKeyElementsFromNode(metaElement, removedPropertyNames, odf.Namespaces.lookupNamespaceURI);
}
}
this.setMetadata = setMetadata;
this.incrementEditingCycles = function() {
- var currentValueString = getMetaData(odf.Namespaces.metans, "editing-cycles"), currentCycles = currentValueString ? parseInt(currentValueString, 10) : 0;
- if(isNaN(currentCycles)) {
- currentCycles = 0
+ var currentValueString = getMetadata(odf.Namespaces.metans, "editing-cycles"), currentCycles = currentValueString ? parseInt(currentValueString, 10) : 0;
+ if (isNaN(currentCycles)) {
+ currentCycles = 0;
}
- setMetadata({"meta:editing-cycles":currentCycles + 1}, null)
+ setMetadata({"meta:editing-cycles":currentCycles + 1}, null);
+ return currentCycles + 1;
};
function updateMetadataForSaving() {
var generatorString, window = runtime.getWindow();
- generatorString = "WebODF/" + (String(typeof webodf_version) !== "undefined" ? webodf_version : "FromSource");
- if(window) {
- generatorString = generatorString + " " + window.navigator.userAgent
+ generatorString = "WebODF/" + webodf.Version;
+ if (window) {
+ generatorString = generatorString + " " + window.navigator.userAgent;
}
- setMetadata({"meta:generator":generatorString}, null)
+ setMetadata({"meta:generator":generatorString}, null);
}
- function createEmptyTextDocument() {
- var emptyzip = new core.Zip("", null), data = runtime.byteArrayFromString("application/vnd.oasis.opendocument.text", "utf8"), root = self.rootElement, text = document.createElementNS(officens, "text");
+ function createEmptyDocument(type, isTemplate) {
+ var emptyzip = new core.Zip("", null), mimetype = "application/vnd.oasis.opendocument." + type + (isTemplate === true ? "-template" : ""), data = runtime.byteArrayFromString(mimetype, "utf8"), root = self.rootElement, content = document.createElementNS(officens, type);
emptyzip.save("mimetype", data, false, new Date);
function addToplevelElement(memberName, realLocalName) {
var element;
- if(!realLocalName) {
- realLocalName = memberName
+ if (!realLocalName) {
+ realLocalName = memberName;
}
element = document.createElementNS(officens, realLocalName);
root[memberName] = element;
- root.appendChild(element)
+ root.appendChild(element);
}
addToplevelElement("meta");
addToplevelElement("settings");
@@ -5495,20 +7123,25 @@ xmldom.LSSerializer = function LSSerializer() {
addToplevelElement("automaticStyles", "automatic-styles");
addToplevelElement("masterStyles", "master-styles");
addToplevelElement("body");
- root.body.appendChild(text);
- partMimetypes["/"] = "application/vnd.oasis.opendocument.text";
+ root.body.appendChild(content);
+ partMimetypes["/"] = mimetype;
partMimetypes["settings.xml"] = "text/xml";
partMimetypes["meta.xml"] = "text/xml";
partMimetypes["styles.xml"] = "text/xml";
partMimetypes["content.xml"] = "text/xml";
setState(OdfContainer.DONE);
- return emptyzip
+ return emptyzip;
}
function fillZip() {
- var data, date = new Date;
+ var data, date = new Date, settings;
+ settings = serializeSettingsXml();
+ if (settings) {
+ data = runtime.byteArrayFromString(settings, "utf8");
+ zip.save("settings.xml", data, true, date);
+ } else {
+ zip.remove("settings.xml");
+ }
updateMetadataForSaving();
- data = runtime.byteArrayFromString(serializeSettingsXml(), "utf8");
- zip.save("settings.xml", data, true, date);
data = runtime.byteArrayFromString(serializeMetaXml(), "utf8");
zip.save("meta.xml", data, true, date);
data = runtime.byteArrayFromString(serializeStylesXml(), "utf8");
@@ -5516,57 +7149,78 @@ xmldom.LSSerializer = function LSSerializer() {
data = runtime.byteArrayFromString(serializeContentXml(), "utf8");
zip.save("content.xml", data, true, date);
data = runtime.byteArrayFromString(serializeManifestXml(), "utf8");
- zip.save("META-INF/manifest.xml", data, true, date)
+ zip.save("META-INF/manifest.xml", data, true, date);
}
function createByteArray(successCallback, errorCallback) {
fillZip();
- zip.createByteArray(successCallback, errorCallback)
+ zip.createByteArray(successCallback, errorCallback);
}
this.createByteArray = createByteArray;
function saveAs(newurl, callback) {
fillZip();
zip.writeAs(newurl, function(err) {
- callback(err)
- })
+ callback(err);
+ });
}
this.saveAs = saveAs;
this.save = function(callback) {
- saveAs(url, callback)
+ saveAs(url, callback);
};
this.getUrl = function() {
- return url
+ return url;
};
this.setBlob = function(filename, mimetype, content) {
var data = base64.convertBase64ToByteArray(content), date = new Date;
zip.save(filename, data, false, date);
- if(partMimetypes.hasOwnProperty(filename)) {
- runtime.log(filename + " has been overwritten.")
+ if (partMimetypes.hasOwnProperty(filename)) {
+ runtime.log(filename + " has been overwritten.");
}
- partMimetypes[filename] = mimetype
+ partMimetypes[filename] = mimetype;
};
this.removeBlob = function(filename) {
var foundAndRemoved = zip.remove(filename);
runtime.assert(foundAndRemoved, "file is not found: " + filename);
- delete partMimetypes[filename]
+ delete partMimetypes[filename];
};
this.state = OdfContainer.LOADING;
this.rootElement = (createElement({Type:odf.ODFDocumentElement, namespaceURI:odf.ODFDocumentElement.namespaceURI, localName:odf.ODFDocumentElement.localName}));
- if(url) {
- zip = new core.Zip(url, function(err, zipobject) {
- zip = zipobject;
- if(err) {
- loadFromXML(url, function(xmlerr) {
- if(err) {
- zip.error = err + "\n" + xmlerr;
- setState(OdfContainer.INVALID)
+ if (urlOrType === odf.OdfContainer.DocumentType.TEXT) {
+ zip = createEmptyDocument("text");
+ } else {
+ if (urlOrType === odf.OdfContainer.DocumentType.TEXT_TEMPLATE) {
+ zip = createEmptyDocument("text", true);
+ } else {
+ if (urlOrType === odf.OdfContainer.DocumentType.PRESENTATION) {
+ zip = createEmptyDocument("presentation");
+ } else {
+ if (urlOrType === odf.OdfContainer.DocumentType.PRESENTATION_TEMPLATE) {
+ zip = createEmptyDocument("presentation", true);
+ } else {
+ if (urlOrType === odf.OdfContainer.DocumentType.SPREADSHEET) {
+ zip = createEmptyDocument("spreadsheet");
+ } else {
+ if (urlOrType === odf.OdfContainer.DocumentType.SPREADSHEET_TEMPLATE) {
+ zip = createEmptyDocument("spreadsheet", true);
+ } else {
+ url = (urlOrType);
+ zip = new core.Zip(url, function(err, zipobject) {
+ zip = zipobject;
+ if (err) {
+ loadFromXML(url, function(xmlerr) {
+ if (err) {
+ zip.error = err + "\n" + xmlerr;
+ setState(OdfContainer.INVALID);
+ }
+ });
+ } else {
+ loadComponents();
+ }
+ });
+ }
}
- })
- }else {
- loadComponents()
+ }
}
- })
- }else {
- zip = createEmptyTextDocument()
+ }
}
};
odf.OdfContainer.EMPTY = 0;
@@ -5576,585 +7230,10 @@ xmldom.LSSerializer = function LSSerializer() {
odf.OdfContainer.SAVING = 4;
odf.OdfContainer.MODIFIED = 5;
odf.OdfContainer.getContainer = function(url) {
- return new odf.OdfContainer(url, null)
+ return new odf.OdfContainer(url, null);
};
- return odf.OdfContainer
})();
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-odf.OdfUtils = function OdfUtils() {
- var textns = odf.Namespaces.textns, drawns = odf.Namespaces.drawns, xlinkns = odf.Namespaces.xlinkns, whitespaceOnly = /^\s*$/, domUtils = new core.DomUtils;
- function isImage(e) {
- var name = e && e.localName;
- return name === "image" && e.namespaceURI === drawns
- }
- this.isImage = isImage;
- function isCharacterFrame(e) {
- return e !== null && (e.nodeType === Node.ELEMENT_NODE && (e.localName === "frame" && (e.namespaceURI === drawns && (e).getAttributeNS(textns, "anchor-type") === "as-char")))
- }
- this.isCharacterFrame = isCharacterFrame;
- function isAnnotation(e) {
- var name = e && e.localName;
- return name === "annotation" && e.namespaceURI === odf.Namespaces.officens
- }
- function isAnnotationWrapper(e) {
- var name = e && e.localName;
- return name === "div" && (e).className === "annotationWrapper"
- }
- function isInlineRoot(e) {
- return isAnnotation(e) || isAnnotationWrapper(e)
- }
- this.isInlineRoot = isInlineRoot;
- this.isTextSpan = function(e) {
- var name = e && e.localName;
- return name === "span" && e.namespaceURI === textns
- };
- function isHyperlink(node) {
- var name = node && node.localName;
- return name === "a" && node.namespaceURI === textns
- }
- this.isHyperlink = isHyperlink;
- this.getHyperlinkTarget = function(element) {
- return element.getAttributeNS(xlinkns, "href")
- };
- function isParagraph(e) {
- var name = e && e.localName;
- return(name === "p" || name === "h") && e.namespaceURI === textns
- }
- this.isParagraph = isParagraph;
- function getParagraphElement(node) {
- while(node && !isParagraph(node)) {
- node = node.parentNode
- }
- return(node)
- }
- this.getParagraphElement = getParagraphElement;
- this.isWithinTrackedChanges = function(node, container) {
- while(node && node !== container) {
- if(node.namespaceURI === textns && node.localName === "tracked-changes") {
- return true
- }
- node = node.parentNode
- }
- return false
- };
- this.isListItem = function(e) {
- var name = e && e.localName;
- return name === "list-item" && e.namespaceURI === textns
- };
- this.isLineBreak = function(e) {
- var name = e && e.localName;
- return name === "line-break" && e.namespaceURI === textns
- };
- function isODFWhitespace(text) {
- return/^[ \t\r\n]+$/.test(text)
- }
- this.isODFWhitespace = isODFWhitespace;
- function isGroupingElement(n) {
- if(n === null || n.nodeType !== Node.ELEMENT_NODE) {
- return false
- }
- var e = (n), localName = e.localName;
- return/^(span|p|h|a|meta)$/.test(localName) && e.namespaceURI === textns || localName === "span" && e.className === "annotationHighlight"
- }
- this.isGroupingElement = isGroupingElement;
- function isCharacterElement(e) {
- var n = e && e.localName, ns, r = false;
- if(n) {
- ns = e.namespaceURI;
- if(ns === textns) {
- r = n === "s" || (n === "tab" || n === "line-break")
- }
- }
- return r
- }
- this.isCharacterElement = isCharacterElement;
- function isAnchoredAsCharacterElement(e) {
- return isCharacterElement(e) || (isCharacterFrame(e) || isInlineRoot(e))
- }
- this.isAnchoredAsCharacterElement = isAnchoredAsCharacterElement;
- function isSpaceElement(e) {
- var n = e && e.localName, ns, r = false;
- if(n) {
- ns = e.namespaceURI;
- if(ns === textns) {
- r = n === "s"
- }
- }
- return r
- }
- this.isSpaceElement = isSpaceElement;
- function firstChild(node) {
- while(node.firstChild !== null && isGroupingElement(node)) {
- node = node.firstChild
- }
- return node
- }
- this.firstChild = firstChild;
- function lastChild(node) {
- while(node.lastChild !== null && isGroupingElement(node)) {
- node = node.lastChild
- }
- return node
- }
- this.lastChild = lastChild;
- function previousNode(node) {
- while(!isParagraph(node) && node.previousSibling === null) {
- node = (node.parentNode)
- }
- return isParagraph(node) ? null : lastChild((node.previousSibling))
- }
- this.previousNode = previousNode;
- function nextNode(node) {
- while(!isParagraph(node) && node.nextSibling === null) {
- node = (node.parentNode)
- }
- return isParagraph(node) ? null : firstChild((node.nextSibling))
- }
- this.nextNode = nextNode;
- function scanLeftForNonSpace(node) {
- var r = false, text;
- while(node) {
- if(node.nodeType === Node.TEXT_NODE) {
- text = (node);
- if(text.length === 0) {
- node = previousNode(text)
- }else {
- return!isODFWhitespace(text.data.substr(text.length - 1, 1))
- }
- }else {
- if(isAnchoredAsCharacterElement(node)) {
- r = isSpaceElement(node) === false;
- node = null
- }else {
- node = previousNode(node)
- }
- }
- }
- return r
- }
- this.scanLeftForNonSpace = scanLeftForNonSpace;
- function lookLeftForCharacter(node) {
- var text, r = 0, tl = 0;
- if(node.nodeType === Node.TEXT_NODE) {
- tl = (node).length
- }
- if(tl > 0) {
- text = (node).data;
- if(!isODFWhitespace(text.substr(tl - 1, 1))) {
- r = 1
- }else {
- if(tl === 1) {
- r = scanLeftForNonSpace(previousNode(node)) ? 2 : 0
- }else {
- r = isODFWhitespace(text.substr(tl - 2, 1)) ? 0 : 2
- }
- }
- }else {
- if(isAnchoredAsCharacterElement(node)) {
- r = 1
- }
- }
- return r
- }
- this.lookLeftForCharacter = lookLeftForCharacter;
- function lookRightForCharacter(node) {
- var r = false, l = 0;
- if(node && node.nodeType === Node.TEXT_NODE) {
- l = (node).length
- }
- if(l > 0) {
- r = !isODFWhitespace((node).data.substr(0, 1))
- }else {
- if(isAnchoredAsCharacterElement(node)) {
- r = true
- }
- }
- return r
- }
- this.lookRightForCharacter = lookRightForCharacter;
- function scanLeftForAnyCharacter(node) {
- var r = false, l;
- node = node && lastChild(node);
- while(node) {
- if(node.nodeType === Node.TEXT_NODE) {
- l = (node).length
- }else {
- l = 0
- }
- if(l > 0 && !isODFWhitespace((node).data)) {
- r = true;
- break
- }
- if(isAnchoredAsCharacterElement(node)) {
- r = true;
- break
- }
- node = previousNode(node)
- }
- return r
- }
- this.scanLeftForAnyCharacter = scanLeftForAnyCharacter;
- function scanRightForAnyCharacter(node) {
- var r = false, l;
- node = node && firstChild(node);
- while(node) {
- if(node.nodeType === Node.TEXT_NODE) {
- l = (node).length
- }else {
- l = 0
- }
- if(l > 0 && !isODFWhitespace((node).data)) {
- r = true;
- break
- }
- if(isAnchoredAsCharacterElement(node)) {
- r = true;
- break
- }
- node = nextNode(node)
- }
- return r
- }
- this.scanRightForAnyCharacter = scanRightForAnyCharacter;
- function isTrailingWhitespace(textnode, offset) {
- if(!isODFWhitespace(textnode.data.substr(offset))) {
- return false
- }
- return!scanRightForAnyCharacter(nextNode(textnode))
- }
- this.isTrailingWhitespace = isTrailingWhitespace;
- function isSignificantWhitespace(textNode, offset) {
- var text = textNode.data, result;
- if(!isODFWhitespace(text[offset])) {
- return false
- }
- if(isAnchoredAsCharacterElement(textNode.parentNode)) {
- return false
- }
- if(offset > 0) {
- if(!isODFWhitespace(text[offset - 1])) {
- result = true
- }
- }else {
- if(scanLeftForNonSpace(previousNode(textNode))) {
- result = true
- }
- }
- if(result === true) {
- return isTrailingWhitespace(textNode, offset) ? false : true
- }
- return false
- }
- this.isSignificantWhitespace = isSignificantWhitespace;
- this.isDowngradableSpaceElement = function(node) {
- if(node.namespaceURI === textns && node.localName === "s") {
- return scanLeftForNonSpace(previousNode(node)) && scanRightForAnyCharacter(nextNode(node))
- }
- return false
- };
- function getFirstNonWhitespaceChild(node) {
- var child = node && node.firstChild;
- while(child && (child.nodeType === Node.TEXT_NODE && whitespaceOnly.test(child.nodeValue))) {
- child = child.nextSibling
- }
- return child
- }
- this.getFirstNonWhitespaceChild = getFirstNonWhitespaceChild;
- function parseLength(length) {
- var re = /(-?[0-9]*[0-9][0-9]*(\.[0-9]*)?|0+\.[0-9]*[1-9][0-9]*|\.[0-9]*[1-9][0-9]*)((cm)|(mm)|(in)|(pt)|(pc)|(px)|(%))/, m = re.exec(length);
- if(!m) {
- return null
- }
- return{value:parseFloat(m[1]), unit:m[3]}
- }
- this.parseLength = parseLength;
- function parsePositiveLength(length) {
- var result = parseLength(length);
- if(result && (result.value <= 0 || result.unit === "%")) {
- return null
- }
- return result
- }
- function parseNonNegativeLength(length) {
- var result = parseLength(length);
- if(result && (result.value < 0 || result.unit === "%")) {
- return null
- }
- return result
- }
- this.parseNonNegativeLength = parseNonNegativeLength;
- function parsePercentage(length) {
- var result = parseLength(length);
- if(result && result.unit !== "%") {
- return null
- }
- return result
- }
- function parseFoFontSize(fontSize) {
- return parsePositiveLength(fontSize) || parsePercentage(fontSize)
- }
- this.parseFoFontSize = parseFoFontSize;
- function parseFoLineHeight(lineHeight) {
- return parseNonNegativeLength(lineHeight) || parsePercentage(lineHeight)
- }
- this.parseFoLineHeight = parseFoLineHeight;
- function isTextContentContainingNode(node) {
- switch(node.namespaceURI) {
- case odf.Namespaces.drawns:
- ;
- case odf.Namespaces.svgns:
- ;
- case odf.Namespaces.dr3dns:
- return false;
- case odf.Namespaces.textns:
- switch(node.localName) {
- case "note-body":
- ;
- case "ruby-text":
- return false
- }
- break;
- case odf.Namespaces.officens:
- switch(node.localName) {
- case "annotation":
- ;
- case "binary-data":
- ;
- case "event-listeners":
- return false
- }
- break;
- default:
- switch(node.localName) {
- case "cursor":
- ;
- case "editinfo":
- return false
- }
- break
- }
- return true
- }
- this.isTextContentContainingNode = isTextContentContainingNode;
- function isSignificantTextContent(textNode) {
- return Boolean(getParagraphElement(textNode) && (!isODFWhitespace(textNode.textContent) || isSignificantWhitespace(textNode, 0)))
- }
- function removePartiallyContainedNodes(range, nodes) {
- while(nodes.length > 0 && !domUtils.rangeContainsNode(range, (nodes[0]))) {
- nodes.shift()
- }
- while(nodes.length > 0 && !domUtils.rangeContainsNode(range, (nodes[nodes.length - 1]))) {
- nodes.pop()
- }
- }
- function getTextNodes(range, includePartial) {
- var textNodes;
- function nodeFilter(node) {
- var result = NodeFilter.FILTER_REJECT;
- if(node.nodeType === Node.TEXT_NODE) {
- if(isSignificantTextContent((node))) {
- result = NodeFilter.FILTER_ACCEPT
- }
- }else {
- if(isTextContentContainingNode(node)) {
- result = NodeFilter.FILTER_SKIP
- }
- }
- return result
- }
- textNodes = domUtils.getNodesInRange(range, nodeFilter, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT);
- if(!includePartial) {
- removePartiallyContainedNodes(range, textNodes)
- }
- return textNodes
- }
- this.getTextNodes = getTextNodes;
- function getTextElements(range, includePartial, includeInsignificantWhitespace) {
- var elements;
- function nodeFilter(node) {
- var result = NodeFilter.FILTER_REJECT;
- if(isCharacterElement(node.parentNode) || isInlineRoot(node)) {
- result = NodeFilter.FILTER_REJECT
- }else {
- if(node.nodeType === Node.TEXT_NODE) {
- if(includeInsignificantWhitespace || isSignificantTextContent((node))) {
- result = NodeFilter.FILTER_ACCEPT
- }
- }else {
- if(isAnchoredAsCharacterElement(node)) {
- result = NodeFilter.FILTER_ACCEPT
- }else {
- if(isTextContentContainingNode(node) || isGroupingElement(node)) {
- result = NodeFilter.FILTER_SKIP
- }
- }
- }
- }
- return result
- }
- elements = domUtils.getNodesInRange(range, nodeFilter, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT);
- if(!includePartial) {
- removePartiallyContainedNodes(range, elements)
- }
- return elements
- }
- this.getTextElements = getTextElements;
- function prependParentContainers(startContainer, elements, filter) {
- var container = startContainer;
- while(container) {
- if(filter(container)) {
- if(elements[0] !== container) {
- elements.unshift(container)
- }
- break
- }
- if(isInlineRoot(container)) {
- break
- }
- container = container.parentNode
- }
- }
- this.getParagraphElements = function(range) {
- var elements;
- function nodeFilter(node) {
- var result = NodeFilter.FILTER_REJECT;
- if(isParagraph(node)) {
- result = NodeFilter.FILTER_ACCEPT
- }else {
- if(isTextContentContainingNode(node) || isGroupingElement(node)) {
- result = NodeFilter.FILTER_SKIP
- }
- }
- return result
- }
- elements = domUtils.getNodesInRange(range, nodeFilter, NodeFilter.SHOW_ELEMENT);
- prependParentContainers((range.startContainer), elements, isParagraph);
- return elements
- };
- this.getImageElements = function(range) {
- var elements;
- function nodeFilter(node) {
- var result = NodeFilter.FILTER_SKIP;
- if(isImage(node)) {
- result = NodeFilter.FILTER_ACCEPT
- }
- return result
- }
- elements = domUtils.getNodesInRange(range, nodeFilter, NodeFilter.SHOW_ELEMENT);
- prependParentContainers((range.startContainer), elements, isImage);
- return elements
- };
- function getRightNode(container, offset) {
- var node = container;
- if(offset < node.childNodes.length - 1) {
- node = (node.childNodes[offset + 1])
- }else {
- while(!node.nextSibling) {
- node = node.parentNode
- }
- node = node.nextSibling
- }
- while(node.firstChild) {
- node = node.firstChild
- }
- return node
- }
- this.getHyperlinkElements = function(range) {
- var links = [], newRange = (range.cloneRange()), node, textNodes;
- if(range.collapsed && range.endContainer.nodeType === Node.ELEMENT_NODE) {
- node = getRightNode(range.endContainer, range.endOffset);
- if(node.nodeType === Node.TEXT_NODE) {
- newRange.setEnd(node, 1)
- }
- }
- textNodes = getTextElements(newRange, true, false);
- textNodes.forEach(function(node) {
- var parent = node.parentNode;
- while(!isParagraph(parent)) {
- if(isHyperlink(parent) && links.indexOf(parent) === -1) {
- links.push(parent);
- break
- }
- parent = parent.parentNode
- }
- });
- newRange.detach();
- return links
- }
-};
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
+odf.OdfContainer.DocumentType = {TEXT:1, TEXT_TEMPLATE:2, PRESENTATION:3, PRESENTATION_TEMPLATE:4, SPREADSHEET:5, SPREADSHEET_TEMPLATE:6};
gui.AnnotatableCanvas = function AnnotatableCanvas() {
};
gui.AnnotatableCanvas.prototype.refreshSize = function() {
@@ -6164,56 +7243,69 @@ gui.AnnotatableCanvas.prototype.getZoomLevel = function() {
gui.AnnotatableCanvas.prototype.getSizer = function() {
};
gui.AnnotationViewManager = function AnnotationViewManager(canvas, odfFragment, annotationsPane, showAnnotationRemoveButton) {
- var annotations = [], doc = odfFragment.ownerDocument, odfUtils = new odf.OdfUtils, CONNECTOR_MARGIN = 30, NOTE_MARGIN = 20, window = runtime.getWindow();
+ var annotations = [], doc = odfFragment.ownerDocument, odfUtils = odf.OdfUtils, CONNECTOR_MARGIN = 30, NOTE_MARGIN = 20, window = runtime.getWindow(), htmlns = "http://www.w3.org/1999/xhtml";
runtime.assert(Boolean(window), "Expected to be run in an environment which has a global window, like a browser.");
function wrapAnnotation(annotation) {
var annotationWrapper = doc.createElement("div"), annotationNote = doc.createElement("div"), connectorHorizontal = doc.createElement("div"), connectorAngular = doc.createElement("div"), removeButton;
annotationWrapper.className = "annotationWrapper";
+ annotationWrapper.setAttribute("creator", odfUtils.getAnnotationCreator(annotation));
annotation.parentNode.insertBefore(annotationWrapper, annotation);
annotationNote.className = "annotationNote";
annotationNote.appendChild(annotation);
- if(showAnnotationRemoveButton) {
+ if (showAnnotationRemoveButton) {
removeButton = doc.createElement("div");
removeButton.className = "annotationRemoveButton";
- annotationNote.appendChild(removeButton)
+ annotationNote.appendChild(removeButton);
}
connectorHorizontal.className = "annotationConnector horizontal";
connectorAngular.className = "annotationConnector angular";
annotationWrapper.appendChild(annotationNote);
annotationWrapper.appendChild(connectorHorizontal);
- annotationWrapper.appendChild(connectorAngular)
+ annotationWrapper.appendChild(connectorAngular);
}
function unwrapAnnotation(annotation) {
var annotationWrapper = annotation.parentNode.parentNode;
- if(annotationWrapper.localName === "div") {
+ if (annotationWrapper.localName === "div") {
annotationWrapper.parentNode.insertBefore(annotation, annotationWrapper);
- annotationWrapper.parentNode.removeChild(annotationWrapper)
+ annotationWrapper.parentNode.removeChild(annotationWrapper);
+ }
+ }
+ function isNodeWithinAnnotationHighlight(node, annotationName) {
+ var iteratingNode = node.parentNode;
+ while (!(iteratingNode.namespaceURI === odf.Namespaces.officens && iteratingNode.localName === "body")) {
+ if (iteratingNode.namespaceURI === htmlns && (iteratingNode).className === "webodf-annotationHighlight" && (iteratingNode).getAttribute("annotation") === annotationName) {
+ return true;
+ }
+ iteratingNode = iteratingNode.parentNode;
}
+ return false;
}
function highlightAnnotation(annotation) {
var annotationEnd = annotation.annotationEndElement, range = doc.createRange(), annotationName = annotation.getAttributeNS(odf.Namespaces.officens, "name"), textNodes;
- if(annotationEnd) {
+ if (annotationEnd) {
range.setStart(annotation, annotation.childNodes.length);
range.setEnd(annotationEnd, 0);
textNodes = odfUtils.getTextNodes(range, false);
textNodes.forEach(function(n) {
- var container = doc.createElement("span");
- container.className = "annotationHighlight";
- container.setAttribute("annotation", annotationName);
- n.parentNode.insertBefore(container, n);
- container.appendChild(n)
- })
+ if (!isNodeWithinAnnotationHighlight(n, annotationName)) {
+ var container = doc.createElement("span");
+ container.className = "webodf-annotationHighlight";
+ container.setAttribute("annotation", annotationName);
+ n.parentNode.replaceChild(container, n);
+ container.appendChild(n);
+ }
+ });
}
- range.detach()
+ range.detach();
}
function unhighlightAnnotation(annotation) {
- var annotationName = annotation.getAttributeNS(odf.Namespaces.officens, "name"), highlightSpans = doc.querySelectorAll('span.annotationHighlight[annotation="' + annotationName + '"]'), i, container;
- for(i = 0;i < highlightSpans.length;i += 1) {
+ var annotationName = annotation.getAttributeNS(odf.Namespaces.officens, "name"), highlightSpans = doc.querySelectorAll('span.webodf-annotationHighlight[annotation="' + annotationName + '"]'), i, container;
+ for (i = 0;i < highlightSpans.length;i += 1) {
container = highlightSpans.item(i);
- while(container.firstChild) {
- container.parentNode.insertBefore(container.firstChild, container)
+ while (container.firstChild) {
+ container.parentNode.insertBefore(container.firstChild, container);
}
- container.parentNode.removeChild(container)
+ container.parentNode.removeChild(container);
}
}
function lineDistance(point1, point2) {
@@ -6222,20 +7314,22 @@ gui.AnnotationViewManager = function AnnotationViewManager(canvas, odfFragment,
xs = xs * xs;
ys = point2.y - point1.y;
ys = ys * ys;
- return Math.sqrt(xs + ys)
+ return Math.sqrt(xs + ys);
}
function renderAnnotation(annotation) {
var annotationNote = (annotation.parentNode), connectorHorizontal = annotationNote.nextElementSibling, connectorAngular = connectorHorizontal.nextElementSibling, annotationWrapper = (annotationNote.parentNode), connectorAngle = 0, previousAnnotation = annotations[annotations.indexOf(annotation) - 1], previousRect, zoomLevel = canvas.getZoomLevel();
annotationNote.style.left = (annotationsPane.getBoundingClientRect().left - annotationWrapper.getBoundingClientRect().left) / zoomLevel + "px";
annotationNote.style.width = annotationsPane.getBoundingClientRect().width / zoomLevel + "px";
connectorHorizontal.style.width = parseFloat(annotationNote.style.left) - CONNECTOR_MARGIN + "px";
- if(previousAnnotation) {
+ if (previousAnnotation) {
previousRect = (previousAnnotation.parentNode).getBoundingClientRect();
- if((annotationWrapper.getBoundingClientRect().top - previousRect.bottom) / zoomLevel <= NOTE_MARGIN) {
- annotationNote.style.top = Math.abs(annotationWrapper.getBoundingClientRect().top - previousRect.bottom) / zoomLevel + NOTE_MARGIN + "px"
- }else {
- annotationNote.style.top = "0px"
+ if ((annotationWrapper.getBoundingClientRect().top - previousRect.bottom) / zoomLevel <= NOTE_MARGIN) {
+ annotationNote.style.top = Math.abs(annotationWrapper.getBoundingClientRect().top - previousRect.bottom) / zoomLevel + NOTE_MARGIN + "px";
+ } else {
+ annotationNote.style.top = "0px";
}
+ } else {
+ annotationNote.style.top = "0px";
}
connectorAngular.style.left = connectorHorizontal.getBoundingClientRect().width / zoomLevel + "px";
connectorAngular.style.width = lineDistance({x:connectorAngular.getBoundingClientRect().left / zoomLevel, y:connectorAngular.getBoundingClientRect().top / zoomLevel}, {x:annotationNote.getBoundingClientRect().left / zoomLevel, y:annotationNote.getBoundingClientRect().top / zoomLevel}) + "px";
@@ -6243,861 +7337,1283 @@ gui.AnnotationViewManager = function AnnotationViewManager(canvas, odfFragment,
connectorAngular.style.transform = "rotate(" + connectorAngle + "rad)";
connectorAngular.style.MozTransform = "rotate(" + connectorAngle + "rad)";
connectorAngular.style.WebkitTransform = "rotate(" + connectorAngle + "rad)";
- connectorAngular.style.msTransform = "rotate(" + connectorAngle + "rad)"
+ connectorAngular.style.msTransform = "rotate(" + connectorAngle + "rad)";
}
function showAnnotationsPane(show) {
var sizer = canvas.getSizer();
- if(show) {
+ if (show) {
annotationsPane.style.display = "inline-block";
- sizer.style.paddingRight = window.getComputedStyle(annotationsPane).width
- }else {
+ sizer.style.paddingRight = window.getComputedStyle(annotationsPane).width;
+ } else {
annotationsPane.style.display = "none";
- sizer.style.paddingRight = 0
+ sizer.style.paddingRight = 0;
}
- canvas.refreshSize()
+ canvas.refreshSize();
}
function sortAnnotations() {
annotations.sort(function(a, b) {
- if((a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) !== 0) {
- return-1
+ if ((a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) !== 0) {
+ return -1;
}
- return 1
- })
+ return 1;
+ });
}
function rerenderAnnotations() {
var i;
- for(i = 0;i < annotations.length;i += 1) {
- renderAnnotation(annotations[i])
+ for (i = 0;i < annotations.length;i += 1) {
+ renderAnnotation(annotations[i]);
}
}
this.rerenderAnnotations = rerenderAnnotations;
+ function rehighlightAnnotations() {
+ annotations.forEach(function(annotation) {
+ highlightAnnotation(annotation);
+ });
+ }
+ this.rehighlightAnnotations = rehighlightAnnotations;
function getMinimumHeightForAnnotationPane() {
- if(annotationsPane.style.display !== "none" && annotations.length > 0) {
- return((annotations[annotations.length - 1].parentNode).getBoundingClientRect().bottom - annotationsPane.getBoundingClientRect().top) / canvas.getZoomLevel() + "px"
+ if (annotationsPane.style.display !== "none" && annotations.length > 0) {
+ return ((annotations[annotations.length - 1].parentNode).getBoundingClientRect().bottom - annotationsPane.getBoundingClientRect().top) / canvas.getZoomLevel() + "px";
}
- return null
+ return null;
}
this.getMinimumHeightForAnnotationPane = getMinimumHeightForAnnotationPane;
- function addAnnotation(annotation) {
+ function addAnnotations(annotationElements) {
+ if (annotationElements.length === 0) {
+ return;
+ }
showAnnotationsPane(true);
- annotations.push(annotation);
+ annotationElements.forEach(function(annotation) {
+ annotations.push(annotation);
+ wrapAnnotation(annotation);
+ if (annotation.annotationEndElement) {
+ highlightAnnotation(annotation);
+ }
+ });
sortAnnotations();
- wrapAnnotation(annotation);
- if(annotation.annotationEndElement) {
- highlightAnnotation(annotation)
- }
- rerenderAnnotations()
+ rerenderAnnotations();
}
- this.addAnnotation = addAnnotation;
+ this.addAnnotations = addAnnotations;
function forgetAnnotation(annotation) {
var index = annotations.indexOf(annotation);
unwrapAnnotation(annotation);
unhighlightAnnotation(annotation);
- if(index !== -1) {
- annotations.splice(index, 1)
+ if (index !== -1) {
+ annotations.splice(index, 1);
}
- if(annotations.length === 0) {
- showAnnotationsPane(false)
+ if (annotations.length === 0) {
+ showAnnotationsPane(false);
}
}
+ this.forgetAnnotation = forgetAnnotation;
function forgetAnnotations() {
- while(annotations.length) {
- forgetAnnotation(annotations[0])
+ while (annotations.length) {
+ forgetAnnotation(annotations[0]);
}
}
- this.forgetAnnotations = forgetAnnotations
+ this.forgetAnnotations = forgetAnnotations;
+};
+gui.Viewport = function Viewport() {
+};
+gui.Viewport.prototype.scrollIntoView = function(clientRect, alignWithTop) {
+};
+gui.SingleScrollViewport = function(scrollPane) {
+ var VIEW_PADDING_PX = 5;
+ function shrinkClientRectByMargin(clientRect, margin) {
+ return {left:clientRect.left + margin.left, top:clientRect.top + margin.top, right:clientRect.right - margin.right, bottom:clientRect.bottom - margin.bottom};
+ }
+ function height(clientRect) {
+ return clientRect.bottom - clientRect.top;
+ }
+ function width(clientRect) {
+ return clientRect.right - clientRect.left;
+ }
+ this.scrollIntoView = function(clientRect, alignWithTop) {
+ var verticalScrollbarHeight = scrollPane.offsetHeight - scrollPane.clientHeight, horizontalScrollbarWidth = scrollPane.offsetWidth - scrollPane.clientWidth, nonNullClientRect, scrollPaneRect = scrollPane.getBoundingClientRect(), paneRect;
+ if (!clientRect || !scrollPaneRect) {
+ return;
+ }
+ nonNullClientRect = (clientRect);
+ paneRect = shrinkClientRectByMargin((scrollPaneRect), {top:VIEW_PADDING_PX, bottom:verticalScrollbarHeight + VIEW_PADDING_PX, left:VIEW_PADDING_PX, right:horizontalScrollbarWidth + VIEW_PADDING_PX});
+ if (alignWithTop || nonNullClientRect.top < paneRect.top) {
+ scrollPane.scrollTop -= paneRect.top - nonNullClientRect.top;
+ } else {
+ if (nonNullClientRect.top > paneRect.bottom || nonNullClientRect.bottom > paneRect.bottom) {
+ if (height(nonNullClientRect) <= height(paneRect)) {
+ scrollPane.scrollTop += nonNullClientRect.bottom - paneRect.bottom;
+ } else {
+ scrollPane.scrollTop += nonNullClientRect.top - paneRect.top;
+ }
+ }
+ }
+ if (nonNullClientRect.left < paneRect.left) {
+ scrollPane.scrollLeft -= paneRect.left - nonNullClientRect.left;
+ } else {
+ if (nonNullClientRect.right > paneRect.right) {
+ if (width(nonNullClientRect) <= width(paneRect)) {
+ scrollPane.scrollLeft += nonNullClientRect.right - paneRect.right;
+ } else {
+ scrollPane.scrollLeft -= paneRect.left - nonNullClientRect.left;
+ }
+ }
+ }
+ };
};
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
(function() {
- var xpath = xmldom.XPath, base64 = new core.Base64;
+ var xpath = xmldom.XPath, odfUtils = odf.OdfUtils, base64 = new core.Base64;
function getEmbeddedFontDeclarations(fontFaceDecls) {
var decls = {}, fonts, i, font, name, uris, href, family;
- if(!fontFaceDecls) {
- return decls
+ if (!fontFaceDecls) {
+ return decls;
}
fonts = xpath.getODFElementsWithXPath(fontFaceDecls, "style:font-face[svg:font-face-src]", odf.Namespaces.lookupNamespaceURI);
- for(i = 0;i < fonts.length;i += 1) {
+ for (i = 0;i < fonts.length;i += 1) {
font = fonts[i];
name = font.getAttributeNS(odf.Namespaces.stylens, "name");
- family = font.getAttributeNS(odf.Namespaces.svgns, "font-family");
+ family = odfUtils.getNormalizedFontFamilyName(font.getAttributeNS(odf.Namespaces.svgns, "font-family"));
uris = xpath.getODFElementsWithXPath(font, "svg:font-face-src/svg:font-face-uri", odf.Namespaces.lookupNamespaceURI);
- if(uris.length > 0) {
+ if (uris.length > 0) {
href = uris[0].getAttributeNS(odf.Namespaces.xlinkns, "href");
- decls[name] = {href:href, family:family}
+ decls[name] = {href:href, family:family};
}
}
- return decls
+ return decls;
}
function addFontToCSS(name, font, fontdata, stylesheet) {
- var cssFamily = font.family || name, rule = "@font-face { font-family: '" + cssFamily + "'; src: " + "url(data:application/x-font-ttf;charset=binary;base64," + base64.convertUTF8ArrayToBase64(fontdata) + ') format("truetype"); }';
+ var cssFamily = font.family || name, rule = "@font-face { font-family: " + cssFamily + "; src: " + "url(data:application/x-font-ttf;charset=binary;base64," + base64.convertUTF8ArrayToBase64(fontdata) + ') format("truetype"); }';
try {
- stylesheet.insertRule(rule, stylesheet.cssRules.length)
- }catch(e) {
- runtime.log("Problem inserting rule in CSS: " + runtime.toJson(e) + "\nRule: " + rule)
+ stylesheet.insertRule(rule, stylesheet.cssRules.length);
+ } catch (e) {
+ runtime.log("Problem inserting rule in CSS: " + runtime.toJson(e) + "\nRule: " + rule);
}
}
function loadFontIntoCSS(embeddedFontDeclarations, odfContainer, pos, stylesheet, callback) {
var name, i = 0, n;
- for(n in embeddedFontDeclarations) {
- if(embeddedFontDeclarations.hasOwnProperty(n)) {
- if(i === pos) {
+ for (n in embeddedFontDeclarations) {
+ if (embeddedFontDeclarations.hasOwnProperty(n)) {
+ if (i === pos) {
name = n;
- break
+ break;
}
- i += 1
+ i += 1;
}
}
- if(!name) {
- if(callback) {
- callback()
+ if (!name) {
+ if (callback) {
+ callback();
}
- return
+ return;
}
odfContainer.getPartData(embeddedFontDeclarations[name].href, function(err, fontdata) {
- if(err) {
- runtime.log(err)
- }else {
- if(!fontdata) {
- runtime.log("missing font data for " + embeddedFontDeclarations[name].href)
- }else {
- addFontToCSS(name, embeddedFontDeclarations[name], fontdata, stylesheet)
+ if (err) {
+ runtime.log(err);
+ } else {
+ if (!fontdata) {
+ runtime.log("missing font data for " + embeddedFontDeclarations[name].href);
+ } else {
+ addFontToCSS(name, embeddedFontDeclarations[name], fontdata, stylesheet);
}
}
- loadFontIntoCSS(embeddedFontDeclarations, odfContainer, pos + 1, stylesheet, callback)
- })
+ loadFontIntoCSS(embeddedFontDeclarations, odfContainer, pos + 1, stylesheet, callback);
+ });
}
function loadFontsIntoCSS(embeddedFontDeclarations, odfContainer, stylesheet) {
- loadFontIntoCSS(embeddedFontDeclarations, odfContainer, 0, stylesheet)
+ loadFontIntoCSS(embeddedFontDeclarations, odfContainer, 0, stylesheet);
}
odf.FontLoader = function FontLoader() {
this.loadFonts = function(odfContainer, stylesheet) {
var embeddedFontDeclarations, fontFaceDecls = odfContainer.rootElement.fontFaceDecls;
- while(stylesheet.cssRules.length) {
- stylesheet.deleteRule(stylesheet.cssRules.length - 1)
+ while (stylesheet.cssRules.length) {
+ stylesheet.deleteRule(stylesheet.cssRules.length - 1);
}
- if(fontFaceDecls) {
+ if (fontFaceDecls) {
embeddedFontDeclarations = getEmbeddedFontDeclarations(fontFaceDecls);
- loadFontsIntoCSS(embeddedFontDeclarations, odfContainer, stylesheet)
+ loadFontsIntoCSS(embeddedFontDeclarations, odfContainer, stylesheet);
}
- }
+ };
};
- return odf.FontLoader
})();
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
odf.Formatting = function Formatting() {
- var odfContainer, styleInfo = new odf.StyleInfo, svgns = odf.Namespaces.svgns, stylens = odf.Namespaces.stylens, textns = odf.Namespaces.textns, numberns = odf.Namespaces.numberns, fons = odf.Namespaces.fons, odfUtils = new odf.OdfUtils, domUtils = new core.DomUtils, utils = new core.Utils, builtInDefaultStyleAttributesByFamily = {"paragraph":{"style:paragraph-properties":{"fo:text-align":"left"}}}, defaultPageFormatSettings = {width:21.001, height:29.7, margin:2, padding:0};
+ var odfContainer, styleInfo = new odf.StyleInfo, svgns = odf.Namespaces.svgns, stylens = odf.Namespaces.stylens, textns = odf.Namespaces.textns, numberns = odf.Namespaces.numberns, fons = odf.Namespaces.fons, odfUtils = odf.OdfUtils, domUtils = core.DomUtils, utils = new core.Utils, cssUnits = new core.CSSUnits, builtInDefaultStyleAttributesByFamily = {"paragraph":{"style:paragraph-properties":{"fo:text-align":"left"}}}, defaultPageFormatSettings = {width:"21.001cm", height:"29.7cm", margin:"2cm",
+ padding:"0cm"};
function getSystemDefaultStyleAttributes(styleFamily) {
var result, builtInDefaultStyleAttributes = builtInDefaultStyleAttributesByFamily[styleFamily];
- if(builtInDefaultStyleAttributes) {
- result = utils.mergeObjects({}, builtInDefaultStyleAttributes)
- }else {
- result = {}
+ if (builtInDefaultStyleAttributes) {
+ result = utils.mergeObjects({}, builtInDefaultStyleAttributes);
+ } else {
+ result = {};
}
- return result
+ return result;
}
this.getSystemDefaultStyleAttributes = getSystemDefaultStyleAttributes;
this.setOdfContainer = function(odfcontainer) {
- odfContainer = odfcontainer
+ odfContainer = odfcontainer;
};
function getFontMap() {
var fontFaceDecls = odfContainer.rootElement.fontFaceDecls, fontFaceDeclsMap = {}, node, name, family;
node = fontFaceDecls && fontFaceDecls.firstElementChild;
- while(node) {
+ while (node) {
name = node.getAttributeNS(stylens, "name");
- if(name) {
+ if (name) {
family = node.getAttributeNS(svgns, "font-family");
- if(family || node.getElementsByTagNameNS(svgns, "font-face-uri").length > 0) {
- fontFaceDeclsMap[name] = family
+ if (family || node.getElementsByTagNameNS(svgns, "font-face-uri").length > 0) {
+ fontFaceDeclsMap[name] = family;
}
}
- node = node.nextElementSibling
+ node = node.nextElementSibling;
}
- return fontFaceDeclsMap
+ return fontFaceDeclsMap;
}
this.getFontMap = getFontMap;
this.getAvailableParagraphStyles = function() {
var node = odfContainer.rootElement.styles, p_family, p_name, p_displayName, paragraphStyles = [];
node = node && node.firstElementChild;
- while(node) {
- if(node.localName === "style" && node.namespaceURI === stylens) {
+ while (node) {
+ if (node.localName === "style" && node.namespaceURI === stylens) {
p_family = node.getAttributeNS(stylens, "family");
- if(p_family === "paragraph") {
+ if (p_family === "paragraph") {
p_name = node.getAttributeNS(stylens, "name");
p_displayName = node.getAttributeNS(stylens, "display-name") || p_name;
- if(p_name && p_displayName) {
- paragraphStyles.push({name:p_name, displayName:p_displayName})
+ if (p_name && p_displayName) {
+ paragraphStyles.push({name:p_name, displayName:p_displayName});
}
}
}
- node = node.nextElementSibling
+ node = node.nextElementSibling;
}
- return paragraphStyles
+ return paragraphStyles;
};
this.isStyleUsed = function(styleElement) {
var hasDerivedStyles, isUsed, root = odfContainer.rootElement;
hasDerivedStyles = styleInfo.hasDerivedStyles(root, odf.Namespaces.lookupNamespaceURI, styleElement);
- isUsed = (new styleInfo.UsedStyleList(root.styles)).uses(styleElement) || ((new styleInfo.UsedStyleList(root.automaticStyles)).uses(styleElement) || (new styleInfo.UsedStyleList(root.body)).uses(styleElement));
- return hasDerivedStyles || isUsed
+ isUsed = (new styleInfo.UsedStyleList(root.styles)).uses(styleElement) || (new styleInfo.UsedStyleList(root.automaticStyles)).uses(styleElement) || (new styleInfo.UsedStyleList(root.body)).uses(styleElement);
+ return hasDerivedStyles || isUsed;
};
function getDefaultStyleElement(family) {
var node = odfContainer.rootElement.styles.firstElementChild;
- while(node) {
- if(node.namespaceURI === stylens && (node.localName === "default-style" && node.getAttributeNS(stylens, "family") === family)) {
- return node
+ while (node) {
+ if (node.namespaceURI === stylens && node.localName === "default-style" && node.getAttributeNS(stylens, "family") === family) {
+ return node;
}
- node = node.nextElementSibling
+ node = node.nextElementSibling;
}
- return null
+ return null;
}
this.getDefaultStyleElement = getDefaultStyleElement;
function getStyleElement(styleName, family, styleElements) {
var node, nodeStyleName, styleListElement, i;
styleElements = styleElements || [odfContainer.rootElement.automaticStyles, odfContainer.rootElement.styles];
- for(i = 0;i < styleElements.length;i += 1) {
+ for (i = 0;i < styleElements.length;i += 1) {
styleListElement = (styleElements[i]);
node = styleListElement.firstElementChild;
- while(node) {
+ while (node) {
nodeStyleName = node.getAttributeNS(stylens, "name");
- if(node.namespaceURI === stylens && (node.localName === "style" && (node.getAttributeNS(stylens, "family") === family && nodeStyleName === styleName))) {
- return node
+ if (node.namespaceURI === stylens && node.localName === "style" && node.getAttributeNS(stylens, "family") === family && nodeStyleName === styleName) {
+ return node;
}
- if(family === "list-style" && (node.namespaceURI === textns && (node.localName === "list-style" && nodeStyleName === styleName))) {
- return node
+ if (family === "list-style" && node.namespaceURI === textns && node.localName === "list-style" && nodeStyleName === styleName) {
+ return node;
}
- if(family === "data" && (node.namespaceURI === numberns && nodeStyleName === styleName)) {
- return node
+ if (family === "data" && node.namespaceURI === numberns && nodeStyleName === styleName) {
+ return node;
}
- node = node.nextElementSibling
+ node = node.nextElementSibling;
}
}
- return null
+ return null;
}
this.getStyleElement = getStyleElement;
function getStyleAttributes(styleNode) {
var i, a, map, ai, propertiesMap = {}, propertiesNode = styleNode.firstElementChild;
- while(propertiesNode) {
- if(propertiesNode.namespaceURI === stylens) {
+ while (propertiesNode) {
+ if (propertiesNode.namespaceURI === stylens) {
map = propertiesMap[propertiesNode.nodeName] = {};
a = propertiesNode.attributes;
- for(i = 0;i < a.length;i += 1) {
+ for (i = 0;i < a.length;i += 1) {
ai = (a.item(i));
- map[ai.name] = ai.value
+ map[ai.name] = ai.value;
}
}
- propertiesNode = propertiesNode.nextElementSibling
+ propertiesNode = propertiesNode.nextElementSibling;
}
a = styleNode.attributes;
- for(i = 0;i < a.length;i += 1) {
+ for (i = 0;i < a.length;i += 1) {
ai = (a.item(i));
- propertiesMap[ai.name] = ai.value
+ propertiesMap[ai.name] = ai.value;
}
- return propertiesMap
+ return propertiesMap;
}
this.getStyleAttributes = getStyleAttributes;
function getInheritedStyleAttributes(styleNode, includeSystemDefault) {
var styleListElement = odfContainer.rootElement.styles, parentStyleName, propertiesMap, inheritedPropertiesMap = {}, styleFamily = styleNode.getAttributeNS(stylens, "family"), node = styleNode;
- while(node) {
+ while (node) {
propertiesMap = getStyleAttributes(node);
inheritedPropertiesMap = utils.mergeObjects(propertiesMap, inheritedPropertiesMap);
parentStyleName = node.getAttributeNS(stylens, "parent-style-name");
- if(parentStyleName) {
- node = getStyleElement(parentStyleName, styleFamily, [styleListElement])
- }else {
- node = null
+ if (parentStyleName) {
+ node = getStyleElement(parentStyleName, styleFamily, [styleListElement]);
+ } else {
+ node = null;
}
}
node = getDefaultStyleElement(styleFamily);
- if(node) {
+ if (node) {
propertiesMap = getStyleAttributes(node);
- inheritedPropertiesMap = utils.mergeObjects(propertiesMap, inheritedPropertiesMap)
+ inheritedPropertiesMap = utils.mergeObjects(propertiesMap, inheritedPropertiesMap);
}
- if(includeSystemDefault !== false) {
+ if (includeSystemDefault !== false) {
propertiesMap = getSystemDefaultStyleAttributes(styleFamily);
- inheritedPropertiesMap = utils.mergeObjects(propertiesMap, inheritedPropertiesMap)
+ inheritedPropertiesMap = utils.mergeObjects(propertiesMap, inheritedPropertiesMap);
}
- return inheritedPropertiesMap
+ return inheritedPropertiesMap;
}
this.getInheritedStyleAttributes = getInheritedStyleAttributes;
this.getFirstCommonParentStyleNameOrSelf = function(styleName) {
var automaticStyleElementList = odfContainer.rootElement.automaticStyles, styleElementList = odfContainer.rootElement.styles, styleElement;
styleElement = getStyleElement(styleName, "paragraph", [automaticStyleElementList]);
- while(styleElement) {
+ if (styleElement) {
styleName = styleElement.getAttributeNS(stylens, "parent-style-name");
- styleElement = getStyleElement(styleName, "paragraph", [automaticStyleElementList])
+ if (!styleName) {
+ return null;
+ }
}
styleElement = getStyleElement(styleName, "paragraph", [styleElementList]);
- if(!styleElement) {
- return null
+ if (!styleElement) {
+ return null;
}
- return styleName
+ return styleName;
};
this.hasParagraphStyle = function(styleName) {
- return Boolean(getStyleElement(styleName, "paragraph"))
+ return Boolean(getStyleElement(styleName, "paragraph"));
};
function buildStyleChain(node, collectedChains) {
var parent = (node.nodeType === Node.TEXT_NODE ? node.parentNode : node), nodeStyles, appliedStyles = [], chainKey = "", foundContainer = false;
- while(parent) {
- if(!foundContainer && odfUtils.isGroupingElement(parent)) {
- foundContainer = true
+ while (parent && !odfUtils.isInlineRoot(parent) && parent.parentNode !== odfContainer.rootElement) {
+ if (!foundContainer && odfUtils.isGroupingElement(parent)) {
+ foundContainer = true;
}
nodeStyles = styleInfo.determineStylesForNode(parent);
- if(nodeStyles) {
- appliedStyles.push(nodeStyles)
+ if (nodeStyles) {
+ appliedStyles.push(nodeStyles);
}
- parent = (parent.parentNode)
+ parent = (parent.parentNode);
}
function chainStyles(usedStyleMap) {
Object.keys(usedStyleMap).forEach(function(styleFamily) {
Object.keys(usedStyleMap[styleFamily]).forEach(function(styleName) {
- chainKey += "|" + styleFamily + ":" + styleName + "|"
- })
- })
+ chainKey += "|" + styleFamily + ":" + styleName + "|";
+ });
+ });
}
- if(foundContainer) {
+ if (foundContainer) {
appliedStyles.forEach(chainStyles);
- if(collectedChains) {
- collectedChains[chainKey] = appliedStyles
+ if (collectedChains) {
+ collectedChains[chainKey] = appliedStyles;
}
}
- return foundContainer ? appliedStyles : undefined
+ return foundContainer ? appliedStyles : undefined;
}
function isCommonStyleElement(styleNode) {
- return styleNode.parentNode === odfContainer.rootElement.styles
+ return styleNode.parentNode === odfContainer.rootElement.styles;
}
function calculateAppliedStyle(styleChain) {
- var mergedChildStyle = {orderedStyles:[]};
+ var mergedChildStyle = {orderedStyles:[], styleProperties:{}};
styleChain.forEach(function(elementStyleSet) {
Object.keys((elementStyleSet)).forEach(function(styleFamily) {
var styleName = Object.keys(elementStyleSet[styleFamily])[0], styleSummary = {name:styleName, family:styleFamily, displayName:undefined, isCommonStyle:false}, styleElement, parentStyle;
styleElement = getStyleElement(styleName, styleFamily);
- if(styleElement) {
+ if (styleElement) {
parentStyle = getInheritedStyleAttributes((styleElement));
- mergedChildStyle = utils.mergeObjects(parentStyle, mergedChildStyle);
- styleSummary.displayName = styleElement.getAttributeNS(stylens, "display-name");
- styleSummary.isCommonStyle = isCommonStyleElement(styleElement)
- }else {
- runtime.log("No style element found for '" + styleName + "' of family '" + styleFamily + "'")
- }
- mergedChildStyle.orderedStyles.push(styleSummary)
- })
+ mergedChildStyle.styleProperties = utils.mergeObjects(parentStyle, mergedChildStyle.styleProperties);
+ styleSummary.displayName = styleElement.getAttributeNS(stylens, "display-name") || undefined;
+ styleSummary.isCommonStyle = isCommonStyleElement(styleElement);
+ } else {
+ runtime.log("No style element found for '" + styleName + "' of family '" + styleFamily + "'");
+ }
+ mergedChildStyle.orderedStyles.push(styleSummary);
+ });
});
- return mergedChildStyle
+ return mergedChildStyle;
}
function getAppliedStyles(nodes, calculatedStylesCache) {
var styleChains = {}, styles = [];
- if(!calculatedStylesCache) {
- calculatedStylesCache = {}
+ if (!calculatedStylesCache) {
+ calculatedStylesCache = {};
}
nodes.forEach(function(n) {
- buildStyleChain(n, styleChains)
+ buildStyleChain(n, styleChains);
});
Object.keys(styleChains).forEach(function(key) {
- if(!calculatedStylesCache[key]) {
- calculatedStylesCache[key] = calculateAppliedStyle(styleChains[key])
+ if (!calculatedStylesCache[key]) {
+ calculatedStylesCache[key] = calculateAppliedStyle(styleChains[key]);
}
- styles.push(calculatedStylesCache[key])
+ styles.push(calculatedStylesCache[key]);
});
- return styles
+ return styles;
}
this.getAppliedStyles = getAppliedStyles;
this.getAppliedStylesForElement = function(node, calculatedStylesCache) {
- return getAppliedStyles([node], calculatedStylesCache)[0]
+ return getAppliedStyles([node], calculatedStylesCache)[0];
};
this.updateStyle = function(styleNode, properties) {
- var fontName, fontFaceNode;
+ var fontName, fontFaceNode, textProperties;
domUtils.mapObjOntoNode(styleNode, properties, odf.Namespaces.lookupNamespaceURI);
- fontName = properties["style:text-properties"] && properties["style:text-properties"]["style:font-name"];
- if(fontName && !getFontMap().hasOwnProperty(fontName)) {
+ textProperties = (properties["style:text-properties"]);
+ fontName = (textProperties && textProperties["style:font-name"]);
+ if (fontName && !getFontMap().hasOwnProperty(fontName)) {
fontFaceNode = styleNode.ownerDocument.createElementNS(stylens, "style:font-face");
fontFaceNode.setAttributeNS(stylens, "style:name", fontName);
fontFaceNode.setAttributeNS(svgns, "svg:font-family", fontName);
- odfContainer.rootElement.fontFaceDecls.appendChild(fontFaceNode)
+ odfContainer.rootElement.fontFaceDecls.appendChild(fontFaceNode);
}
};
this.createDerivedStyleObject = function(parentStyleName, family, overrides) {
var originalStyleElement = (getStyleElement(parentStyleName, family)), newStyleObject;
runtime.assert(Boolean(originalStyleElement), "No style element found for '" + parentStyleName + "' of family '" + family + "'");
- if(isCommonStyleElement(originalStyleElement)) {
- newStyleObject = {"style:parent-style-name":parentStyleName}
- }else {
- newStyleObject = getStyleAttributes(originalStyleElement)
+ if (isCommonStyleElement(originalStyleElement)) {
+ newStyleObject = {"style:parent-style-name":parentStyleName};
+ } else {
+ newStyleObject = getStyleAttributes(originalStyleElement);
}
newStyleObject["style:family"] = family;
utils.mergeObjects(newStyleObject, overrides);
- return newStyleObject
+ return newStyleObject;
};
this.getDefaultTabStopDistance = function() {
var defaultParagraph = getDefaultStyleElement("paragraph"), paragraphProperties = defaultParagraph && defaultParagraph.firstElementChild, tabStopDistance;
- while(paragraphProperties) {
- if(paragraphProperties.namespaceURI === stylens && paragraphProperties.localName === "paragraph-properties") {
- tabStopDistance = paragraphProperties.getAttributeNS(stylens, "tab-stop-distance")
+ while (paragraphProperties) {
+ if (paragraphProperties.namespaceURI === stylens && paragraphProperties.localName === "paragraph-properties") {
+ tabStopDistance = paragraphProperties.getAttributeNS(stylens, "tab-stop-distance");
}
- paragraphProperties = paragraphProperties.nextElementSibling
+ paragraphProperties = paragraphProperties.nextElementSibling;
}
- if(!tabStopDistance) {
- tabStopDistance = "1.25cm"
+ if (!tabStopDistance) {
+ tabStopDistance = "1.25cm";
}
- return odfUtils.parseNonNegativeLength(tabStopDistance)
+ return odfUtils.parseNonNegativeLength(tabStopDistance);
};
+ function getMasterPageElement(pageName) {
+ var node = odfContainer.rootElement.masterStyles.firstElementChild;
+ while (node) {
+ if (node.namespaceURI === stylens && node.localName === "master-page" && node.getAttributeNS(stylens, "name") === pageName) {
+ break;
+ }
+ node = node.nextElementSibling;
+ }
+ return node;
+ }
+ this.getMasterPageElement = getMasterPageElement;
function getPageLayoutStyleElement(styleName, styleFamily) {
var masterPageName, layoutName, pageLayoutElements, node, i, styleElement = getStyleElement(styleName, styleFamily);
- runtime.assert(styleFamily === "paragraph" || styleFamily === "table", "styleFamily has to be either paragraph or table");
- if(styleElement) {
- masterPageName = styleElement.getAttributeNS(stylens, "master-page-name") || "Standard";
- node = odfContainer.rootElement.masterStyles.lastElementChild;
- while(node) {
- if(node.getAttributeNS(stylens, "name") === masterPageName) {
- break
- }
- node = node.previousElementSibling
- }
- layoutName = node.getAttributeNS(stylens, "page-layout-name");
- pageLayoutElements = domUtils.getElementsByTagNameNS(odfContainer.rootElement.automaticStyles, stylens, "page-layout");
- for(i = 0;i < pageLayoutElements.length;i += 1) {
- node = pageLayoutElements[i];
- if(node.getAttributeNS(stylens, "name") === layoutName) {
- return(node)
+ runtime.assert(styleFamily === "paragraph" || styleFamily === "table", "styleFamily must be either paragraph or table");
+ if (styleElement) {
+ masterPageName = styleElement.getAttributeNS(stylens, "master-page-name");
+ if (masterPageName) {
+ node = getMasterPageElement(masterPageName);
+ if (!node) {
+ runtime.log("WARN: No master page definition found for " + masterPageName);
+ }
+ }
+ if (!node) {
+ node = getMasterPageElement("Standard");
+ }
+ if (!node) {
+ node = (odfContainer.rootElement.masterStyles.getElementsByTagNameNS(stylens, "master-page")[0]);
+ if (!node) {
+ runtime.log("WARN: Document has no master pages defined");
+ }
+ }
+ if (node) {
+ layoutName = node.getAttributeNS(stylens, "page-layout-name");
+ pageLayoutElements = odfContainer.rootElement.automaticStyles.getElementsByTagNameNS(stylens, "page-layout");
+ for (i = 0;i < pageLayoutElements.length;i += 1) {
+ node = (pageLayoutElements.item(i));
+ if (node.getAttributeNS(stylens, "name") === layoutName) {
+ return node;
+ }
}
}
}
- return null
+ return null;
}
- function lengthInCm(length, defaultValue) {
- var result = odfUtils.parseLength(length), value = defaultValue;
- if(result) {
- switch(result.unit) {
- case "cm":
- value = result.value;
- break;
- case "mm":
- value = result.value * 0.1;
- break;
- case "in":
- value = result.value * 2.54;
- break;
- case "pt":
- value = result.value * 0.035277778;
- break;
- case "pc":
- ;
- case "px":
- ;
- case "em":
- break;
- default:
- runtime.log("Unit identifier: " + result.unit + " is not supported.");
- break
- }
+ function lengthInPx(length, defaultValue) {
+ var measure;
+ if (length) {
+ measure = cssUnits.convertMeasure(length, "px");
}
- return value
+ if (measure === undefined && defaultValue) {
+ measure = cssUnits.convertMeasure(defaultValue, "px");
+ }
+ return measure;
}
this.getContentSize = function(styleName, styleFamily) {
- var pageLayoutElement, props, printOrientation, defaultOrientedPageWidth, defaultOrientedPageHeight, pageWidth, pageHeight, margin, marginLeft, marginRight, marginTop, marginBottom, padding, paddingLeft, paddingRight, paddingTop, paddingBottom;
+ var pageLayoutElement, props, defaultOrientedPageWidth, defaultOrientedPageHeight, pageWidth, pageHeight, margin, marginLeft, marginRight, marginTop, marginBottom, padding, paddingLeft, paddingRight, paddingTop, paddingBottom;
pageLayoutElement = getPageLayoutStyleElement(styleName, styleFamily);
- if(!pageLayoutElement) {
- pageLayoutElement = domUtils.getDirectChild(odfContainer.rootElement.styles, stylens, "default-page-layout")
+ if (!pageLayoutElement) {
+ pageLayoutElement = domUtils.getDirectChild(odfContainer.rootElement.styles, stylens, "default-page-layout");
}
props = domUtils.getDirectChild(pageLayoutElement, stylens, "page-layout-properties");
- if(props) {
- printOrientation = props.getAttributeNS(stylens, "print-orientation") || "portrait";
- if(printOrientation === "portrait") {
- defaultOrientedPageWidth = defaultPageFormatSettings.width;
- defaultOrientedPageHeight = defaultPageFormatSettings.height
- }else {
+ if (props) {
+ if (props.getAttributeNS(stylens, "print-orientation") === "landscape") {
defaultOrientedPageWidth = defaultPageFormatSettings.height;
- defaultOrientedPageHeight = defaultPageFormatSettings.width
- }
- pageWidth = lengthInCm(props.getAttributeNS(fons, "page-width"), defaultOrientedPageWidth);
- pageHeight = lengthInCm(props.getAttributeNS(fons, "page-height"), defaultOrientedPageHeight);
- margin = lengthInCm(props.getAttributeNS(fons, "margin"), null);
- if(margin === null) {
- marginLeft = lengthInCm(props.getAttributeNS(fons, "margin-left"), defaultPageFormatSettings.margin);
- marginRight = lengthInCm(props.getAttributeNS(fons, "margin-right"), defaultPageFormatSettings.margin);
- marginTop = lengthInCm(props.getAttributeNS(fons, "margin-top"), defaultPageFormatSettings.margin);
- marginBottom = lengthInCm(props.getAttributeNS(fons, "margin-bottom"), defaultPageFormatSettings.margin)
- }else {
- marginLeft = marginRight = marginTop = marginBottom = margin
- }
- padding = lengthInCm(props.getAttributeNS(fons, "padding"), null);
- if(padding === null) {
- paddingLeft = lengthInCm(props.getAttributeNS(fons, "padding-left"), defaultPageFormatSettings.padding);
- paddingRight = lengthInCm(props.getAttributeNS(fons, "padding-right"), defaultPageFormatSettings.padding);
- paddingTop = lengthInCm(props.getAttributeNS(fons, "padding-top"), defaultPageFormatSettings.padding);
- paddingBottom = lengthInCm(props.getAttributeNS(fons, "padding-bottom"), defaultPageFormatSettings.padding)
- }else {
- paddingLeft = paddingRight = paddingTop = paddingBottom = padding
- }
- }
- return{width:pageWidth - marginLeft - marginRight - paddingLeft - paddingRight, height:pageHeight - marginTop - marginBottom - paddingTop - paddingBottom}
- }
-};
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-odf.StyleTreeNode = function StyleTreeNode(element) {
- this.derivedStyles = {};
- this.element = element
+ defaultOrientedPageHeight = defaultPageFormatSettings.width;
+ } else {
+ defaultOrientedPageWidth = defaultPageFormatSettings.width;
+ defaultOrientedPageHeight = defaultPageFormatSettings.height;
+ }
+ pageWidth = lengthInPx(props.getAttributeNS(fons, "page-width"), defaultOrientedPageWidth);
+ pageHeight = lengthInPx(props.getAttributeNS(fons, "page-height"), defaultOrientedPageHeight);
+ margin = lengthInPx(props.getAttributeNS(fons, "margin"));
+ if (margin === undefined) {
+ marginLeft = lengthInPx(props.getAttributeNS(fons, "margin-left"), defaultPageFormatSettings.margin);
+ marginRight = lengthInPx(props.getAttributeNS(fons, "margin-right"), defaultPageFormatSettings.margin);
+ marginTop = lengthInPx(props.getAttributeNS(fons, "margin-top"), defaultPageFormatSettings.margin);
+ marginBottom = lengthInPx(props.getAttributeNS(fons, "margin-bottom"), defaultPageFormatSettings.margin);
+ } else {
+ marginLeft = marginRight = marginTop = marginBottom = margin;
+ }
+ padding = lengthInPx(props.getAttributeNS(fons, "padding"));
+ if (padding === undefined) {
+ paddingLeft = lengthInPx(props.getAttributeNS(fons, "padding-left"), defaultPageFormatSettings.padding);
+ paddingRight = lengthInPx(props.getAttributeNS(fons, "padding-right"), defaultPageFormatSettings.padding);
+ paddingTop = lengthInPx(props.getAttributeNS(fons, "padding-top"), defaultPageFormatSettings.padding);
+ paddingBottom = lengthInPx(props.getAttributeNS(fons, "padding-bottom"), defaultPageFormatSettings.padding);
+ } else {
+ paddingLeft = paddingRight = paddingTop = paddingBottom = padding;
+ }
+ } else {
+ pageWidth = lengthInPx(defaultPageFormatSettings.width);
+ pageHeight = lengthInPx(defaultPageFormatSettings.height);
+ margin = lengthInPx(defaultPageFormatSettings.margin);
+ marginLeft = marginRight = marginTop = marginBottom = margin;
+ padding = lengthInPx(defaultPageFormatSettings.padding);
+ paddingLeft = paddingRight = paddingTop = paddingBottom = padding;
+ }
+ return {width:pageWidth - marginLeft - marginRight - paddingLeft - paddingRight, height:pageHeight - marginTop - marginBottom - paddingTop - paddingBottom};
+ };
};
-odf.Style2CSS = function Style2CSS() {
- var drawns = odf.Namespaces.drawns, fons = odf.Namespaces.fons, officens = odf.Namespaces.officens, stylens = odf.Namespaces.stylens, svgns = odf.Namespaces.svgns, tablens = odf.Namespaces.tablens, textns = odf.Namespaces.textns, xlinkns = odf.Namespaces.xlinkns, presentationns = odf.Namespaces.presentationns, domUtils = new core.DomUtils, familynamespaceprefixes = {"graphic":"draw", "drawing-page":"draw", "paragraph":"text", "presentation":"presentation", "ruby":"text", "section":"text", "table":"table",
- "table-cell":"table", "table-column":"table", "table-row":"table", "text":"text", "list":"text", "page":"office"}, familytagnames = {"graphic":["circle", "connected", "control", "custom-shape", "ellipse", "frame", "g", "line", "measure", "page", "page-thumbnail", "path", "polygon", "polyline", "rect", "regular-polygon"], "paragraph":["alphabetical-index-entry-template", "h", "illustration-index-entry-template", "index-source-style", "object-index-entry-template", "p", "table-index-entry-template",
- "table-of-content-entry-template", "user-index-entry-template"], "presentation":["caption", "circle", "connector", "control", "custom-shape", "ellipse", "frame", "g", "line", "measure", "page-thumbnail", "path", "polygon", "polyline", "rect", "regular-polygon"], "drawing-page":["caption", "circle", "connector", "control", "page", "custom-shape", "ellipse", "frame", "g", "line", "measure", "page-thumbnail", "path", "polygon", "polyline", "rect", "regular-polygon"], "ruby":["ruby", "ruby-text"],
- "section":["alphabetical-index", "bibliography", "illustration-index", "index-title", "object-index", "section", "table-of-content", "table-index", "user-index"], "table":["background", "table"], "table-cell":["body", "covered-table-cell", "even-columns", "even-rows", "first-column", "first-row", "last-column", "last-row", "odd-columns", "odd-rows", "table-cell"], "table-column":["table-column"], "table-row":["table-row"], "text":["a", "index-entry-chapter", "index-entry-link-end", "index-entry-link-start",
- "index-entry-page-number", "index-entry-span", "index-entry-tab-stop", "index-entry-text", "index-title-template", "linenumbering-configuration", "list-level-style-number", "list-level-style-bullet", "outline-level-style", "span"], "list":["list-item"]}, textPropertySimpleMapping = [[fons, "color", "color"], [fons, "background-color", "background-color"], [fons, "font-weight", "font-weight"], [fons, "font-style", "font-style"]], bgImageSimpleMapping = [[stylens, "repeat", "background-repeat"]],
- paragraphPropertySimpleMapping = [[fons, "background-color", "background-color"], [fons, "text-align", "text-align"], [fons, "text-indent", "text-indent"], [fons, "padding", "padding"], [fons, "padding-left", "padding-left"], [fons, "padding-right", "padding-right"], [fons, "padding-top", "padding-top"], [fons, "padding-bottom", "padding-bottom"], [fons, "border-left", "border-left"], [fons, "border-right", "border-right"], [fons, "border-top", "border-top"], [fons, "border-bottom", "border-bottom"],
- [fons, "margin", "margin"], [fons, "margin-left", "margin-left"], [fons, "margin-right", "margin-right"], [fons, "margin-top", "margin-top"], [fons, "margin-bottom", "margin-bottom"], [fons, "border", "border"]], graphicPropertySimpleMapping = [[fons, "background-color", "background-color"], [fons, "min-height", "min-height"], [drawns, "stroke", "border"], [svgns, "stroke-color", "border-color"], [svgns, "stroke-width", "border-width"], [fons, "border", "border"], [fons, "border-left", "border-left"],
- [fons, "border-right", "border-right"], [fons, "border-top", "border-top"], [fons, "border-bottom", "border-bottom"]], tablecellPropertySimpleMapping = [[fons, "background-color", "background-color"], [fons, "border-left", "border-left"], [fons, "border-right", "border-right"], [fons, "border-top", "border-top"], [fons, "border-bottom", "border-bottom"], [fons, "border", "border"]], tablecolumnPropertySimpleMapping = [[stylens, "column-width", "width"]], tablerowPropertySimpleMapping = [[stylens,
- "row-height", "height"], [fons, "keep-together", null]], tablePropertySimpleMapping = [[stylens, "width", "width"], [fons, "margin-left", "margin-left"], [fons, "margin-right", "margin-right"], [fons, "margin-top", "margin-top"], [fons, "margin-bottom", "margin-bottom"]], pageContentPropertySimpleMapping = [[fons, "background-color", "background-color"], [fons, "padding", "padding"], [fons, "padding-left", "padding-left"], [fons, "padding-right", "padding-right"], [fons, "padding-top", "padding-top"],
- [fons, "padding-bottom", "padding-bottom"], [fons, "border", "border"], [fons, "border-left", "border-left"], [fons, "border-right", "border-right"], [fons, "border-top", "border-top"], [fons, "border-bottom", "border-bottom"], [fons, "margin", "margin"], [fons, "margin-left", "margin-left"], [fons, "margin-right", "margin-right"], [fons, "margin-top", "margin-top"], [fons, "margin-bottom", "margin-bottom"]], pageSizePropertySimpleMapping = [[fons, "page-width", "width"], [fons, "page-height",
- "height"]], borderPropertyMap = {"border":true, "border-left":true, "border-right":true, "border-top":true, "border-bottom":true, "stroke-width":true}, fontFaceDeclsMap = {}, utils = new odf.OdfUtils, documentType, odfRoot, defaultFontSize, xpath = xmldom.XPath, cssUnits = new core.CSSUnits;
- function getStyleMap(stylesnode) {
- var node, name, family, style, stylemap = {};
- if(!stylesnode) {
- return stylemap
- }
- node = stylesnode.firstElementChild;
- while(node) {
- if(node.namespaceURI === stylens && (node.localName === "style" || node.localName === "default-style")) {
- family = node.getAttributeNS(stylens, "family")
- }else {
- if(node.namespaceURI === textns && node.localName === "list-style") {
- family = "list"
- }else {
- if(node.namespaceURI === stylens && (node.localName === "page-layout" || node.localName === "default-page-layout")) {
- family = "page"
- }else {
- family = undefined
+odf.Formatting.StyleMetadata;
+odf.Formatting.StyleData;
+odf.Formatting.AppliedStyle;
+(function() {
+ var stylens = odf.Namespaces.stylens, textns = odf.Namespaces.textns, familyNamespacePrefixes = {"graphic":"draw", "drawing-page":"draw", "paragraph":"text", "presentation":"presentation", "ruby":"text", "section":"text", "table":"table", "table-cell":"table", "table-column":"table", "table-row":"table", "text":"text", "list":"text", "page":"office"};
+ odf.StyleTreeNode = function StyleTreeNode(element) {
+ this.derivedStyles = {};
+ this.element = element;
+ };
+ odf.StyleTree = function StyleTree(styles, autoStyles) {
+ var tree = {};
+ function getStyleMap(stylesNode) {
+ var node, name, family, style, styleMap = {};
+ if (!stylesNode) {
+ return styleMap;
+ }
+ node = stylesNode.firstElementChild;
+ while (node) {
+ if (node.namespaceURI === stylens && (node.localName === "style" || node.localName === "default-style")) {
+ family = node.getAttributeNS(stylens, "family");
+ } else {
+ if (node.namespaceURI === textns && node.localName === "list-style") {
+ family = "list";
+ } else {
+ if (node.namespaceURI === stylens && (node.localName === "page-layout" || node.localName === "default-page-layout")) {
+ family = "page";
+ } else {
+ family = undefined;
+ }
}
}
- }
- if(family) {
- name = node.getAttributeNS(stylens, "name");
- if(!name) {
- name = ""
+ if (family) {
+ name = node.getAttributeNS(stylens, "name");
+ if (!name) {
+ name = "";
+ }
+ if (styleMap.hasOwnProperty(family)) {
+ style = styleMap[family];
+ } else {
+ styleMap[family] = style = {};
+ }
+ style[name] = node;
}
- if(stylemap.hasOwnProperty(family)) {
- style = stylemap[family]
- }else {
- stylemap[family] = style = {}
+ node = node.nextElementSibling;
+ }
+ return styleMap;
+ }
+ function findStyleTreeNode(stylesTree, name) {
+ if (stylesTree.hasOwnProperty(name)) {
+ return stylesTree[name];
+ }
+ var style = null, styleNames = Object.keys(stylesTree), i;
+ for (i = 0;i < styleNames.length;i += 1) {
+ style = findStyleTreeNode(stylesTree[styleNames[i]].derivedStyles, name);
+ if (style) {
+ break;
}
- style[name] = node
}
- node = node.nextElementSibling
+ return style;
+ }
+ function createStyleTreeNode(styleName, stylesMap, stylesTree) {
+ var style, parentname, parentstyle;
+ if (!stylesMap.hasOwnProperty(styleName)) {
+ return null;
+ }
+ style = new odf.StyleTreeNode(stylesMap[styleName]);
+ parentname = style.element.getAttributeNS(stylens, "parent-style-name");
+ parentstyle = null;
+ if (parentname) {
+ parentstyle = findStyleTreeNode(stylesTree, parentname) || createStyleTreeNode(parentname, stylesMap, stylesTree);
+ }
+ if (parentstyle) {
+ parentstyle.derivedStyles[styleName] = style;
+ } else {
+ stylesTree[styleName] = style;
+ }
+ delete stylesMap[styleName];
+ return style;
+ }
+ function addStyleMapToStyleTree(stylesMap, stylesTree) {
+ if (stylesMap) {
+ Object.keys(stylesMap).forEach(function(styleName) {
+ createStyleTreeNode(styleName, stylesMap, stylesTree);
+ });
+ }
}
- return stylemap
+ this.getStyleTree = function() {
+ return tree;
+ };
+ function init() {
+ var subTree, styleNodes, autoStyleNodes;
+ styleNodes = getStyleMap(styles);
+ autoStyleNodes = getStyleMap(autoStyles);
+ Object.keys(familyNamespacePrefixes).forEach(function(family) {
+ subTree = tree[family] = {};
+ addStyleMapToStyleTree(styleNodes[family], subTree);
+ addStyleMapToStyleTree(autoStyleNodes[family], subTree);
+ });
+ }
+ init();
+ };
+})();
+odf.StyleTree.Tree;
+(function() {
+ var fons = odf.Namespaces.fons, stylens = odf.Namespaces.stylens, textns = odf.Namespaces.textns, xmlns = odf.Namespaces.xmlns, helperns = "urn:webodf:names:helper", listCounterIdSuffix = "webodf-listLevel", stylemap = {1:"decimal", "a":"lower-latin", "A":"upper-latin", "i":"lower-roman", "I":"upper-roman"};
+ function appendRule(styleSheet, rule) {
+ try {
+ styleSheet.insertRule(rule, styleSheet.cssRules.length);
+ } catch (e) {
+ runtime.log("cannot load rule: " + rule + " - " + e);
+ }
+ }
+ function ParseState(contentRules, continuedCounterIdStack) {
+ this.listCounterCount = 0;
+ this.contentRules = contentRules;
+ this.counterIdStack = [];
+ this.continuedCounterIdStack = continuedCounterIdStack;
+ }
+ function UniqueListCounter(styleSheet) {
+ var customListIdIndex = 0, globalCounterResetRule = "", counterIdStacks = {};
+ function getCounterIdStack(list) {
+ var counterId, stack = [];
+ if (list) {
+ counterId = list.getAttributeNS(helperns, "counter-id");
+ stack = counterIdStacks[counterId].slice(0);
+ }
+ return stack;
+ }
+ function createCssRulesForList(topLevelListId, listElement, listLevel, parseState) {
+ var newListSelectorId, newListCounterId, newRule, contentRule, i;
+ parseState.listCounterCount += 1;
+ newListSelectorId = topLevelListId + "-level" + listLevel + "-" + parseState.listCounterCount;
+ listElement.setAttributeNS(helperns, "counter-id", newListSelectorId);
+ newListCounterId = parseState.continuedCounterIdStack.shift();
+ if (!newListCounterId) {
+ newListCounterId = newListSelectorId;
+ globalCounterResetRule += newListSelectorId + " 1 ";
+ newRule = 'text|list[webodfhelper|counter-id="' + newListSelectorId + '"]';
+ newRule += " > text|list-item:first-child > :not(text|list):first-child:before";
+ newRule += "{";
+ newRule += "counter-increment: " + newListCounterId + " 0;";
+ newRule += "}";
+ appendRule(styleSheet, newRule);
+ }
+ while (parseState.counterIdStack.length >= listLevel) {
+ parseState.counterIdStack.pop();
+ }
+ parseState.counterIdStack.push(newListCounterId);
+ contentRule = parseState.contentRules[listLevel.toString()] || "";
+ for (i = 1;i <= listLevel;i += 1) {
+ contentRule = contentRule.replace(i + listCounterIdSuffix, parseState.counterIdStack[i - 1]);
+ }
+ newRule = 'text|list[webodfhelper|counter-id="' + newListSelectorId + '"]';
+ newRule += " > text|list-item > :not(text|list):first-child:before";
+ newRule += "{";
+ newRule += contentRule;
+ newRule += "counter-increment: " + newListCounterId + ";";
+ newRule += "}";
+ appendRule(styleSheet, newRule);
+ }
+ function iterateOverChildListElements(topLevelListId, element, listLevel, parseState) {
+ var isListElement = element.namespaceURI === textns && element.localName === "list", isListItemElement = element.namespaceURI === textns && element.localName === "list-item", childElement;
+ if (!isListElement && !isListItemElement) {
+ parseState.continuedCounterIdStack = [];
+ return;
+ }
+ if (isListElement) {
+ listLevel += 1;
+ createCssRulesForList(topLevelListId, element, listLevel, parseState);
+ }
+ childElement = element.firstElementChild;
+ while (childElement) {
+ iterateOverChildListElements(topLevelListId, childElement, listLevel, parseState);
+ childElement = childElement.nextElementSibling;
+ }
+ }
+ this.createCounterRules = function(contentRules, list, continuedList) {
+ var listId = list.getAttributeNS(xmlns, "id"), currentParseState = new ParseState(contentRules, getCounterIdStack(continuedList));
+ if (!listId) {
+ customListIdIndex += 1;
+ listId = "X" + customListIdIndex;
+ } else {
+ listId = "Y" + listId;
+ }
+ iterateOverChildListElements(listId, list, 0, currentParseState);
+ counterIdStacks[listId + "-level1-1"] = currentParseState.counterIdStack;
+ };
+ this.initialiseCreatedCounters = function() {
+ var newRule;
+ newRule = "office|document";
+ newRule += "{";
+ newRule += "counter-reset: " + globalCounterResetRule + ";";
+ newRule += "}";
+ appendRule(styleSheet, newRule);
+ };
}
- function findStyle(stylestree, name) {
- if(stylestree.hasOwnProperty(name)) {
- return stylestree[name]
+ odf.ListStyleToCss = function ListStyleToCss() {
+ var cssUnits = new core.CSSUnits, odfUtils = odf.OdfUtils;
+ function convertToPxValue(value) {
+ var parsedLength = odfUtils.parseLength(value);
+ if (!parsedLength) {
+ runtime.log("Could not parse value '" + value + "'.");
+ return 0;
+ }
+ return cssUnits.convert(parsedLength.value, parsedLength.unit, "px");
+ }
+ function escapeCSSString(value) {
+ return value.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
+ }
+ function isMatchingListStyle(list, matchingStyleName) {
+ var styleName;
+ if (list) {
+ styleName = list.getAttributeNS(textns, "style-name");
+ }
+ return styleName === matchingStyleName;
+ }
+ function getNumberRule(node) {
+ var style = node.getAttributeNS(stylens, "num-format"), suffix = node.getAttributeNS(stylens, "num-suffix") || "", prefix = node.getAttributeNS(stylens, "num-prefix") || "", content = "", textLevel = node.getAttributeNS(textns, "level"), displayLevels = node.getAttributeNS(textns, "display-levels");
+ if (prefix) {
+ content += '"' + escapeCSSString(prefix) + '"\n';
+ }
+ if (stylemap.hasOwnProperty(style)) {
+ textLevel = textLevel ? parseInt(textLevel, 10) : 1;
+ displayLevels = displayLevels ? parseInt(displayLevels, 10) : 1;
+ while (displayLevels > 0) {
+ content += " counter(" + (textLevel - displayLevels + 1) + listCounterIdSuffix + "," + stylemap[style] + ")";
+ if (displayLevels > 1) {
+ content += '"."';
+ }
+ displayLevels -= 1;
+ }
+ } else {
+ if (style) {
+ content += ' "' + style + '"';
+ } else {
+ content += ' ""';
+ }
+ }
+ return "content:" + content + ' "' + escapeCSSString(suffix) + '"';
+ }
+ function getImageRule() {
+ return "content: none";
+ }
+ function getBulletRule(node) {
+ var bulletChar = node.getAttributeNS(textns, "bullet-char");
+ return 'content: "' + escapeCSSString(bulletChar) + '"';
+ }
+ function getContentRule(node) {
+ var contentRule = "", listLevelProps, listLevelPositionSpaceMode, listLevelLabelAlign, followedBy;
+ if (node.localName === "list-level-style-number") {
+ contentRule = getNumberRule(node);
+ } else {
+ if (node.localName === "list-level-style-image") {
+ contentRule = getImageRule();
+ } else {
+ if (node.localName === "list-level-style-bullet") {
+ contentRule = getBulletRule(node);
+ }
+ }
+ }
+ listLevelProps = (node.getElementsByTagNameNS(stylens, "list-level-properties")[0]);
+ if (listLevelProps) {
+ listLevelPositionSpaceMode = listLevelProps.getAttributeNS(textns, "list-level-position-and-space-mode");
+ if (listLevelPositionSpaceMode === "label-alignment") {
+ listLevelLabelAlign = (listLevelProps.getElementsByTagNameNS(stylens, "list-level-label-alignment")[0]);
+ if (listLevelLabelAlign) {
+ followedBy = listLevelLabelAlign.getAttributeNS(textns, "label-followed-by");
+ }
+ if (followedBy === "space") {
+ contentRule += ' "\\a0"';
+ }
+ }
+ }
+ return "\n" + contentRule + ";\n";
+ }
+ function getAllContentRules(listStyleNode) {
+ var childNode = listStyleNode.firstElementChild, level, rules = {};
+ while (childNode) {
+ level = childNode.getAttributeNS(textns, "level");
+ level = level && parseInt(level, 10);
+ rules[level] = getContentRule(childNode);
+ childNode = childNode.nextElementSibling;
+ }
+ return rules;
+ }
+ function addListStyleRule(styleSheet, name, node) {
+ var selector = 'text|list[text|style-name="' + name + '"]', level = node.getAttributeNS(textns, "level"), selectorLevel, listItemRule, listLevelProps, listLevelPositionSpaceMode, listLevelLabelAlign, listIndent, textAlign, bulletWidth, labelDistance, bulletIndent, followedBy, leftOffset;
+ listLevelProps = (node.getElementsByTagNameNS(stylens, "list-level-properties")[0]);
+ listLevelPositionSpaceMode = listLevelProps && listLevelProps.getAttributeNS(textns, "list-level-position-and-space-mode");
+ listLevelLabelAlign = (listLevelProps) && (listLevelProps.getElementsByTagNameNS(stylens, "list-level-label-alignment")[0]);
+ level = level && parseInt(level, 10);
+ selectorLevel = level;
+ while (selectorLevel > 1) {
+ selector += " > text|list-item > text|list";
+ selectorLevel -= 1;
+ }
+ textAlign = listLevelProps && listLevelProps.getAttributeNS(fons, "text-align") || "left";
+ switch(textAlign) {
+ case "end":
+ textAlign = "right";
+ break;
+ case "start":
+ textAlign = "left";
+ break;
+ }
+ if (listLevelPositionSpaceMode === "label-alignment") {
+ listIndent = listLevelLabelAlign && listLevelLabelAlign.getAttributeNS(fons, "margin-left") || "0px";
+ bulletIndent = listLevelLabelAlign && listLevelLabelAlign.getAttributeNS(fons, "text-indent") || "0px";
+ followedBy = listLevelLabelAlign && listLevelLabelAlign.getAttributeNS(textns, "label-followed-by");
+ leftOffset = convertToPxValue(listIndent);
+ } else {
+ listIndent = listLevelProps && listLevelProps.getAttributeNS(textns, "space-before") || "0px";
+ bulletWidth = listLevelProps && listLevelProps.getAttributeNS(textns, "min-label-width") || "0px";
+ labelDistance = listLevelProps && listLevelProps.getAttributeNS(textns, "min-label-distance") || "0px";
+ leftOffset = convertToPxValue(listIndent) + convertToPxValue(bulletWidth);
+ }
+ listItemRule = selector + " > text|list-item";
+ listItemRule += "{";
+ listItemRule += "margin-left: " + leftOffset + "px;";
+ listItemRule += "}";
+ appendRule(styleSheet, listItemRule);
+ listItemRule = selector + " > text|list-item > text|list";
+ listItemRule += "{";
+ listItemRule += "margin-left: " + -leftOffset + "px;";
+ listItemRule += "}";
+ appendRule(styleSheet, listItemRule);
+ listItemRule = selector + " > text|list-item > :not(text|list):first-child:before";
+ listItemRule += "{";
+ listItemRule += "text-align: " + textAlign + ";";
+ listItemRule += "display: inline-block;";
+ if (listLevelPositionSpaceMode === "label-alignment") {
+ listItemRule += "margin-left: " + bulletIndent + ";";
+ if (followedBy === "listtab") {
+ listItemRule += "padding-right: 0.2cm;";
+ }
+ } else {
+ listItemRule += "min-width: " + bulletWidth + ";";
+ listItemRule += "margin-left: " + (parseFloat(bulletWidth) === 0 ? "" : "-") + bulletWidth + ";";
+ listItemRule += "padding-right: " + labelDistance + ";";
+ }
+ listItemRule += "}";
+ appendRule(styleSheet, listItemRule);
+ }
+ function addRule(styleSheet, name, node) {
+ var n = node.firstElementChild;
+ while (n) {
+ if (n.namespaceURI === textns) {
+ addListStyleRule(styleSheet, name, n);
+ }
+ n = n.nextElementSibling;
+ }
+ }
+ function applyContentBasedStyles(styleSheet, odfBody, listStyles) {
+ var lists = odfBody.getElementsByTagNameNS(textns, "list"), listCounter = new UniqueListCounter(styleSheet), list, previousList, continueNumbering, continueListXmlId, xmlId, styleName, contentRules, listsWithXmlId = {}, i;
+ for (i = 0;i < lists.length;i += 1) {
+ list = (lists.item(i));
+ styleName = list.getAttributeNS(textns, "style-name");
+ if (styleName) {
+ continueNumbering = list.getAttributeNS(textns, "continue-numbering");
+ continueListXmlId = list.getAttributeNS(textns, "continue-list");
+ xmlId = list.getAttributeNS(xmlns, "id");
+ if (xmlId) {
+ listsWithXmlId[xmlId] = list;
+ }
+ contentRules = getAllContentRules(listStyles[styleName].element);
+ if (continueNumbering && !continueListXmlId && isMatchingListStyle(previousList, styleName)) {
+ listCounter.createCounterRules(contentRules, list, previousList);
+ } else {
+ if (continueListXmlId && isMatchingListStyle(listsWithXmlId[continueListXmlId], styleName)) {
+ listCounter.createCounterRules(contentRules, list, listsWithXmlId[continueListXmlId]);
+ } else {
+ listCounter.createCounterRules(contentRules, list);
+ }
+ }
+ previousList = list;
+ }
+ }
+ listCounter.initialiseCreatedCounters();
}
- var n, style = null;
- for(n in stylestree) {
- if(stylestree.hasOwnProperty(n)) {
- style = findStyle(stylestree[n].derivedStyles, name);
- if(style) {
- break
+ this.applyListStyles = function(styleSheet, styleTree, odfBody) {
+ var styleFamilyTree, node;
+ styleFamilyTree = styleTree["list"];
+ if (styleFamilyTree) {
+ Object.keys(styleFamilyTree).forEach(function(styleName) {
+ node = (styleFamilyTree[styleName]);
+ addRule(styleSheet, styleName, node.element);
+ });
+ }
+ applyContentBasedStyles(styleSheet, odfBody, styleFamilyTree);
+ };
+ };
+})();
+odf.LazyStyleProperties = function(parent, getters) {
+ var data = {};
+ this.value = function(name) {
+ var v;
+ if (data.hasOwnProperty(name)) {
+ v = data[name];
+ } else {
+ v = getters[name]();
+ if (v === undefined && parent) {
+ v = parent.value(name);
+ }
+ data[name] = v;
+ }
+ return v;
+ };
+ this.reset = function(p) {
+ parent = p;
+ data = {};
+ };
+};
+odf.StyleParseUtils = function() {
+ var stylens = odf.Namespaces.stylens;
+ function splitLength(length) {
+ var re = /(-?[0-9]*[0-9][0-9]*(\.[0-9]*)?|0+\.[0-9]*[1-9][0-9]*|\.[0-9]*[1-9][0-9]*)((cm)|(mm)|(in)|(pt)|(pc)|(px))/, m = re.exec(length);
+ if (!m) {
+ return null;
+ }
+ return {value:parseFloat(m[1]), unit:m[3]};
+ }
+ function parseLength(val) {
+ var n, length, unit;
+ length = splitLength(val);
+ unit = length && length.unit;
+ if (unit === "px") {
+ n = length.value;
+ } else {
+ if (unit === "cm") {
+ n = length.value / 2.54 * 96;
+ } else {
+ if (unit === "mm") {
+ n = length.value / 25.4 * 96;
+ } else {
+ if (unit === "in") {
+ n = length.value * 96;
+ } else {
+ if (unit === "pt") {
+ n = length.value / .75;
+ } else {
+ if (unit === "pc") {
+ n = length.value * 16;
+ }
+ }
+ }
}
}
}
- return style
+ return n;
}
- function addStyleToStyleTree(stylename, stylesmap, stylestree) {
- var style, parentname, parentstyle;
- if(!stylesmap.hasOwnProperty(stylename)) {
- return null
+ this.parseLength = parseLength;
+ function parsePercent(value) {
+ var v;
+ if (value) {
+ v = parseFloat(value.substr(0, value.indexOf("%")));
+ if (isNaN(v)) {
+ v = undefined;
+ }
}
- style = new odf.StyleTreeNode(stylesmap[stylename]);
- parentname = style.element.getAttributeNS(stylens, "parent-style-name");
- parentstyle = null;
- if(parentname) {
- parentstyle = findStyle(stylestree, parentname) || addStyleToStyleTree(parentname, stylesmap, stylestree)
+ return v;
+ }
+ function parsePositiveLengthOrPercent(value, name, parent) {
+ var v = parsePercent(value), parentValue;
+ if (v !== undefined) {
+ if (parent) {
+ parentValue = parent.value(name);
+ }
+ if (parentValue === undefined) {
+ v = undefined;
+ } else {
+ v *= (parentValue) / 100;
+ }
+ } else {
+ v = parseLength(value);
}
- if(parentstyle) {
- parentstyle.derivedStyles[stylename] = style
- }else {
- stylestree[stylename] = style
+ return v;
+ }
+ this.parsePositiveLengthOrPercent = parsePositiveLengthOrPercent;
+ function getPropertiesElement(name, styleElement, previousPropertyElement) {
+ var e = previousPropertyElement ? previousPropertyElement.nextElementSibling : styleElement.firstElementChild;
+ while (e !== null && (e.localName !== name || e.namespaceURI !== stylens)) {
+ e = e.nextElementSibling;
}
- delete stylesmap[stylename];
- return style
+ return e;
}
- function addStyleMapToStyleTree(stylesmap, stylestree) {
- var name;
- for(name in stylesmap) {
- if(stylesmap.hasOwnProperty(name)) {
- addStyleToStyleTree(name, stylesmap, stylestree)
- }
+ this.getPropertiesElement = getPropertiesElement;
+ function parseAttributeList(text) {
+ if (text) {
+ text = text.replace(/^\s*(.*?)\s*$/g, "$1");
}
+ return text && text.length > 0 ? text.split(/\s+/) : [];
}
+ this.parseAttributeList = parseAttributeList;
+};
+odf.Style2CSS = function Style2CSS() {
+ var drawns = odf.Namespaces.drawns, fons = odf.Namespaces.fons, officens = odf.Namespaces.officens, stylens = odf.Namespaces.stylens, svgns = odf.Namespaces.svgns, tablens = odf.Namespaces.tablens, xlinkns = odf.Namespaces.xlinkns, presentationns = odf.Namespaces.presentationns, webodfhelperns = "urn:webodf:names:helper", domUtils = core.DomUtils, styleParseUtils = new odf.StyleParseUtils, familynamespaceprefixes = {"graphic":"draw", "drawing-page":"draw", "paragraph":"text", "presentation":"presentation",
+ "ruby":"text", "section":"text", "table":"table", "table-cell":"table", "table-column":"table", "table-row":"table", "text":"text", "list":"text", "page":"office"}, familytagnames = {"graphic":["circle", "connected", "control", "custom-shape", "ellipse", "frame", "g", "line", "measure", "page", "page-thumbnail", "path", "polygon", "polyline", "rect", "regular-polygon"], "paragraph":["alphabetical-index-entry-template", "h", "illustration-index-entry-template", "index-source-style", "object-index-entry-template",
+ "p", "table-index-entry-template", "table-of-content-entry-template", "user-index-entry-template"], "presentation":["caption", "circle", "connector", "control", "custom-shape", "ellipse", "frame", "g", "line", "measure", "page-thumbnail", "path", "polygon", "polyline", "rect", "regular-polygon"], "drawing-page":["caption", "circle", "connector", "control", "page", "custom-shape", "ellipse", "frame", "g", "line", "measure", "page-thumbnail", "path", "polygon", "polyline", "rect", "regular-polygon"],
+ "ruby":["ruby", "ruby-text"], "section":["alphabetical-index", "bibliography", "illustration-index", "index-title", "object-index", "section", "table-of-content", "table-index", "user-index"], "table":["background", "table"], "table-cell":["body", "covered-table-cell", "even-columns", "even-rows", "first-column", "first-row", "last-column", "last-row", "odd-columns", "odd-rows", "table-cell"], "table-column":["table-column"], "table-row":["table-row"], "text":["a", "index-entry-chapter", "index-entry-link-end",
+ "index-entry-link-start", "index-entry-page-number", "index-entry-span", "index-entry-tab-stop", "index-entry-text", "index-title-template", "linenumbering-configuration", "list-level-style-number", "list-level-style-bullet", "outline-level-style", "span"], "list":["list-item"]}, textPropertySimpleMapping = [[fons, "color", "color"], [fons, "background-color", "background-color"], [fons, "font-weight", "font-weight"], [fons, "font-style", "font-style"]], bgImageSimpleMapping = [[stylens, "repeat",
+ "background-repeat"]], paragraphPropertySimpleMapping = [[fons, "background-color", "background-color"], [fons, "text-align", "text-align"], [fons, "text-indent", "text-indent"], [fons, "padding", "padding"], [fons, "padding-left", "padding-left"], [fons, "padding-right", "padding-right"], [fons, "padding-top", "padding-top"], [fons, "padding-bottom", "padding-bottom"], [fons, "border-left", "border-left"], [fons, "border-right", "border-right"], [fons, "border-top", "border-top"], [fons, "border-bottom",
+ "border-bottom"], [fons, "margin", "margin"], [fons, "margin-left", "margin-left"], [fons, "margin-right", "margin-right"], [fons, "margin-top", "margin-top"], [fons, "margin-bottom", "margin-bottom"], [fons, "border", "border"]], graphicPropertySimpleMapping = [[fons, "background-color", "background-color"], [fons, "min-height", "min-height"], [drawns, "stroke", "border"], [svgns, "stroke-color", "border-color"], [svgns, "stroke-width", "border-width"], [fons, "border", "border"], [fons, "border-left",
+ "border-left"], [fons, "border-right", "border-right"], [fons, "border-top", "border-top"], [fons, "border-bottom", "border-bottom"]], tablecellPropertySimpleMapping = [[fons, "background-color", "background-color"], [fons, "border-left", "border-left"], [fons, "border-right", "border-right"], [fons, "border-top", "border-top"], [fons, "border-bottom", "border-bottom"], [fons, "border", "border"]], tablecolumnPropertySimpleMapping = [[stylens, "column-width", "width"]], tablerowPropertySimpleMapping =
+ [[stylens, "row-height", "height"], [fons, "keep-together", null]], tablePropertySimpleMapping = [[stylens, "width", "width"], [fons, "margin-left", "margin-left"], [fons, "margin-right", "margin-right"], [fons, "margin-top", "margin-top"], [fons, "margin-bottom", "margin-bottom"]], pageContentPropertySimpleMapping = [[fons, "background-color", "background-color"], [fons, "padding", "padding"], [fons, "padding-left", "padding-left"], [fons, "padding-right", "padding-right"], [fons, "padding-top",
+ "padding-top"], [fons, "padding-bottom", "padding-bottom"], [fons, "border", "border"], [fons, "border-left", "border-left"], [fons, "border-right", "border-right"], [fons, "border-top", "border-top"], [fons, "border-bottom", "border-bottom"], [fons, "margin", "margin"], [fons, "margin-left", "margin-left"], [fons, "margin-right", "margin-right"], [fons, "margin-top", "margin-top"], [fons, "margin-bottom", "margin-bottom"]], pageSizePropertySimpleMapping = [[fons, "page-width", "width"], [fons,
+ "page-height", "height"]], borderPropertyMap = {"border":true, "border-left":true, "border-right":true, "border-top":true, "border-bottom":true, "stroke-width":true}, marginPropertyMap = {"margin":true, "margin-left":true, "margin-right":true, "margin-top":true, "margin-bottom":true}, fontFaceDeclsMap = {}, utils = odf.OdfUtils, documentType, odfRoot, defaultFontSize, xpath = xmldom.XPath, cssUnits = new core.CSSUnits;
function createSelector(family, name) {
var prefix = familynamespaceprefixes[family], namepart, selector;
- if(prefix === undefined) {
- return null
+ if (prefix === undefined) {
+ return null;
}
- if(name) {
- namepart = "[" + prefix + '|style-name="' + name + '"]'
- }else {
- namepart = ""
+ if (name) {
+ namepart = "[" + prefix + '|style-name="' + name + '"]';
+ } else {
+ namepart = "";
}
- if(prefix === "presentation") {
+ if (prefix === "presentation") {
prefix = "draw";
- if(name) {
- namepart = '[presentation|style-name="' + name + '"]'
- }else {
- namepart = ""
+ if (name) {
+ namepart = '[presentation|style-name="' + name + '"]';
+ } else {
+ namepart = "";
}
}
selector = prefix + "|" + familytagnames[family].join(namepart + "," + prefix + "|") + namepart;
- return selector
+ return selector;
}
function getSelectors(family, name, node) {
var selectors = [], ss, derivedStyles = node.derivedStyles, n;
ss = createSelector(family, name);
- if(ss !== null) {
- selectors.push(ss)
+ if (ss !== null) {
+ selectors.push(ss);
}
- for(n in derivedStyles) {
- if(derivedStyles.hasOwnProperty(n)) {
+ for (n in derivedStyles) {
+ if (derivedStyles.hasOwnProperty(n)) {
ss = getSelectors(family, n, derivedStyles[n]);
- selectors = selectors.concat(ss)
+ selectors = selectors.concat(ss);
}
}
- return selectors
+ return selectors;
}
function fixBorderWidth(value) {
var index = value.indexOf(" "), width, theRestOfBorderAttributes;
- if(index !== -1) {
+ if (index !== -1) {
width = value.substring(0, index);
- theRestOfBorderAttributes = value.substring(index)
- }else {
+ theRestOfBorderAttributes = value.substring(index);
+ } else {
width = value;
- theRestOfBorderAttributes = ""
+ theRestOfBorderAttributes = "";
}
width = utils.parseLength(width);
- if(width && (width.unit === "pt" && width.value < 0.75)) {
- value = "0.75pt" + theRestOfBorderAttributes
+ if (width && width.unit === "pt" && width.value < .75) {
+ value = "0.75pt" + theRestOfBorderAttributes;
+ }
+ return value;
+ }
+ function getParentStyleNode(styleNode) {
+ var parentStyleName = "", parentStyleFamily = "", parentStyleNode = null, xp;
+ if (styleNode.localName === "default-style") {
+ return null;
+ }
+ parentStyleName = styleNode.getAttributeNS(stylens, "parent-style-name");
+ parentStyleFamily = styleNode.getAttributeNS(stylens, "family");
+ if (parentStyleName) {
+ xp = "//style:*[@style:name='" + parentStyleName + "'][@style:family='" + parentStyleFamily + "']";
+ } else {
+ xp = "//style:default-style[@style:family='" + parentStyleFamily + "']";
}
- return value
+ parentStyleNode = xpath.getODFElementsWithXPath((odfRoot), xp, odf.Namespaces.lookupNamespaceURI)[0];
+ return parentStyleNode;
+ }
+ function fixMargin(props, namespace, name, value) {
+ var length = utils.parseLength(value), multiplier, parentStyle, parentLength, result, properties;
+ if (!length || length.unit !== "%") {
+ return value;
+ }
+ multiplier = length.value / 100;
+ parentStyle = getParentStyleNode((props.parentNode));
+ result = "0";
+ while (parentStyle) {
+ properties = domUtils.getDirectChild(parentStyle, stylens, "paragraph-properties");
+ if (properties) {
+ parentLength = utils.parseLength(properties.getAttributeNS(namespace, name));
+ if (parentLength) {
+ if (parentLength.unit !== "%") {
+ result = parentLength.value * multiplier + parentLength.unit;
+ break;
+ }
+ multiplier *= parentLength.value / 100;
+ }
+ }
+ parentStyle = getParentStyleNode(parentStyle);
+ }
+ return result;
}
function applySimpleMapping(props, mapping) {
var rule = "", i, r, value;
- for(i = 0;i < mapping.length;i += 1) {
+ for (i = 0;i < mapping.length;i += 1) {
r = mapping[i];
value = props.getAttributeNS(r[0], r[1]);
- if(value) {
+ if (value) {
value = value.trim();
- if(borderPropertyMap.hasOwnProperty(r[1])) {
- value = fixBorderWidth(value)
+ if (borderPropertyMap.hasOwnProperty(r[1])) {
+ value = fixBorderWidth(value);
+ } else {
+ if (marginPropertyMap.hasOwnProperty(r[1])) {
+ value = fixMargin(props, r[0], r[1], value);
+ }
}
- if(r[2]) {
- rule += r[2] + ":" + value + ";"
+ if (r[2]) {
+ rule += r[2] + ":" + value + ";";
}
}
}
- return rule
+ return rule;
}
function getFontSize(styleNode) {
var props = domUtils.getDirectChild(styleNode, stylens, "text-properties");
- if(props) {
- return utils.parseFoFontSize(props.getAttributeNS(fons, "font-size"))
+ if (props) {
+ return utils.parseFoFontSize(props.getAttributeNS(fons, "font-size"));
}
- return null
+ return null;
}
- function getParentStyleNode(styleNode) {
- var parentStyleName = "", parentStyleFamily = "", parentStyleNode = null, xp;
- if(styleNode.localName === "default-style") {
- return null
- }
- parentStyleName = styleNode.getAttributeNS(stylens, "parent-style-name");
- parentStyleFamily = styleNode.getAttributeNS(stylens, "family");
- if(parentStyleName) {
- xp = "//style:*[@style:name='" + parentStyleName + "'][@style:family='" + parentStyleFamily + "']"
- }else {
- xp = "//style:default-style[@style:family='" + parentStyleFamily + "']"
- }
- parentStyleNode = xpath.getODFElementsWithXPath((odfRoot), xp, odf.Namespaces.lookupNamespaceURI)[0];
- return parentStyleNode
+ function parseTextPosition(position) {
+ var parts = styleParseUtils.parseAttributeList(position);
+ return {verticalTextPosition:parts[0], fontHeight:parts[1]};
}
function getTextProperties(props) {
- var rule = "", fontName, fontSize, value, textDecoration = "", fontSizeRule = "", sizeMultiplier = 1, parentStyle;
+ var rule = "", fontName, fontSize, value, textDecorationLine = "", textDecorationStyle = "", textPosition, fontSizeRule = "", sizeMultiplier = 1, textFamilyStyleNode;
rule += applySimpleMapping(props, textPropertySimpleMapping);
value = props.getAttributeNS(stylens, "text-underline-style");
- if(value === "solid") {
- textDecoration += " underline"
+ if (value === "solid") {
+ textDecorationLine += " underline";
}
value = props.getAttributeNS(stylens, "text-line-through-style");
- if(value === "solid") {
- textDecoration += " line-through"
+ if (value === "solid") {
+ textDecorationLine += " line-through";
+ }
+ if (textDecorationLine.length) {
+ rule += "text-decoration:" + textDecorationLine + ";\n";
+ rule += "text-decoration-line:" + textDecorationLine + ";\n";
+ rule += "-moz-text-decoration-line:" + textDecorationLine + ";\n";
+ }
+ value = props.getAttributeNS(stylens, "text-line-through-type");
+ switch(value) {
+ case "double":
+ textDecorationStyle += " double";
+ break;
+ case "single":
+ textDecorationStyle += " single";
+ break;
}
- if(textDecoration.length) {
- textDecoration = "text-decoration:" + textDecoration + ";";
- rule += textDecoration
+ if (textDecorationStyle) {
+ rule += "text-decoration-style:" + textDecorationStyle + ";\n";
+ rule += "-moz-text-decoration-style:" + textDecorationStyle + ";\n";
}
fontName = props.getAttributeNS(stylens, "font-name") || props.getAttributeNS(fons, "font-family");
- if(fontName) {
+ if (fontName) {
value = fontFaceDeclsMap[fontName];
- rule += "font-family: " + (value || fontName) + ";"
- }
- parentStyle = (props.parentNode);
- fontSize = getFontSize(parentStyle);
- if(!fontSize) {
- return rule
- }
- while(parentStyle) {
- fontSize = getFontSize(parentStyle);
- if(fontSize) {
- if(fontSize.unit !== "%") {
- fontSizeRule = "font-size: " + fontSize.value * sizeMultiplier + fontSize.unit + ";";
- break
+ rule += "font-family: " + (value || fontName) + ";";
+ }
+ value = props.getAttributeNS(stylens, "text-position");
+ if (value) {
+ textPosition = parseTextPosition(value);
+ rule += "vertical-align: " + textPosition.verticalTextPosition + "\n; ";
+ if (textPosition.fontHeight) {
+ sizeMultiplier = parseFloat(textPosition.fontHeight) / 100;
+ }
+ }
+ if (props.hasAttributeNS(fons, "font-size") || sizeMultiplier !== 1) {
+ textFamilyStyleNode = (props.parentNode);
+ while (textFamilyStyleNode) {
+ fontSize = getFontSize(textFamilyStyleNode);
+ if (fontSize) {
+ if (fontSize.unit !== "%") {
+ fontSizeRule = "font-size: " + fontSize.value * sizeMultiplier + fontSize.unit + ";";
+ break;
+ }
+ sizeMultiplier *= fontSize.value / 100;
}
- sizeMultiplier *= fontSize.value / 100
+ textFamilyStyleNode = getParentStyleNode(textFamilyStyleNode);
+ }
+ if (!fontSizeRule) {
+ fontSizeRule = "font-size: " + parseFloat(defaultFontSize) * sizeMultiplier + cssUnits.getUnits(defaultFontSize) + ";";
}
- parentStyle = getParentStyleNode(parentStyle)
- }
- if(!fontSizeRule) {
- fontSizeRule = "font-size: " + parseFloat(defaultFontSize) * sizeMultiplier + cssUnits.getUnits(defaultFontSize) + ";"
}
rule += fontSizeRule;
- return rule
+ return rule;
}
function getParagraphProperties(props) {
var rule = "", bgimage, url, lineHeight;
rule += applySimpleMapping(props, paragraphPropertySimpleMapping);
bgimage = domUtils.getDirectChild(props, stylens, "background-image");
- if(bgimage) {
+ if (bgimage) {
url = bgimage.getAttributeNS(xlinkns, "href");
- if(url) {
+ if (url) {
rule += "background-image: url('odfkit:" + url + "');";
- rule += applySimpleMapping(bgimage, bgImageSimpleMapping)
+ rule += applySimpleMapping(bgimage, bgImageSimpleMapping);
}
}
lineHeight = props.getAttributeNS(fons, "line-height");
- if(lineHeight && lineHeight !== "normal") {
+ if (lineHeight && lineHeight !== "normal") {
lineHeight = utils.parseFoLineHeight(lineHeight);
- if(lineHeight.unit !== "%") {
- rule += "line-height: " + lineHeight.value + lineHeight.unit + ";"
- }else {
- rule += "line-height: " + lineHeight.value / 100 + ";"
+ if (lineHeight.unit !== "%") {
+ rule += "line-height: " + lineHeight.value + lineHeight.unit + ";";
+ } else {
+ rule += "line-height: " + lineHeight.value / 100 + ";";
}
}
- return rule
+ return rule;
}
function matchToRgb(m, r, g, b) {
- return r + r + g + g + b + b
+ return r + r + g + g + b + b;
}
function hexToRgb(hex) {
var result, shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
hex = hex.replace(shorthandRegex, matchToRgb);
result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
- return result ? {r:parseInt(result[1], 16), g:parseInt(result[2], 16), b:parseInt(result[3], 16)} : null
+ return result ? {r:parseInt(result[1], 16), g:parseInt(result[2], 16), b:parseInt(result[3], 16)} : null;
}
function isNumber(n) {
- return!isNaN(parseFloat(n))
+ return !isNaN(parseFloat(n));
}
function getGraphicProperties(props) {
var rule = "", alpha, bgcolor, fill;
@@ -7105,416 +8621,313 @@ odf.Style2CSS = function Style2CSS() {
alpha = props.getAttributeNS(drawns, "opacity");
fill = props.getAttributeNS(drawns, "fill");
bgcolor = props.getAttributeNS(drawns, "fill-color");
- if(fill === "solid" || fill === "hatch") {
- if(bgcolor && bgcolor !== "none") {
+ if (fill === "solid" || fill === "hatch") {
+ if (bgcolor && bgcolor !== "none") {
alpha = isNumber(alpha) ? parseFloat(alpha) / 100 : 1;
bgcolor = hexToRgb(bgcolor);
- if(bgcolor) {
- rule += "background-color: rgba(" + bgcolor.r + "," + bgcolor.g + "," + bgcolor.b + "," + alpha + ");"
+ if (bgcolor) {
+ rule += "background-color: rgba(" + bgcolor.r + "," + bgcolor.g + "," + bgcolor.b + "," + alpha + ");";
}
- }else {
- rule += "background: none;"
+ } else {
+ rule += "background: none;";
}
- }else {
- if(fill === "none") {
- rule += "background: none;"
+ } else {
+ if (fill === "none") {
+ rule += "background: none;";
}
}
- return rule
+ return rule;
}
function getDrawingPageProperties(props) {
var rule = "";
rule += applySimpleMapping(props, graphicPropertySimpleMapping);
- if(props.getAttributeNS(presentationns, "background-visible") === "true") {
- rule += "background: none;"
+ if (props.getAttributeNS(presentationns, "background-visible") === "true") {
+ rule += "background: none;";
}
- return rule
+ return rule;
}
function getTableCellProperties(props) {
var rule = "";
rule += applySimpleMapping(props, tablecellPropertySimpleMapping);
- return rule
+ return rule;
}
function getTableRowProperties(props) {
var rule = "";
rule += applySimpleMapping(props, tablerowPropertySimpleMapping);
- return rule
+ return rule;
}
function getTableColumnProperties(props) {
var rule = "";
rule += applySimpleMapping(props, tablecolumnPropertySimpleMapping);
- return rule
+ return rule;
}
function getTableProperties(props) {
var rule = "", borderModel;
rule += applySimpleMapping(props, tablePropertySimpleMapping);
borderModel = props.getAttributeNS(tablens, "border-model");
- if(borderModel === "collapsing") {
- rule += "border-collapse:collapse;"
- }else {
- if(borderModel === "separating") {
- rule += "border-collapse:separate;"
+ if (borderModel === "collapsing") {
+ rule += "border-collapse:collapse;";
+ } else {
+ if (borderModel === "separating") {
+ rule += "border-collapse:separate;";
}
}
- return rule
+ return rule;
+ }
+ function getDerivedStyleNames(styleName, node) {
+ var styleNames = [styleName], derivedStyles = node.derivedStyles;
+ Object.keys(derivedStyles).forEach(function(styleName) {
+ var dsn = getDerivedStyleNames(styleName, derivedStyles[styleName]);
+ styleNames = styleNames.concat(dsn);
+ });
+ return styleNames;
+ }
+ function addDrawPageFrameDisplayRules(sheet, styleName, properties, node) {
+ var frameClasses = ["page-number", "date-time", "header", "footer"], styleNames = getDerivedStyleNames(styleName, node), visibleFrameClasses = [], invisibleFrameClasses = [];
+ function insertFrameVisibilityRule(controlledFrameClasses, visibility) {
+ var selectors = [], rule;
+ controlledFrameClasses.forEach(function(frameClass) {
+ styleNames.forEach(function(styleName) {
+ selectors.push('draw|page[webodfhelper|page-style-name="' + styleName + '"] draw|frame[presentation|class="' + frameClass + '"]');
+ });
+ });
+ if (selectors.length > 0) {
+ rule = selectors.join(",") + "{visibility:" + visibility + ";}";
+ sheet.insertRule(rule, sheet.cssRules.length);
+ }
+ }
+ frameClasses.forEach(function(frameClass) {
+ var displayValue;
+ displayValue = properties.getAttributeNS(presentationns, "display-" + frameClass);
+ if (displayValue === "true") {
+ visibleFrameClasses.push(frameClass);
+ } else {
+ if (displayValue === "false") {
+ invisibleFrameClasses.push(frameClass);
+ }
+ }
+ });
+ insertFrameVisibilityRule(visibleFrameClasses, "visible");
+ insertFrameVisibilityRule(invisibleFrameClasses, "hidden");
}
function addStyleRule(sheet, family, name, node) {
var selectors = getSelectors(family, name, node), selector = selectors.join(","), rule = "", properties;
properties = domUtils.getDirectChild(node.element, stylens, "text-properties");
- if(properties) {
- rule += getTextProperties(properties)
+ if (properties) {
+ rule += getTextProperties(properties);
}
properties = domUtils.getDirectChild(node.element, stylens, "paragraph-properties");
- if(properties) {
- rule += getParagraphProperties(properties)
+ if (properties) {
+ rule += getParagraphProperties(properties);
}
properties = domUtils.getDirectChild(node.element, stylens, "graphic-properties");
- if(properties) {
- rule += getGraphicProperties(properties)
+ if (properties) {
+ rule += getGraphicProperties(properties);
}
properties = domUtils.getDirectChild(node.element, stylens, "drawing-page-properties");
- if(properties) {
- rule += getDrawingPageProperties(properties)
+ if (properties) {
+ rule += getDrawingPageProperties(properties);
+ addDrawPageFrameDisplayRules(sheet, name, (properties), node);
}
properties = domUtils.getDirectChild(node.element, stylens, "table-cell-properties");
- if(properties) {
- rule += getTableCellProperties(properties)
+ if (properties) {
+ rule += getTableCellProperties(properties);
}
properties = domUtils.getDirectChild(node.element, stylens, "table-row-properties");
- if(properties) {
- rule += getTableRowProperties(properties)
+ if (properties) {
+ rule += getTableRowProperties(properties);
}
properties = domUtils.getDirectChild(node.element, stylens, "table-column-properties");
- if(properties) {
- rule += getTableColumnProperties(properties)
+ if (properties) {
+ rule += getTableColumnProperties(properties);
}
properties = domUtils.getDirectChild(node.element, stylens, "table-properties");
- if(properties) {
- rule += getTableProperties(properties)
+ if (properties) {
+ rule += getTableProperties(properties);
}
- if(rule.length === 0) {
- return
+ if (rule.length === 0) {
+ return;
}
rule = selector + "{" + rule + "}";
- try {
- sheet.insertRule(rule, sheet.cssRules.length)
- }catch(e) {
- throw e;
- }
- }
- function getNumberRule(node) {
- var style = node.getAttributeNS(stylens, "num-format"), suffix = node.getAttributeNS(stylens, "num-suffix") || "", prefix = node.getAttributeNS(stylens, "num-prefix") || "", stylemap = {1:"decimal", "a":"lower-latin", "A":"upper-latin", "i":"lower-roman", "I":"upper-roman"}, content = "";
- if(prefix) {
- content += ' "' + prefix + '"'
- }
- if(stylemap.hasOwnProperty(style)) {
- content += " counter(list, " + stylemap[style] + ")"
- }else {
- if(style) {
- content += ' "' + style + '"'
- }else {
- content += " ''"
- }
- }
- return"content:" + content + ' "' + suffix + '"'
- }
- function getImageRule() {
- return"content: none;"
- }
- function getBulletRule(node) {
- var bulletChar = node.getAttributeNS(textns, "bullet-char");
- return"content: '" + bulletChar + "';"
- }
- function addListStyleRule(sheet, name, node, itemrule) {
- var selector = 'text|list[text|style-name="' + name + '"]', level = node.getAttributeNS(textns, "level"), itemSelector, listItemRule, listLevelProps = domUtils.getDirectChild(node, stylens, "list-level-properties"), listLevelLabelAlign = domUtils.getDirectChild(listLevelProps, stylens, "list-level-label-alignment"), bulletIndent, listIndent, bulletWidth, rule;
- if(listLevelLabelAlign) {
- bulletIndent = listLevelLabelAlign.getAttributeNS(fons, "text-indent");
- listIndent = listLevelLabelAlign.getAttributeNS(fons, "margin-left")
- }
- if(!bulletIndent) {
- bulletIndent = "-0.6cm"
- }
- if(bulletIndent.charAt(0) === "-") {
- bulletWidth = bulletIndent.substring(1)
- }else {
- bulletWidth = "-" + bulletIndent
- }
- level = level && parseInt(level, 10);
- while(level > 1) {
- selector += " > text|list-item > text|list";
- level -= 1
- }
- if(listIndent) {
- itemSelector = selector;
- itemSelector += " > text|list-item > *:not(text|list):first-child";
- listItemRule = itemSelector + "{";
- listItemRule += "margin-left:" + listIndent + ";";
- listItemRule += "}";
- try {
- sheet.insertRule(listItemRule, sheet.cssRules.length)
- }catch(e1) {
- runtime.log("cannot load rule: " + listItemRule)
- }
- }
- selector += " > text|list-item > *:not(text|list):first-child:before";
- rule = selector + "{" + itemrule + ";";
- rule += "counter-increment:list;";
- rule += "margin-left:" + bulletIndent + ";";
- rule += "width:" + bulletWidth + ";";
- rule += "display:inline-block}";
- try {
- sheet.insertRule(rule, sheet.cssRules.length)
- }catch(e2) {
- runtime.log("cannot load rule: " + rule)
- }
+ sheet.insertRule(rule, sheet.cssRules.length);
}
function addPageStyleRules(sheet, node) {
var rule = "", imageProps, url, contentLayoutRule = "", pageSizeRule = "", props = domUtils.getDirectChild(node, stylens, "page-layout-properties"), stylename, masterStyles, e, masterStyleName;
- if(!props) {
- return
+ if (!props) {
+ return;
}
stylename = node.getAttributeNS(stylens, "name");
rule += applySimpleMapping(props, pageContentPropertySimpleMapping);
imageProps = domUtils.getDirectChild(props, stylens, "background-image");
- if(imageProps) {
+ if (imageProps) {
url = imageProps.getAttributeNS(xlinkns, "href");
- if(url) {
+ if (url) {
rule += "background-image: url('odfkit:" + url + "');";
- rule += applySimpleMapping(imageProps, bgImageSimpleMapping)
+ rule += applySimpleMapping(imageProps, bgImageSimpleMapping);
}
}
- if(documentType === "presentation") {
+ if (documentType === "presentation") {
masterStyles = domUtils.getDirectChild((node.parentNode.parentNode), officens, "master-styles");
e = masterStyles && masterStyles.firstElementChild;
- while(e) {
- if(e.namespaceURI === stylens && (e.localName === "master-page" && e.getAttributeNS(stylens, "page-layout-name") === stylename)) {
+ while (e) {
+ if (e.namespaceURI === stylens && e.localName === "master-page" && e.getAttributeNS(stylens, "page-layout-name") === stylename) {
masterStyleName = e.getAttributeNS(stylens, "name");
- contentLayoutRule = "draw|page[draw|master-page-name=" + masterStyleName + "] {" + rule + "}";
- pageSizeRule = "office|body, draw|page[draw|master-page-name=" + masterStyleName + "] {" + applySimpleMapping(props, pageSizePropertySimpleMapping) + " }";
- try {
- sheet.insertRule(contentLayoutRule, sheet.cssRules.length);
- sheet.insertRule(pageSizeRule, sheet.cssRules.length)
- }catch(e1) {
- throw e1;
- }
+ contentLayoutRule = 'draw|page[draw|master-page-name="' + masterStyleName + '"] {' + rule + "}";
+ pageSizeRule = 'office|body, draw|page[draw|master-page-name="' + masterStyleName + '"] {' + applySimpleMapping(props, pageSizePropertySimpleMapping) + " }";
+ sheet.insertRule(contentLayoutRule, sheet.cssRules.length);
+ sheet.insertRule(pageSizeRule, sheet.cssRules.length);
}
- e = e.nextElementSibling
+ e = e.nextElementSibling;
}
- }else {
- if(documentType === "text") {
+ } else {
+ if (documentType === "text") {
contentLayoutRule = "office|text {" + rule + "}";
rule = "";
pageSizeRule = "office|body {" + "width: " + props.getAttributeNS(fons, "page-width") + ";" + "}";
- try {
- sheet.insertRule(contentLayoutRule, sheet.cssRules.length);
- sheet.insertRule(pageSizeRule, sheet.cssRules.length)
- }catch(e2) {
- throw e2;
- }
- }
- }
- }
- function addListStyleRules(sheet, name, node) {
- var n = node.firstChild, e, itemrule;
- while(n) {
- if(n.namespaceURI === textns) {
- e = (n);
- if(n.localName === "list-level-style-number") {
- itemrule = getNumberRule(e);
- addListStyleRule(sheet, name, e, itemrule)
- }else {
- if(n.localName === "list-level-style-image") {
- itemrule = getImageRule();
- addListStyleRule(sheet, name, e, itemrule)
- }else {
- if(n.localName === "list-level-style-bullet") {
- itemrule = getBulletRule(e);
- addListStyleRule(sheet, name, e, itemrule)
- }
- }
- }
+ sheet.insertRule(contentLayoutRule, sheet.cssRules.length);
+ sheet.insertRule(pageSizeRule, sheet.cssRules.length);
}
- n = n.nextSibling
}
}
function addRule(sheet, family, name, node) {
- if(family === "list") {
- addListStyleRules(sheet, name, node.element)
- }else {
- if(family === "page") {
- addPageStyleRules(sheet, node.element)
- }else {
- addStyleRule(sheet, family, name, node)
- }
+ if (family === "page") {
+ addPageStyleRules(sheet, node.element);
+ } else {
+ addStyleRule(sheet, family, name, node);
}
}
function addRules(sheet, family, name, node) {
addRule(sheet, family, name, node);
var n;
- for(n in node.derivedStyles) {
- if(node.derivedStyles.hasOwnProperty(n)) {
- addRules(sheet, family, n, node.derivedStyles[n])
+ for (n in node.derivedStyles) {
+ if (node.derivedStyles.hasOwnProperty(n)) {
+ addRules(sheet, family, n, node.derivedStyles[n]);
}
}
}
- this.style2css = function(doctype, stylesheet, fontFaceMap, styles, autostyles) {
- var doc, styletree, tree, rule, name, family, stylenodes, styleautonodes;
- while(stylesheet.cssRules.length) {
- stylesheet.deleteRule(stylesheet.cssRules.length - 1)
- }
- doc = null;
- if(styles) {
- doc = styles.ownerDocument;
- odfRoot = styles.parentNode
- }
- if(autostyles) {
- doc = autostyles.ownerDocument;
- odfRoot = autostyles.parentNode
- }
- if(!doc) {
- return
- }
- odf.Namespaces.forEachPrefix(function(prefix, ns) {
+ this.style2css = function(doctype, rootNode, stylesheet, fontFaceMap, styleTree) {
+ var tree, rule, name, family;
+ function insertCSSNamespace(prefix, ns) {
rule = "@namespace " + prefix + " url(" + ns + ");";
try {
- stylesheet.insertRule(rule, stylesheet.cssRules.length)
- }catch(ignore) {
+ stylesheet.insertRule(rule, stylesheet.cssRules.length);
+ } catch (ignore) {
}
- });
+ }
+ odfRoot = rootNode;
+ while (stylesheet.cssRules.length) {
+ stylesheet.deleteRule(stylesheet.cssRules.length - 1);
+ }
+ odf.Namespaces.forEachPrefix(insertCSSNamespace);
+ insertCSSNamespace("webodfhelper", webodfhelperns);
fontFaceDeclsMap = fontFaceMap;
documentType = doctype;
defaultFontSize = runtime.getWindow().getComputedStyle(document.body, null).getPropertyValue("font-size") || "12pt";
- stylenodes = getStyleMap(styles);
- styleautonodes = getStyleMap(autostyles);
- styletree = {};
- for(family in familynamespaceprefixes) {
- if(familynamespaceprefixes.hasOwnProperty(family)) {
- tree = styletree[family] = {};
- addStyleMapToStyleTree(stylenodes[family], tree);
- addStyleMapToStyleTree(styleautonodes[family], tree);
- for(name in tree) {
- if(tree.hasOwnProperty(name)) {
- addRules(stylesheet, family, name, tree[name])
+ for (family in familynamespaceprefixes) {
+ if (familynamespaceprefixes.hasOwnProperty(family)) {
+ tree = styleTree[family];
+ for (name in tree) {
+ if (tree.hasOwnProperty(name)) {
+ addRules(stylesheet, family, name, tree[name]);
}
}
}
}
- }
+ };
};
-/*
-
- Copyright (C) 2014 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- This file is part of WebODF.
-
- WebODF is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License (GNU AGPL)
- as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- WebODF is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with WebODF. If not, see <http://www.gnu.org/licenses/>.
- @licend
-
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
(function() {
function Point(x, y) {
var self = this;
this.getDistance = function(point) {
var xOffset = self.x - point.x, yOffset = self.y - point.y;
- return Math.sqrt(xOffset * xOffset + yOffset * yOffset)
+ return Math.sqrt(xOffset * xOffset + yOffset * yOffset);
};
this.getCenter = function(point) {
- return new Point((self.x + point.x) / 2, (self.y + point.y) / 2)
+ return new Point((self.x + point.x) / 2, (self.y + point.y) / 2);
};
this.x;
this.y;
function init() {
self.x = x;
- self.y = y
+ self.y = y;
}
- init()
+ init();
}
gui.ZoomHelper = function() {
- var zoomableElement, panPoint, previousPanPoint, firstPinchDistance, zoom, previousZoom, maxZoom = 4, offsetParent, events = new core.EventNotifier([gui.ZoomHelper.signalZoomChanged]), gestures = {NONE:0, SCROLL:1, PINCH:2}, currentGesture = gestures.NONE, requiresCustomScrollBars = runtime.getWindow().hasOwnProperty("ontouchstart");
+ var zoomableElement, panPoint, previousPanPoint, firstPinchDistance, zoom, previousZoom, maxZoom = 4, offsetParent, parentElement, events = new core.EventNotifier([gui.ZoomHelper.signalZoomChanged]), gestures = {NONE:0, SCROLL:1, PINCH:2}, currentGesture = gestures.NONE, requiresCustomScrollBars = runtime.getWindow().hasOwnProperty("ontouchstart"), parentOverflow = "";
function applyCSSTransform(x, y, scale, is3D) {
var transformCommand;
- if(is3D) {
- transformCommand = "translate3d(" + x + "px, " + y + "px, 0) scale3d(" + scale + ", " + scale + ", 1)"
- }else {
- transformCommand = "translate(" + x + "px, " + y + "px) scale(" + scale + ")"
+ if (is3D) {
+ transformCommand = "translate3d(" + x + "px, " + y + "px, 0) scale3d(" + scale + ", " + scale + ", 1)";
+ } else {
+ transformCommand = "translate(" + x + "px, " + y + "px) scale(" + scale + ")";
}
zoomableElement.style.WebkitTransform = transformCommand;
zoomableElement.style.MozTransform = transformCommand;
zoomableElement.style.msTransform = transformCommand;
zoomableElement.style.OTransform = transformCommand;
- zoomableElement.style.transform = transformCommand
+ zoomableElement.style.transform = transformCommand;
}
function applyTransform(is3D) {
- if(is3D) {
- applyCSSTransform(-panPoint.x, -panPoint.y, zoom, true)
- }else {
+ if (is3D) {
+ applyCSSTransform(-panPoint.x, -panPoint.y, zoom, true);
+ } else {
applyCSSTransform(0, 0, zoom, true);
- applyCSSTransform(0, 0, zoom, false)
+ applyCSSTransform(0, 0, zoom, false);
}
}
function applyFastTransform() {
- applyTransform(true)
+ applyTransform(true);
}
function applyDetailedTransform() {
- applyTransform(false)
+ applyTransform(false);
}
function enableScrollBars(enable) {
- if(!offsetParent || !requiresCustomScrollBars) {
- return
+ if (!offsetParent || !requiresCustomScrollBars) {
+ return;
}
- var initialOverflow = offsetParent.style.overflow, enabled = offsetParent.classList.contains("customScrollbars");
- if(enable && enabled || !enable && !enabled) {
- return
+ var initialOverflow = offsetParent.style.overflow, enabled = offsetParent.classList.contains("webodf-customScrollbars");
+ if (enable && enabled || !enable && !enabled) {
+ return;
}
- if(enable) {
- offsetParent.classList.add("customScrollbars");
+ if (enable) {
+ offsetParent.classList.add("webodf-customScrollbars");
offsetParent.style.overflow = "hidden";
runtime.requestAnimationFrame(function() {
- offsetParent.style.overflow = initialOverflow
- })
- }else {
- offsetParent.classList.remove("customScrollbars")
+ offsetParent.style.overflow = initialOverflow;
+ });
+ } else {
+ offsetParent.classList.remove("webodf-customScrollbars");
}
}
function removeScroll() {
applyCSSTransform(-panPoint.x, -panPoint.y, zoom, true);
offsetParent.scrollLeft = 0;
offsetParent.scrollTop = 0;
- enableScrollBars(false)
+ parentOverflow = parentElement.style.overflow;
+ parentElement.style.overflow = "visible";
+ enableScrollBars(false);
}
function restoreScroll() {
applyCSSTransform(0, 0, zoom, true);
offsetParent.scrollLeft = panPoint.x;
offsetParent.scrollTop = panPoint.y;
- enableScrollBars(true)
+ parentElement.style.overflow = parentOverflow || "";
+ enableScrollBars(true);
}
function getPoint(touch) {
- return new Point(touch.pageX - zoomableElement.offsetLeft, touch.pageY - zoomableElement.offsetTop)
+ return new Point(touch.pageX - zoomableElement.offsetLeft, touch.pageY - zoomableElement.offsetTop);
}
function sanitizePointForPan(point) {
- return new Point(Math.min(Math.max(point.x, zoomableElement.offsetLeft), (zoomableElement.offsetLeft + zoomableElement.offsetWidth) * zoom - offsetParent.clientWidth), Math.min(Math.max(point.y, zoomableElement.offsetTop), (zoomableElement.offsetTop + zoomableElement.offsetHeight) * zoom - offsetParent.clientHeight))
+ return new Point(Math.min(Math.max(point.x, zoomableElement.offsetLeft), (zoomableElement.offsetLeft + zoomableElement.offsetWidth) * zoom - offsetParent.clientWidth), Math.min(Math.max(point.y, zoomableElement.offsetTop), (zoomableElement.offsetTop + zoomableElement.offsetHeight) * zoom - offsetParent.clientHeight));
}
function processPan(point) {
- if(previousPanPoint) {
+ if (previousPanPoint) {
panPoint.x -= point.x - previousPanPoint.x;
panPoint.y -= point.y - previousPanPoint.y;
- panPoint = sanitizePointForPan(panPoint)
+ panPoint = sanitizePointForPan(panPoint);
}
- previousPanPoint = point
+ previousPanPoint = point;
}
function processZoom(zoomPoint, incrementalZoom) {
var originalZoom = zoom, actuallyIncrementedZoom, minZoom = Math.min(maxZoom, zoomableElement.offsetParent.clientWidth / zoomableElement.offsetWidth);
@@ -7522,193 +8935,122 @@ odf.Style2CSS = function Style2CSS() {
zoom = Math.min(Math.max(zoom, minZoom), maxZoom);
actuallyIncrementedZoom = zoom / originalZoom;
panPoint.x += (actuallyIncrementedZoom - 1) * (zoomPoint.x + panPoint.x);
- panPoint.y += (actuallyIncrementedZoom - 1) * (zoomPoint.y + panPoint.y)
+ panPoint.y += (actuallyIncrementedZoom - 1) * (zoomPoint.y + panPoint.y);
}
function processPinch(point1, point2) {
var zoomPoint = point1.getCenter(point2), pinchDistance = point1.getDistance(point2), incrementalZoom = pinchDistance / firstPinchDistance;
processPan(zoomPoint);
- processZoom(zoomPoint, incrementalZoom)
+ processZoom(zoomPoint, incrementalZoom);
}
function prepareGesture(event) {
var fingers = event.touches.length, point1 = fingers > 0 ? getPoint(event.touches[0]) : null, point2 = fingers > 1 ? getPoint(event.touches[1]) : null;
- if(point1 && point2) {
+ if (point1 && point2) {
firstPinchDistance = point1.getDistance(point2);
previousZoom = zoom;
previousPanPoint = point1.getCenter(point2);
removeScroll();
- currentGesture = gestures.PINCH
- }else {
- if(point1) {
+ currentGesture = gestures.PINCH;
+ } else {
+ if (point1) {
previousPanPoint = point1;
- currentGesture = gestures.SCROLL
+ currentGesture = gestures.SCROLL;
}
}
}
function processGesture(event) {
var fingers = event.touches.length, point1 = fingers > 0 ? getPoint(event.touches[0]) : null, point2 = fingers > 1 ? getPoint(event.touches[1]) : null;
- if(point1 && point2) {
+ if (point1 && point2) {
event.preventDefault();
- if(currentGesture === gestures.SCROLL) {
+ if (currentGesture === gestures.SCROLL) {
currentGesture = gestures.PINCH;
removeScroll();
firstPinchDistance = point1.getDistance(point2);
- return
+ return;
}
processPinch(point1, point2);
- applyFastTransform()
- }else {
- if(point1) {
- if(currentGesture === gestures.PINCH) {
+ applyFastTransform();
+ } else {
+ if (point1) {
+ if (currentGesture === gestures.PINCH) {
currentGesture = gestures.SCROLL;
restoreScroll();
- return
+ return;
}
- processPan(point1)
+ processPan(point1);
}
}
}
function sanitizeGesture() {
- if(currentGesture === gestures.PINCH) {
+ if (currentGesture === gestures.PINCH) {
events.emit(gui.ZoomHelper.signalZoomChanged, zoom);
restoreScroll();
- applyDetailedTransform()
+ applyDetailedTransform();
}
- currentGesture = gestures.NONE
+ currentGesture = gestures.NONE;
}
this.subscribe = function(eventid, cb) {
- events.subscribe(eventid, cb)
+ events.subscribe(eventid, cb);
};
this.unsubscribe = function(eventid, cb) {
- events.unsubscribe(eventid, cb)
+ events.unsubscribe(eventid, cb);
};
this.getZoomLevel = function() {
- return zoom
+ return zoom;
};
this.setZoomLevel = function(zoomLevel) {
- if(zoomableElement) {
+ if (zoomableElement) {
zoom = zoomLevel;
applyDetailedTransform();
- events.emit(gui.ZoomHelper.signalZoomChanged, zoom)
+ events.emit(gui.ZoomHelper.signalZoomChanged, zoom);
}
};
function registerGestureListeners() {
- if(offsetParent) {
+ if (offsetParent) {
offsetParent.addEventListener("touchstart", (prepareGesture), false);
offsetParent.addEventListener("touchmove", (processGesture), false);
- offsetParent.addEventListener("touchend", (sanitizeGesture), false)
+ offsetParent.addEventListener("touchend", (sanitizeGesture), false);
}
}
function unregisterGestureListeners() {
- if(offsetParent) {
+ if (offsetParent) {
offsetParent.removeEventListener("touchstart", (prepareGesture), false);
offsetParent.removeEventListener("touchmove", (processGesture), false);
- offsetParent.removeEventListener("touchend", (sanitizeGesture), false)
+ offsetParent.removeEventListener("touchend", (sanitizeGesture), false);
}
}
this.destroy = function(callback) {
unregisterGestureListeners();
enableScrollBars(false);
- callback()
+ callback();
};
this.setZoomableElement = function(element) {
unregisterGestureListeners();
zoomableElement = element;
offsetParent = (zoomableElement.offsetParent);
+ parentElement = (zoomableElement.parentNode);
applyDetailedTransform();
registerGestureListeners();
- enableScrollBars(true)
+ enableScrollBars(true);
};
function init() {
zoom = 1;
previousZoom = 1;
- panPoint = new Point(0, 0)
+ panPoint = new Point(0, 0);
}
- init()
+ init();
};
- gui.ZoomHelper.signalZoomChanged = "zoomChanged"
+ gui.ZoomHelper.signalZoomChanged = "zoomChanged";
})();
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.Canvas = function Canvas() {
};
ops.Canvas.prototype.getZoomLevel = function() {
};
ops.Canvas.prototype.getElement = function() {
};
+ops.Canvas.prototype.getSizer = function() {
+};
ops.Canvas.prototype.getZoomHelper = function() {
};
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
(function() {
function LoadingQueue() {
var queue = [], taskRunning = false;
@@ -7716,333 +9058,318 @@ ops.Canvas.prototype.getZoomHelper = function() {
taskRunning = true;
runtime.setTimeout(function() {
try {
- task()
- }catch(e) {
- runtime.log(String(e))
+ task();
+ } catch (e) {
+ runtime.log(String(e) + "\n" + e.stack);
}
taskRunning = false;
- if(queue.length > 0) {
- run(queue.pop())
+ if (queue.length > 0) {
+ run(queue.pop());
}
- }, 10)
+ }, 10);
}
this.clearQueue = function() {
- queue.length = 0
+ queue.length = 0;
};
this.addToQueue = function(loadingTask) {
- if(queue.length === 0 && !taskRunning) {
- return run(loadingTask)
+ if (queue.length === 0 && !taskRunning) {
+ return run(loadingTask);
}
- queue.push(loadingTask)
- }
+ queue.push(loadingTask);
+ };
}
function PageSwitcher(css) {
var sheet = (css.sheet), position = 1;
function updateCSS() {
- while(sheet.cssRules.length > 0) {
- sheet.deleteRule(0)
+ while (sheet.cssRules.length > 0) {
+ sheet.deleteRule(0);
}
sheet.insertRule("#shadowContent draw|page {display:none;}", 0);
sheet.insertRule("office|presentation draw|page {display:none;}", 1);
sheet.insertRule("#shadowContent draw|page:nth-of-type(" + position + ") {display:block;}", 2);
- sheet.insertRule("office|presentation draw|page:nth-of-type(" + position + ") {display:block;}", 3)
+ sheet.insertRule("office|presentation draw|page:nth-of-type(" + position + ") {display:block;}", 3);
}
this.showFirstPage = function() {
position = 1;
- updateCSS()
+ updateCSS();
};
this.showNextPage = function() {
position += 1;
- updateCSS()
+ updateCSS();
};
this.showPreviousPage = function() {
- if(position > 1) {
+ if (position > 1) {
position -= 1;
- updateCSS()
+ updateCSS();
}
};
this.showPage = function(n) {
- if(n > 0) {
+ if (n > 0) {
position = n;
- updateCSS()
+ updateCSS();
}
};
this.css = css;
this.destroy = function(callback) {
css.parentNode.removeChild(css);
- callback()
- }
+ callback();
+ };
}
function listenEvent(eventTarget, eventType, eventHandler) {
- if(eventTarget.addEventListener) {
- eventTarget.addEventListener(eventType, eventHandler, false)
- }else {
- if(eventTarget.attachEvent) {
+ if (eventTarget.addEventListener) {
+ eventTarget.addEventListener(eventType, eventHandler, false);
+ } else {
+ if (eventTarget.attachEvent) {
eventType = "on" + eventType;
- eventTarget.attachEvent(eventType, eventHandler)
- }else {
- eventTarget["on" + eventType] = eventHandler
+ eventTarget.attachEvent(eventType, eventHandler);
+ } else {
+ eventTarget["on" + eventType] = eventHandler;
}
}
}
- var drawns = odf.Namespaces.drawns, fons = odf.Namespaces.fons, officens = odf.Namespaces.officens, stylens = odf.Namespaces.stylens, svgns = odf.Namespaces.svgns, tablens = odf.Namespaces.tablens, textns = odf.Namespaces.textns, xlinkns = odf.Namespaces.xlinkns, xmlns = odf.Namespaces.xmlns, presentationns = odf.Namespaces.presentationns, webodfhelperns = "urn:webodf:names:helper", window = runtime.getWindow(), xpath = xmldom.XPath, odfUtils = new odf.OdfUtils, domUtils = new core.DomUtils;
- function clear(element) {
- while(element.firstChild) {
- element.removeChild(element.firstChild)
- }
- }
+ var drawns = odf.Namespaces.drawns, fons = odf.Namespaces.fons, officens = odf.Namespaces.officens, stylens = odf.Namespaces.stylens, svgns = odf.Namespaces.svgns, tablens = odf.Namespaces.tablens, textns = odf.Namespaces.textns, xlinkns = odf.Namespaces.xlinkns, presentationns = odf.Namespaces.presentationns, webodfhelperns = "urn:webodf:names:helper", xpath = xmldom.XPath, domUtils = core.DomUtils;
function clearCSSStyleSheet(style) {
var stylesheet = (style.sheet), cssRules = stylesheet.cssRules;
- while(cssRules.length) {
- stylesheet.deleteRule(cssRules.length - 1)
+ while (cssRules.length) {
+ stylesheet.deleteRule(cssRules.length - 1);
}
}
function handleStyles(odfcontainer, formatting, stylesxmlcss) {
- var style2css = new odf.Style2CSS;
- style2css.style2css(odfcontainer.getDocumentType(), (stylesxmlcss.sheet), formatting.getFontMap(), odfcontainer.rootElement.styles, odfcontainer.rootElement.automaticStyles)
+ var style2css = new odf.Style2CSS, list2css = new odf.ListStyleToCss, styleSheet = (stylesxmlcss.sheet), styleTree = (new odf.StyleTree(odfcontainer.rootElement.styles, odfcontainer.rootElement.automaticStyles)).getStyleTree();
+ style2css.style2css(odfcontainer.getDocumentType(), odfcontainer.rootElement, styleSheet, formatting.getFontMap(), styleTree);
+ list2css.applyListStyles(styleSheet, styleTree, odfcontainer.rootElement.body);
}
function handleFonts(odfContainer, fontcss) {
var fontLoader = new odf.FontLoader;
- fontLoader.loadFonts(odfContainer, (fontcss.sheet))
- }
- function getMasterPageElement(odfContainer, masterPageName) {
- if(!masterPageName) {
- return null
- }
- var masterStyles = odfContainer.rootElement.masterStyles, masterStylesChild = masterStyles.firstElementChild;
- while(masterStylesChild) {
- if(masterStylesChild.getAttributeNS(stylens, "name") === masterPageName && (masterStylesChild.localName === "master-page" && masterStylesChild.namespaceURI === stylens)) {
- break
- }
- masterStylesChild = masterStylesChild.nextElementSibling
- }
- return masterStylesChild
+ fontLoader.loadFonts(odfContainer, (fontcss.sheet));
}
function dropTemplateDrawFrames(clonedNode) {
- var i, element, presentationClass, clonedDrawFrameElements = clonedNode.getElementsByTagNameNS(drawns, "frame");
- for(i = 0;i < clonedDrawFrameElements.length;i += 1) {
+ var i, element, presentationClass, clonedDrawFrameElements = domUtils.getElementsByTagNameNS(clonedNode, drawns, "frame");
+ for (i = 0;i < clonedDrawFrameElements.length;i += 1) {
element = (clonedDrawFrameElements[i]);
presentationClass = element.getAttributeNS(presentationns, "class");
- if(presentationClass && !/^(date-time|footer|header|page-number)$/.test(presentationClass)) {
- element.parentNode.removeChild(element)
+ if (presentationClass && !/^(date-time|footer|header|page-number)$/.test(presentationClass)) {
+ element.parentNode.removeChild(element);
}
}
}
function getHeaderFooter(odfContainer, frame, headerFooterId) {
var headerFooter = null, i, declElements = odfContainer.rootElement.body.getElementsByTagNameNS(presentationns, headerFooterId + "-decl"), headerFooterName = frame.getAttributeNS(presentationns, "use-" + headerFooterId + "-name"), element;
- if(headerFooterName && declElements.length > 0) {
- for(i = 0;i < declElements.length;i += 1) {
+ if (headerFooterName && declElements.length > 0) {
+ for (i = 0;i < declElements.length;i += 1) {
element = (declElements[i]);
- if(element.getAttributeNS(presentationns, "name") === headerFooterName) {
+ if (element.getAttributeNS(presentationns, "name") === headerFooterName) {
headerFooter = element.textContent;
- break
+ break;
}
}
}
- return headerFooter
+ return headerFooter;
}
function setContainerValue(rootElement, ns, localName, value) {
var i, containerList, document = rootElement.ownerDocument, e;
- containerList = rootElement.getElementsByTagNameNS(ns, localName);
- for(i = 0;i < containerList.length;i += 1) {
- clear(containerList[i]);
- if(value) {
+ containerList = domUtils.getElementsByTagNameNS(rootElement, ns, localName);
+ for (i = 0;i < containerList.length;i += 1) {
+ domUtils.removeAllChildNodes(containerList[i]);
+ if (value) {
e = (containerList[i]);
- e.appendChild(document.createTextNode(value))
+ e.appendChild(document.createTextNode(value));
}
}
}
function setDrawElementPosition(styleid, frame, stylesheet) {
frame.setAttributeNS(webodfhelperns, "styleid", styleid);
var rule, anchor = frame.getAttributeNS(textns, "anchor-type"), x = frame.getAttributeNS(svgns, "x"), y = frame.getAttributeNS(svgns, "y"), width = frame.getAttributeNS(svgns, "width"), height = frame.getAttributeNS(svgns, "height"), minheight = frame.getAttributeNS(fons, "min-height"), minwidth = frame.getAttributeNS(fons, "min-width");
- if(anchor === "as-char") {
- rule = "display: inline-block;"
- }else {
- if(anchor || (x || y)) {
- rule = "position: absolute;"
- }else {
- if(width || (height || (minheight || minwidth))) {
- rule = "display: block;"
+ if (anchor === "as-char") {
+ rule = "display: inline-block;";
+ } else {
+ if (anchor || x || y) {
+ rule = "position: absolute;";
+ } else {
+ if (width || height || minheight || minwidth) {
+ rule = "display: block;";
}
}
}
- if(x) {
- rule += "left: " + x + ";"
+ if (x) {
+ rule += "left: " + x + ";";
}
- if(y) {
- rule += "top: " + y + ";"
+ if (y) {
+ rule += "top: " + y + ";";
}
- if(width) {
- rule += "width: " + width + ";"
+ if (width) {
+ rule += "width: " + width + ";";
}
- if(height) {
- rule += "height: " + height + ";"
+ if (height) {
+ rule += "height: " + height + ";";
}
- if(minheight) {
- rule += "min-height: " + minheight + ";"
+ if (minheight) {
+ rule += "min-height: " + minheight + ";";
}
- if(minwidth) {
- rule += "min-width: " + minwidth + ";"
+ if (minwidth) {
+ rule += "min-width: " + minwidth + ";";
}
- if(rule) {
+ if (rule) {
rule = "draw|" + frame.localName + '[webodfhelper|styleid="' + styleid + '"] {' + rule + "}";
- stylesheet.insertRule(rule, stylesheet.cssRules.length)
+ stylesheet.insertRule(rule, stylesheet.cssRules.length);
}
}
function getUrlFromBinaryDataElement(image) {
var node = image.firstChild;
- while(node) {
- if(node.namespaceURI === officens && node.localName === "binary-data") {
- return"data:image/png;base64," + node.textContent.replace(/[\r\n\s]/g, "")
+ while (node) {
+ if (node.namespaceURI === officens && node.localName === "binary-data") {
+ return "data:image/png;base64," + node.textContent.replace(/[\r\n\s]/g, "");
}
- node = node.nextSibling
+ node = node.nextSibling;
}
- return""
+ return "";
}
function setImage(id, container, image, stylesheet) {
image.setAttributeNS(webodfhelperns, "styleid", id);
var url = image.getAttributeNS(xlinkns, "href"), part;
function callback(url) {
var rule;
- if(url) {
+ if (url) {
rule = "background-image: url(" + url + ");";
rule = 'draw|image[webodfhelper|styleid="' + id + '"] {' + rule + "}";
- stylesheet.insertRule(rule, stylesheet.cssRules.length)
+ stylesheet.insertRule(rule, stylesheet.cssRules.length);
}
}
function onchange(p) {
- callback(p.url)
+ callback(p.url);
}
- if(url) {
+ if (url) {
try {
part = container.getPart(url);
part.onchange = onchange;
- part.load()
- }catch(e) {
- runtime.log("slight problem: " + String(e))
+ part.load();
+ } catch (e) {
+ runtime.log("slight problem: " + String(e));
}
- }else {
+ } else {
url = getUrlFromBinaryDataElement(image);
- callback(url)
+ callback(url);
}
}
function formatParagraphAnchors(odfbody) {
var n, i, nodes = xpath.getODFElementsWithXPath(odfbody, ".//*[*[@text:anchor-type='paragraph']]", odf.Namespaces.lookupNamespaceURI);
- for(i = 0;i < nodes.length;i += 1) {
+ for (i = 0;i < nodes.length;i += 1) {
n = nodes[i];
- if(n.setAttributeNS) {
- n.setAttributeNS(webodfhelperns, "containsparagraphanchor", true)
+ if (n.setAttributeNS) {
+ n.setAttributeNS(webodfhelperns, "containsparagraphanchor", true);
}
}
}
function modifyTables(odffragment, documentns) {
var i, tableCells, node;
function modifyTableCell(node) {
- if(node.hasAttributeNS(tablens, "number-columns-spanned")) {
- node.setAttributeNS(documentns, "colspan", node.getAttributeNS(tablens, "number-columns-spanned"))
+ if (node.hasAttributeNS(tablens, "number-columns-spanned")) {
+ node.setAttributeNS(documentns, "colspan", node.getAttributeNS(tablens, "number-columns-spanned"));
}
- if(node.hasAttributeNS(tablens, "number-rows-spanned")) {
- node.setAttributeNS(documentns, "rowspan", node.getAttributeNS(tablens, "number-rows-spanned"))
+ if (node.hasAttributeNS(tablens, "number-rows-spanned")) {
+ node.setAttributeNS(documentns, "rowspan", node.getAttributeNS(tablens, "number-rows-spanned"));
}
}
- tableCells = odffragment.getElementsByTagNameNS(tablens, "table-cell");
- for(i = 0;i < tableCells.length;i += 1) {
- node = (tableCells.item(i));
- modifyTableCell(node)
+ tableCells = domUtils.getElementsByTagNameNS(odffragment, tablens, "table-cell");
+ for (i = 0;i < tableCells.length;i += 1) {
+ node = (tableCells[i]);
+ modifyTableCell(node);
}
}
function modifyLineBreakElements(odffragment) {
var document = odffragment.ownerDocument, lineBreakElements = domUtils.getElementsByTagNameNS(odffragment, textns, "line-break");
lineBreakElements.forEach(function(lineBreak) {
- if(!lineBreak.hasChildNodes()) {
- lineBreak.appendChild(document.createElement("br"))
+ if (!lineBreak.hasChildNodes()) {
+ lineBreak.appendChild(document.createElement("br"));
}
- })
+ });
}
function expandSpaceElements(odffragment) {
var spaces, doc = odffragment.ownerDocument;
function expandSpaceElement(space) {
var j, count;
- while(space.firstChild) {
- space.removeChild(space.firstChild)
- }
+ domUtils.removeAllChildNodes(space);
space.appendChild(doc.createTextNode(" "));
count = parseInt(space.getAttributeNS(textns, "c"), 10);
- if(count > 1) {
+ if (count > 1) {
space.removeAttributeNS(textns, "c");
- for(j = 1;j < count;j += 1) {
- space.parentNode.insertBefore(space.cloneNode(true), space)
+ for (j = 1;j < count;j += 1) {
+ space.parentNode.insertBefore(space.cloneNode(true), space);
}
}
}
spaces = domUtils.getElementsByTagNameNS(odffragment, textns, "s");
- spaces.forEach(expandSpaceElement)
+ spaces.forEach(expandSpaceElement);
}
function expandTabElements(odffragment) {
var tabs;
tabs = domUtils.getElementsByTagNameNS(odffragment, textns, "tab");
tabs.forEach(function(tab) {
- tab.textContent = "\t"
- })
+ tab.textContent = "\t";
+ });
}
function modifyDrawElements(odfbody, stylesheet) {
var node, drawElements = [], i;
node = odfbody.firstElementChild;
- while(node && node !== odfbody) {
- if(node.namespaceURI === drawns) {
- drawElements[drawElements.length] = node
+ while (node && node !== odfbody) {
+ if (node.namespaceURI === drawns) {
+ drawElements[drawElements.length] = node;
}
- if(node.firstElementChild) {
- node = node.firstElementChild
- }else {
- while(node && (node !== odfbody && !node.nextElementSibling)) {
- node = (node.parentNode)
+ if (node.firstElementChild) {
+ node = node.firstElementChild;
+ } else {
+ while (node && node !== odfbody && !node.nextElementSibling) {
+ node = (node.parentNode);
}
- if(node && node.nextElementSibling) {
- node = node.nextElementSibling
+ if (node && node.nextElementSibling) {
+ node = node.nextElementSibling;
}
}
}
- for(i = 0;i < drawElements.length;i += 1) {
+ for (i = 0;i < drawElements.length;i += 1) {
node = drawElements[i];
- setDrawElementPosition("frame" + String(i), node, stylesheet)
+ setDrawElementPosition("frame" + String(i), node, stylesheet);
}
- formatParagraphAnchors(odfbody)
+ formatParagraphAnchors(odfbody);
}
- function cloneMasterPages(odfContainer, shadowContent, odfbody, stylesheet) {
- var masterPageName, masterPageElement, styleId, clonedPageElement, clonedElement, pageNumber = 0, i, element, elementToClone, document = odfContainer.rootElement.ownerDocument;
+ function cloneMasterPages(formatting, odfContainer, shadowContent, odfbody, stylesheet) {
+ var masterPageName, masterPageElement, styleId, clonedPageElement, clonedElement, clonedDrawElements, pageNumber = 0, i, element, elementToClone, document = odfContainer.rootElement.ownerDocument;
element = odfbody.firstElementChild;
- if(!(element && (element.namespaceURI === officens && (element.localName === "presentation" || element.localName === "drawing")))) {
- return
+ if (!(element && element.namespaceURI === officens && (element.localName === "presentation" || element.localName === "drawing"))) {
+ return;
}
element = element.firstElementChild;
- while(element) {
+ while (element) {
masterPageName = element.getAttributeNS(drawns, "master-page-name");
- masterPageElement = getMasterPageElement(odfContainer, masterPageName);
- if(masterPageElement) {
+ masterPageElement = masterPageName ? formatting.getMasterPageElement(masterPageName) : null;
+ if (masterPageElement) {
styleId = element.getAttributeNS(webodfhelperns, "styleid");
clonedPageElement = document.createElementNS(drawns, "draw:page");
elementToClone = masterPageElement.firstElementChild;
i = 0;
- while(elementToClone) {
- if(elementToClone.getAttributeNS(presentationns, "placeholder") !== "true") {
+ while (elementToClone) {
+ if (elementToClone.getAttributeNS(presentationns, "placeholder") !== "true") {
clonedElement = (elementToClone.cloneNode(true));
clonedPageElement.appendChild(clonedElement);
- setDrawElementPosition(styleId + "_" + i, clonedElement, stylesheet)
}
elementToClone = elementToClone.nextElementSibling;
- i += 1
+ i += 1;
}
dropTemplateDrawFrames(clonedPageElement);
+ clonedDrawElements = domUtils.getElementsByTagNameNS(clonedPageElement, drawns, "*");
+ for (i = 0;i < clonedDrawElements.length;i += 1) {
+ setDrawElementPosition(styleId + "_" + i, clonedDrawElements[i], stylesheet);
+ }
shadowContent.appendChild(clonedPageElement);
pageNumber = String(shadowContent.getElementsByTagNameNS(drawns, "page").length);
setContainerValue(clonedPageElement, textns, "page-number", pageNumber);
setContainerValue(clonedPageElement, presentationns, "header", getHeaderFooter(odfContainer, (element), "header"));
setContainerValue(clonedPageElement, presentationns, "footer", getHeaderFooter(odfContainer, (element), "footer"));
setDrawElementPosition(styleId, clonedPageElement, stylesheet);
- clonedPageElement.setAttributeNS(drawns, "draw:master-page-name", masterPageElement.getAttributeNS(stylens, "name"))
+ clonedPageElement.setAttributeNS(webodfhelperns, "page-style-name", element.getAttributeNS(drawns, "style-name"));
+ clonedPageElement.setAttributeNS(drawns, "draw:master-page-name", masterPageElement.getAttributeNS(stylens, "name"));
}
- element = element.nextElementSibling
+ element = element.nextElementSibling;
}
}
function setVideo(container, plugin) {
@@ -8050,161 +9377,64 @@ ops.Canvas.prototype.getZoomHelper = function() {
url = plugin.getAttributeNS(xlinkns, "href");
function callback(url, mimetype) {
var ns = doc.documentElement.namespaceURI;
- if(mimetype.substr(0, 6) === "video/") {
+ if (mimetype.substr(0, 6) === "video/") {
video = doc.createElementNS(ns, "video");
video.setAttribute("controls", "controls");
source = doc.createElementNS(ns, "source");
- if(url) {
- source.setAttribute("src", url)
+ if (url) {
+ source.setAttribute("src", url);
}
source.setAttribute("type", mimetype);
video.appendChild(source);
- plugin.parentNode.appendChild(video)
- }else {
- plugin.innerHtml = "Unrecognised Plugin"
+ plugin.parentNode.appendChild(video);
+ } else {
+ plugin.innerHtml = "Unrecognised Plugin";
}
}
function onchange(p) {
- callback(p.url, p.mimetype)
+ callback(p.url, p.mimetype);
}
- if(url) {
+ if (url) {
try {
part = container.getPart(url);
part.onchange = onchange;
- part.load()
- }catch(e) {
- runtime.log("slight problem: " + String(e))
+ part.load();
+ } catch (e) {
+ runtime.log("slight problem: " + String(e));
}
- }else {
+ } else {
runtime.log("using MP4 data fallback");
url = getUrlFromBinaryDataElement(plugin);
- callback(url, "video/mp4")
- }
- }
- function getNumberRule(node) {
- var style = node.getAttributeNS(stylens, "num-format"), suffix = node.getAttributeNS(stylens, "num-suffix") || "", prefix = node.getAttributeNS(stylens, "num-prefix") || "", rule = "", stylemap = {1:"decimal", "a":"lower-latin", "A":"upper-latin", "i":"lower-roman", "I":"upper-roman"}, content;
- content = prefix;
- if(stylemap.hasOwnProperty(style)) {
- content += " counter(list, " + stylemap[style] + ")"
- }else {
- if(style) {
- content += "'" + style + "';"
- }else {
- content += " ''"
- }
- }
- if(suffix) {
- content += " '" + suffix + "'"
- }
- rule = "content: " + content + ";";
- return rule
- }
- function getImageRule() {
- var rule = "content: none;";
- return rule
- }
- function getBulletRule(node) {
- var bulletChar = node.getAttributeNS(textns, "bullet-char");
- return"content: '" + bulletChar + "';"
- }
- function getBulletsRule(node) {
- var itemrule;
- if(node) {
- if(node.localName === "list-level-style-number") {
- itemrule = getNumberRule(node)
- }else {
- if(node.localName === "list-level-style-image") {
- itemrule = getImageRule()
- }else {
- if(node.localName === "list-level-style-bullet") {
- itemrule = getBulletRule(node)
- }
- }
- }
- }
- return itemrule
- }
- function loadLists(odffragment, stylesheet, documentns) {
- var i, lists, node, id, continueList, styleName, rule, listMap = {}, parentList, listStyles, listStyleMap = {}, bulletRule;
- listStyles = window.document.getElementsByTagNameNS(textns, "list-style");
- for(i = 0;i < listStyles.length;i += 1) {
- node = (listStyles.item(i));
- styleName = node.getAttributeNS(stylens, "name");
- if(styleName) {
- listStyleMap[styleName] = node
- }
- }
- lists = odffragment.getElementsByTagNameNS(textns, "list");
- for(i = 0;i < lists.length;i += 1) {
- node = (lists.item(i));
- id = node.getAttributeNS(xmlns, "id");
- if(id) {
- continueList = node.getAttributeNS(textns, "continue-list");
- node.setAttributeNS(documentns, "id", id);
- rule = "text|list#" + id + " > text|list-item > *:first-child:before {";
- styleName = node.getAttributeNS(textns, "style-name");
- if(styleName) {
- node = listStyleMap[styleName];
- bulletRule = getBulletsRule((odfUtils.getFirstNonWhitespaceChild(node)))
- }
- if(continueList) {
- parentList = listMap[continueList];
- while(parentList) {
- parentList = listMap[parentList]
- }
- rule += "counter-increment:" + continueList + ";";
- if(bulletRule) {
- bulletRule = bulletRule.replace("list", continueList);
- rule += bulletRule
- }else {
- rule += "content:counter(" + continueList + ");"
- }
- }else {
- continueList = "";
- if(bulletRule) {
- bulletRule = bulletRule.replace("list", id);
- rule += bulletRule
- }else {
- rule += "content: counter(" + id + ");"
- }
- rule += "counter-increment:" + id + ";";
- stylesheet.insertRule("text|list#" + id + " {counter-reset:" + id + "}", stylesheet.cssRules.length)
- }
- rule += "}";
- listMap[id] = continueList;
- if(rule) {
- stylesheet.insertRule(rule, stylesheet.cssRules.length)
- }
- }
+ callback(url, "video/mp4");
}
}
function findWebODFStyleSheet(head) {
var style = head.firstElementChild;
- while(style && !(style.localName === "style" && style.hasAttribute("webodfcss"))) {
- style = style.nextElementSibling
+ while (style && !(style.localName === "style" && style.hasAttribute("webodfcss"))) {
+ style = style.nextElementSibling;
}
- return(style)
+ return (style);
}
function addWebODFStyleSheet(document) {
var head = (document.getElementsByTagName("head")[0]), css, style, href, count = document.styleSheets.length;
style = findWebODFStyleSheet(head);
- if(style) {
+ if (style) {
count = parseInt(style.getAttribute("webodfcss"), 10);
style.setAttribute("webodfcss", count + 1);
- return style
+ return style;
}
- if(String(typeof webodf_css) === "string") {
- css = (webodf_css)
- }else {
+ if (String(typeof webodf_css) === "string") {
+ css = (webodf_css);
+ } else {
href = "webodf.css";
- if(runtime.currentDirectory) {
+ if (runtime.currentDirectory) {
href = runtime.currentDirectory();
- if(href.length > 0 && href.substr(-1) !== "/") {
- href += "/"
+ if (href.length > 0 && href.substr(-1) !== "/") {
+ href += "/";
}
- href += "../webodf.css"
+ href += "../webodf.css";
}
- css = (runtime.readFileSync(href, "utf-8"))
+ css = (runtime.readFileSync(href, "utf-8"));
}
style = (document.createElementNS(head.namespaceURI, "style"));
style.setAttribute("media", "screen, print, handheld, projection");
@@ -8212,14 +9442,14 @@ ops.Canvas.prototype.getZoomHelper = function() {
style.setAttribute("webodfcss", "1");
style.appendChild(document.createTextNode(css));
head.appendChild(style);
- return style
+ return style;
}
function removeWebODFStyleSheet(webodfcss) {
var count = parseInt(webodfcss.getAttribute("webodfcss"), 10);
- if(count === 1) {
- webodfcss.parentNode.removeChild(webodfcss)
- }else {
- webodfcss.setAttribute("count", count - 1)
+ if (count === 1) {
+ webodfcss.parentNode.removeChild(webodfcss);
+ } else {
+ webodfcss.setAttribute("count", count - 1);
}
}
function addStyleSheet(document) {
@@ -8227,101 +9457,102 @@ ops.Canvas.prototype.getZoomHelper = function() {
style.setAttribute("type", "text/css");
style.setAttribute("media", "screen, print, handheld, projection");
odf.Namespaces.forEachPrefix(function(prefix, ns) {
- text += "@namespace " + prefix + " url(" + ns + ");\n"
+ text += "@namespace " + prefix + " url(" + ns + ");\n";
});
text += "@namespace webodfhelper url(" + webodfhelperns + ");\n";
style.appendChild(document.createTextNode(text));
head.appendChild(style);
- return(style)
+ return (style);
}
- odf.OdfCanvas = function OdfCanvas(element) {
+ odf.OdfCanvas = function OdfCanvas(element, viewport) {
runtime.assert(element !== null && element !== undefined, "odf.OdfCanvas constructor needs DOM element");
runtime.assert(element.ownerDocument !== null && element.ownerDocument !== undefined, "odf.OdfCanvas constructor needs DOM");
- var self = this, doc = (element.ownerDocument), async = new core.Async, odfcontainer, formatting = new odf.Formatting, pageSwitcher, sizer = null, annotationsPane = null, allowAnnotations = false, showAnnotationRemoveButton = false, annotationViewManager = null, webodfcss, fontcss, stylesxmlcss, positioncss, shadowContent, eventHandlers = {}, waitingForDoneTimeoutId, redrawContainerTask, shouldRefreshCss = false, shouldRerenderAnnotations = false, loadingQueue = new LoadingQueue, zoomHelper =
- new gui.ZoomHelper;
+ var self = this, doc = (element.ownerDocument), odfcontainer, formatting = new odf.Formatting, pageSwitcher, sizer = null, annotationsPane = null, allowAnnotations = false, showAnnotationRemoveButton = false, annotationViewManager = null, webodfcss, fontcss, stylesxmlcss, positioncss, shadowContent, eventHandlers = {}, waitingForDoneTimeoutId, redrawContainerTask, shouldRefreshCss = false, shouldRerenderAnnotations = false, loadingQueue = new LoadingQueue, zoomHelper = new gui.ZoomHelper, canvasViewport =
+ viewport || new gui.SingleScrollViewport((element.parentNode));
function loadImages(container, odffragment, stylesheet) {
var i, images, node;
function loadImage(name, container, node, stylesheet) {
loadingQueue.addToQueue(function() {
- setImage(name, container, node, stylesheet)
- })
+ setImage(name, container, node, stylesheet);
+ });
}
images = odffragment.getElementsByTagNameNS(drawns, "image");
- for(i = 0;i < images.length;i += 1) {
+ for (i = 0;i < images.length;i += 1) {
node = (images.item(i));
- loadImage("image" + String(i), container, node, stylesheet)
+ loadImage("image" + String(i), container, node, stylesheet);
}
}
function loadVideos(container, odffragment) {
var i, plugins, node;
function loadVideo(container, node) {
loadingQueue.addToQueue(function() {
- setVideo(container, node)
- })
+ setVideo(container, node);
+ });
}
plugins = odffragment.getElementsByTagNameNS(drawns, "plugin");
- for(i = 0;i < plugins.length;i += 1) {
+ for (i = 0;i < plugins.length;i += 1) {
node = (plugins.item(i));
- loadVideo(container, node)
+ loadVideo(container, node);
}
}
function addEventListener(eventType, eventHandler) {
var handlers;
- if(eventHandlers.hasOwnProperty(eventType)) {
- handlers = eventHandlers[eventType]
- }else {
- handlers = eventHandlers[eventType] = []
+ if (eventHandlers.hasOwnProperty(eventType)) {
+ handlers = eventHandlers[eventType];
+ } else {
+ handlers = eventHandlers[eventType] = [];
}
- if(eventHandler && handlers.indexOf(eventHandler) === -1) {
- handlers.push(eventHandler)
+ if (eventHandler && handlers.indexOf(eventHandler) === -1) {
+ handlers.push(eventHandler);
}
}
function fireEvent(eventType, args) {
- if(!eventHandlers.hasOwnProperty(eventType)) {
- return
+ if (!eventHandlers.hasOwnProperty(eventType)) {
+ return;
}
var handlers = eventHandlers[eventType], i;
- for(i = 0;i < handlers.length;i += 1) {
- handlers[i].apply(null, args)
+ for (i = 0;i < handlers.length;i += 1) {
+ handlers[i].apply(null, args);
}
}
function fixContainerSize() {
var minHeight, odfdoc = sizer.firstChild, zoomLevel = zoomHelper.getZoomLevel();
- if(!odfdoc) {
- return
+ if (!odfdoc) {
+ return;
}
sizer.style.WebkitTransformOrigin = "0% 0%";
sizer.style.MozTransformOrigin = "0% 0%";
sizer.style.msTransformOrigin = "0% 0%";
sizer.style.OTransformOrigin = "0% 0%";
sizer.style.transformOrigin = "0% 0%";
- if(annotationViewManager) {
+ if (annotationViewManager) {
minHeight = annotationViewManager.getMinimumHeightForAnnotationPane();
- if(minHeight) {
- sizer.style.minHeight = minHeight
- }else {
- sizer.style.removeProperty("min-height")
+ if (minHeight) {
+ sizer.style.minHeight = minHeight;
+ } else {
+ sizer.style.removeProperty("min-height");
}
}
element.style.width = Math.round(zoomLevel * sizer.offsetWidth) + "px";
- element.style.height = Math.round(zoomLevel * sizer.offsetHeight) + "px"
+ element.style.height = Math.round(zoomLevel * sizer.offsetHeight) + "px";
+ element.style.display = "inline-block";
}
function redrawContainer() {
- if(shouldRefreshCss) {
+ if (shouldRefreshCss) {
handleStyles(odfcontainer, formatting, stylesxmlcss);
- shouldRefreshCss = false
+ shouldRefreshCss = false;
}
- if(shouldRerenderAnnotations) {
- if(annotationViewManager) {
- annotationViewManager.rerenderAnnotations()
+ if (shouldRerenderAnnotations) {
+ if (annotationViewManager) {
+ annotationViewManager.rerenderAnnotations();
}
- shouldRerenderAnnotations = false
+ shouldRerenderAnnotations = false;
}
- fixContainerSize()
+ fixContainerSize();
}
function handleContent(container, odfnode) {
var css = (positioncss.sheet);
- clear(element);
+ domUtils.removeAllChildNodes(element);
sizer = (doc.createElementNS(element.namespaceURI, "div"));
sizer.style.display = "inline-block";
sizer.style.background = "white";
@@ -8337,38 +9568,34 @@ ops.Canvas.prototype.getZoomHelper = function() {
shadowContent.style.left = 0;
container.getContentElement().appendChild(shadowContent);
modifyDrawElements(odfnode.body, css);
- cloneMasterPages(container, shadowContent, odfnode.body, css);
+ cloneMasterPages(formatting, container, shadowContent, odfnode.body, css);
modifyTables(odfnode.body, element.namespaceURI);
modifyLineBreakElements(odfnode.body);
expandSpaceElements(odfnode.body);
expandTabElements(odfnode.body);
loadImages(container, odfnode.body, css);
loadVideos(container, odfnode.body);
- loadLists(odfnode.body, css, element.namespaceURI);
sizer.insertBefore(shadowContent, sizer.firstChild);
- zoomHelper.setZoomableElement(sizer)
- }
- function modifyAnnotations(odffragment) {
- var annotationNodes = (domUtils.getElementsByTagNameNS(odffragment, officens, "annotation"));
- annotationNodes.forEach(annotationViewManager.addAnnotation);
- annotationViewManager.rerenderAnnotations()
+ zoomHelper.setZoomableElement(sizer);
}
function handleAnnotations(odfnode) {
- if(allowAnnotations) {
- if(!annotationsPane.parentNode) {
- sizer.appendChild(annotationsPane)
+ var annotationNodes;
+ if (allowAnnotations) {
+ if (!annotationsPane.parentNode) {
+ sizer.appendChild(annotationsPane);
}
- if(annotationViewManager) {
- annotationViewManager.forgetAnnotations()
+ if (annotationViewManager) {
+ annotationViewManager.forgetAnnotations();
}
annotationViewManager = new gui.AnnotationViewManager(self, odfnode.body, annotationsPane, showAnnotationRemoveButton);
- modifyAnnotations(odfnode.body);
- fixContainerSize()
- }else {
- if(annotationsPane.parentNode) {
+ annotationNodes = (domUtils.getElementsByTagNameNS(odfnode.body, officens, "annotation"));
+ annotationViewManager.addAnnotations(annotationNodes);
+ fixContainerSize();
+ } else {
+ if (annotationsPane.parentNode) {
sizer.removeChild(annotationsPane);
annotationViewManager.forgetAnnotations();
- fixContainerSize()
+ fixContainerSize();
}
}
}
@@ -8377,7 +9604,7 @@ ops.Canvas.prototype.getZoomHelper = function() {
clearCSSStyleSheet(fontcss);
clearCSSStyleSheet(stylesxmlcss);
clearCSSStyleSheet(positioncss);
- clear(element);
+ domUtils.removeAllChildNodes(element);
element.style.display = "inline-block";
var odfnode = odfcontainer.rootElement;
element.ownerDocument.importNode(odfnode, true);
@@ -8386,51 +9613,54 @@ ops.Canvas.prototype.getZoomHelper = function() {
handleStyles(odfcontainer, formatting, stylesxmlcss);
handleContent(odfcontainer, odfnode);
handleAnnotations(odfnode);
- if(!suppressEvent) {
- fireEvent("statereadychange", [odfcontainer])
+ if (!suppressEvent) {
+ loadingQueue.addToQueue(function() {
+ fireEvent("statereadychange", [odfcontainer]);
+ });
}
}
- if(odfcontainer.state === odf.OdfContainer.DONE) {
- callback()
- }else {
+ if (odfcontainer.state === odf.OdfContainer.DONE) {
+ callback();
+ } else {
runtime.log("WARNING: refreshOdf called but ODF was not DONE.");
waitingForDoneTimeoutId = runtime.setTimeout(function later_cb() {
- if(odfcontainer.state === odf.OdfContainer.DONE) {
- callback()
- }else {
+ if (odfcontainer.state === odf.OdfContainer.DONE) {
+ callback();
+ } else {
runtime.log("will be back later...");
- waitingForDoneTimeoutId = runtime.setTimeout(later_cb, 500)
+ waitingForDoneTimeoutId = runtime.setTimeout(later_cb, 500);
}
- }, 100)
+ }, 100);
}
}
this.refreshCSS = function() {
shouldRefreshCss = true;
- redrawContainerTask.trigger()
+ redrawContainerTask.trigger();
};
this.refreshSize = function() {
- redrawContainerTask.trigger()
+ redrawContainerTask.trigger();
};
this.odfContainer = function() {
- return odfcontainer
+ return odfcontainer;
};
this.setOdfContainer = function(container, suppressEvent) {
odfcontainer = container;
- refreshOdf(suppressEvent === true)
+ refreshOdf(suppressEvent === true);
};
function load(url) {
loadingQueue.clearQueue();
- element.innerHTML = runtime.tr("Loading") + " " + url + "...";
+ domUtils.removeAllChildNodes(element);
+ element.appendChild(element.ownerDocument.createTextNode(runtime.tr("Loading") + url + "..."));
element.removeAttribute("style");
odfcontainer = new odf.OdfContainer(url, function(container) {
odfcontainer = container;
- refreshOdf(false)
- })
+ refreshOdf(false);
+ });
}
this["load"] = load;
this.load = load;
this.save = function(callback) {
- odfcontainer.save(callback)
+ odfcontainer.save(callback);
};
this.addListener = function(eventName, handler) {
switch(eventName) {
@@ -8439,125 +9669,128 @@ ops.Canvas.prototype.getZoomHelper = function() {
break;
default:
addEventListener(eventName, handler);
- break
+ break;
}
};
this.getFormatting = function() {
- return formatting
+ return formatting;
};
this.getAnnotationViewManager = function() {
- return annotationViewManager
+ return annotationViewManager;
};
this.refreshAnnotations = function() {
- handleAnnotations(odfcontainer.rootElement)
+ handleAnnotations(odfcontainer.rootElement);
};
this.rerenderAnnotations = function() {
- if(annotationViewManager) {
+ if (annotationViewManager) {
shouldRerenderAnnotations = true;
- redrawContainerTask.trigger()
+ redrawContainerTask.trigger();
}
};
this.getSizer = function() {
- return(sizer)
+ return (sizer);
};
this.enableAnnotations = function(allow, showRemoveButton) {
- if(allow !== allowAnnotations) {
+ if (allow !== allowAnnotations) {
allowAnnotations = allow;
showAnnotationRemoveButton = showRemoveButton;
- if(odfcontainer) {
- handleAnnotations(odfcontainer.rootElement)
+ if (odfcontainer) {
+ handleAnnotations(odfcontainer.rootElement);
}
}
};
this.addAnnotation = function(annotation) {
- if(annotationViewManager) {
- annotationViewManager.addAnnotation(annotation);
- fixContainerSize()
+ if (annotationViewManager) {
+ annotationViewManager.addAnnotations([annotation]);
+ fixContainerSize();
}
};
- this.forgetAnnotations = function() {
- if(annotationViewManager) {
- annotationViewManager.forgetAnnotations();
- fixContainerSize()
+ this.forgetAnnotation = function(annotation) {
+ if (annotationViewManager) {
+ annotationViewManager.forgetAnnotation(annotation);
+ fixContainerSize();
}
};
this.getZoomHelper = function() {
- return zoomHelper
+ return zoomHelper;
};
this.setZoomLevel = function(zoom) {
- zoomHelper.setZoomLevel(zoom)
+ zoomHelper.setZoomLevel(zoom);
};
this.getZoomLevel = function() {
- return zoomHelper.getZoomLevel()
+ return zoomHelper.getZoomLevel();
};
this.fitToContainingElement = function(width, height) {
var zoomLevel = zoomHelper.getZoomLevel(), realWidth = element.offsetWidth / zoomLevel, realHeight = element.offsetHeight / zoomLevel, zoom;
zoom = width / realWidth;
- if(height / realHeight < zoom) {
- zoom = height / realHeight
+ if (height / realHeight < zoom) {
+ zoom = height / realHeight;
}
- zoomHelper.setZoomLevel(zoom)
+ zoomHelper.setZoomLevel(zoom);
};
this.fitToWidth = function(width) {
var realWidth = element.offsetWidth / zoomHelper.getZoomLevel();
- zoomHelper.setZoomLevel(width / realWidth)
+ zoomHelper.setZoomLevel(width / realWidth);
};
this.fitSmart = function(width, height) {
var realWidth, realHeight, newScale, zoomLevel = zoomHelper.getZoomLevel();
realWidth = element.offsetWidth / zoomLevel;
realHeight = element.offsetHeight / zoomLevel;
newScale = width / realWidth;
- if(height !== undefined) {
- if(height / realHeight < newScale) {
- newScale = height / realHeight
+ if (height !== undefined) {
+ if (height / realHeight < newScale) {
+ newScale = height / realHeight;
}
}
- zoomHelper.setZoomLevel(Math.min(1, newScale))
+ zoomHelper.setZoomLevel(Math.min(1, newScale));
};
this.fitToHeight = function(height) {
var realHeight = element.offsetHeight / zoomHelper.getZoomLevel();
- zoomHelper.setZoomLevel(height / realHeight)
+ zoomHelper.setZoomLevel(height / realHeight);
};
this.showFirstPage = function() {
- pageSwitcher.showFirstPage()
+ pageSwitcher.showFirstPage();
};
this.showNextPage = function() {
- pageSwitcher.showNextPage()
+ pageSwitcher.showNextPage();
};
this.showPreviousPage = function() {
- pageSwitcher.showPreviousPage()
+ pageSwitcher.showPreviousPage();
};
this.showPage = function(n) {
pageSwitcher.showPage(n);
- fixContainerSize()
+ fixContainerSize();
};
this.getElement = function() {
- return element
+ return element;
+ };
+ this.getViewport = function() {
+ return canvasViewport;
};
this.addCssForFrameWithImage = function(frame) {
var frameName = frame.getAttributeNS(drawns, "name"), fc = frame.firstElementChild;
setDrawElementPosition(frameName, frame, (positioncss.sheet));
- if(fc) {
- setImage(frameName + "img", odfcontainer, fc, (positioncss.sheet))
+ if (fc) {
+ setImage(frameName + "img", odfcontainer, fc, (positioncss.sheet));
}
};
this.destroy = function(callback) {
var head = (doc.getElementsByTagName("head")[0]), cleanup = [pageSwitcher.destroy, redrawContainerTask.destroy];
runtime.clearTimeout(waitingForDoneTimeoutId);
- if(annotationsPane && annotationsPane.parentNode) {
- annotationsPane.parentNode.removeChild(annotationsPane)
+ if (annotationsPane && annotationsPane.parentNode) {
+ annotationsPane.parentNode.removeChild(annotationsPane);
}
zoomHelper.destroy(function() {
- if(sizer) {
+ if (sizer) {
element.removeChild(sizer);
- sizer = null
+ sizer = null;
}
});
removeWebODFStyleSheet(webodfcss);
head.removeChild(fontcss);
head.removeChild(stylesxmlcss);
head.removeChild(positioncss);
- async.destroyAll(cleanup, callback)
+ core.Async.destroyAll(cleanup, callback);
};
function init() {
webodfcss = addWebODFStyleSheet(doc);
@@ -8565,60 +9798,60 @@ ops.Canvas.prototype.getZoomHelper = function() {
fontcss = addStyleSheet(doc);
stylesxmlcss = addStyleSheet(doc);
positioncss = addStyleSheet(doc);
- redrawContainerTask = new core.ScheduledTask(redrawContainer, 0);
- zoomHelper.subscribe(gui.ZoomHelper.signalZoomChanged, fixContainerSize)
+ redrawContainerTask = core.Task.createRedrawTask(redrawContainer);
+ zoomHelper.subscribe(gui.ZoomHelper.signalZoomChanged, fixContainerSize);
}
- init()
- }
+ init();
+ };
})();
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- This file is part of WebODF.
-
- WebODF is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License (GNU AGPL)
- as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- WebODF is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with WebODF. If not, see <http://www.gnu.org/licenses/>.
- @licend
-
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
+odf.StepUtils = function StepUtils() {
+ function getContentBounds(stepIterator) {
+ var container = stepIterator.container(), offset, contentBounds;
+ runtime.assert(stepIterator.isStep(), "Step iterator must be on a step");
+ if (container.nodeType === Node.TEXT_NODE && stepIterator.offset() > 0) {
+ offset = stepIterator.offset();
+ } else {
+ container = stepIterator.leftNode();
+ if (container && container.nodeType === Node.TEXT_NODE) {
+ offset = (container).length;
+ }
+ }
+ if (container) {
+ if (container.nodeType === Node.TEXT_NODE) {
+ runtime.assert(offset > 0, "Empty text node found");
+ contentBounds = {container:container, startOffset:(offset) - 1, endOffset:(offset)};
+ } else {
+ contentBounds = {container:container, startOffset:0, endOffset:container.childNodes.length};
+ }
+ }
+ return contentBounds;
+ }
+ this.getContentBounds = getContentBounds;
+};
ops.MemberProperties = function() {
this.fullName;
this.color;
- this.imageUrl
+ this.imageUrl;
};
ops.Member = function Member(memberId, properties) {
var props = new ops.MemberProperties;
function getMemberId() {
- return memberId
+ return memberId;
}
function getProperties() {
- return props
+ return props;
}
function setProperties(newProperties) {
Object.keys(newProperties).forEach(function(key) {
- props[key] = newProperties[key]
- })
+ props[key] = newProperties[key];
+ });
}
function removeProperties(removedProperties) {
Object.keys(removedProperties).forEach(function(key) {
- if(key !== "fullName" && (key !== "color" && (key !== "imageUrl" && props.hasOwnProperty(key)))) {
- delete props[key]
+ if (key !== "fullName" && key !== "color" && key !== "imageUrl" && props.hasOwnProperty(key)) {
+ delete props[key];
}
- })
+ });
}
this.getMemberId = getMemberId;
this.getProperties = getProperties;
@@ -8626,281 +9859,19 @@ ops.Member = function Member(memberId, properties) {
this.removeProperties = removeProperties;
function init() {
runtime.assert(Boolean(memberId), "No memberId was supplied!");
- if(!properties.fullName) {
- properties.fullName = runtime.tr("Unknown Author")
+ if (!properties.fullName) {
+ properties.fullName = runtime.tr("Unknown Author");
}
- if(!properties.color) {
- properties.color = "black"
+ if (!properties.color) {
+ properties.color = "black";
}
- if(!properties.imageUrl) {
- properties.imageUrl = "avatar-joe.png"
+ if (!properties.imageUrl) {
+ properties.imageUrl = "avatar-joe.png";
}
- props = properties
+ props = properties;
}
- init()
+ init();
};
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.StepCounter;
-gui.SelectionMover = function SelectionMover(cursor, rootNode) {
- var odfUtils = new odf.OdfUtils, positionIterator, FILTER_ACCEPT = core.PositionFilter.FilterResult.FILTER_ACCEPT;
- function getIteratorAtCursor() {
- positionIterator.setUnfilteredPosition(cursor.getNode(), 0);
- return positionIterator
- }
- function getMaximumNodePosition(node) {
- return node.nodeType === Node.TEXT_NODE ? node.textContent.length : node.childNodes.length
- }
- function getClientRect(clientRectangles, useRightEdge) {
- var rectangle, simplifiedRectangle = null;
- if(clientRectangles && clientRectangles.length > 0) {
- rectangle = useRightEdge ? clientRectangles.item(clientRectangles.length - 1) : clientRectangles.item(0)
- }
- if(rectangle) {
- simplifiedRectangle = {top:rectangle.top, left:useRightEdge ? rectangle.right : rectangle.left, bottom:rectangle.bottom}
- }
- return simplifiedRectangle
- }
- function getVisibleRect(container, offset, range, useRightEdge) {
- var rectangle, nodeType = container.nodeType;
- range.setStart(container, offset);
- range.collapse(!useRightEdge);
- rectangle = getClientRect(range.getClientRects(), useRightEdge === true);
- if(!rectangle && offset > 0) {
- range.setStart(container, offset - 1);
- range.setEnd(container, offset);
- rectangle = getClientRect(range.getClientRects(), true)
- }
- if(!rectangle) {
- if(nodeType === Node.ELEMENT_NODE && (offset > 0 && (container).childNodes.length >= offset)) {
- rectangle = getVisibleRect(container, offset - 1, range, true)
- }else {
- if(container.nodeType === Node.TEXT_NODE && offset > 0) {
- rectangle = getVisibleRect(container, offset - 1, range, true)
- }else {
- if(container.previousSibling) {
- rectangle = getVisibleRect(container.previousSibling, getMaximumNodePosition(container.previousSibling), range, true)
- }else {
- if(container.parentNode && container.parentNode !== rootNode) {
- rectangle = getVisibleRect(container.parentNode, 0, range, false)
- }else {
- range.selectNode(rootNode);
- rectangle = getClientRect(range.getClientRects(), false)
- }
- }
- }
- }
- }
- runtime.assert(Boolean(rectangle), "No visible rectangle found");
- return(rectangle)
- }
- function convertForwardStepsBetweenFilters(stepsFilter1, filter1, filter2) {
- var iterator = getIteratorAtCursor(), watch = new core.LoopWatchDog(1E4), pendingStepsFilter2 = 0, stepsFilter2 = 0;
- while(stepsFilter1 > 0 && iterator.nextPosition()) {
- watch.check();
- if(filter2.acceptPosition(iterator) === FILTER_ACCEPT) {
- pendingStepsFilter2 += 1;
- if(filter1.acceptPosition(iterator) === FILTER_ACCEPT) {
- stepsFilter2 += pendingStepsFilter2;
- pendingStepsFilter2 = 0;
- stepsFilter1 -= 1
- }
- }
- }
- return stepsFilter2
- }
- function convertBackwardStepsBetweenFilters(stepsFilter1, filter1, filter2) {
- var iterator = getIteratorAtCursor(), watch = new core.LoopWatchDog(1E4), pendingStepsFilter2 = 0, stepsFilter2 = 0;
- while(stepsFilter1 > 0 && iterator.previousPosition()) {
- watch.check();
- if(filter2.acceptPosition(iterator) === FILTER_ACCEPT) {
- pendingStepsFilter2 += 1;
- if(filter1.acceptPosition(iterator) === FILTER_ACCEPT) {
- stepsFilter2 += pendingStepsFilter2;
- pendingStepsFilter2 = 0;
- stepsFilter1 -= 1
- }
- }
- }
- return stepsFilter2
- }
- function countLineSteps(filter, direction, iterator) {
- var c = iterator.container(), steps = 0, bestContainer = null, bestOffset, bestXDiff = 10, xDiff, bestCount = 0, top, left, lastTop, rect, range = (rootNode.ownerDocument.createRange()), watch = new core.LoopWatchDog(1E4);
- rect = getVisibleRect(c, iterator.unfilteredDomOffset(), range);
- top = rect.top;
- left = rect.left;
- lastTop = top;
- while((direction < 0 ? iterator.previousPosition() : iterator.nextPosition()) === true) {
- watch.check();
- if(filter.acceptPosition(iterator) === FILTER_ACCEPT) {
- steps += 1;
- c = iterator.container();
- rect = getVisibleRect(c, iterator.unfilteredDomOffset(), range);
- if(rect.top !== top) {
- if(rect.top !== lastTop && lastTop !== top) {
- break
- }
- lastTop = rect.top;
- xDiff = Math.abs(left - rect.left);
- if(bestContainer === null || xDiff < bestXDiff) {
- bestContainer = c;
- bestOffset = iterator.unfilteredDomOffset();
- bestXDiff = xDiff;
- bestCount = steps
- }
- }
- }
- }
- if(bestContainer !== null) {
- iterator.setUnfilteredPosition(bestContainer, (bestOffset));
- steps = bestCount
- }else {
- steps = 0
- }
- range.detach();
- return steps
- }
- function countLinesSteps(lines, filter) {
- var iterator = getIteratorAtCursor(), stepCount = 0, steps = 0, direction = lines < 0 ? -1 : 1;
- lines = Math.abs(lines);
- while(lines > 0) {
- stepCount += countLineSteps(filter, direction, iterator);
- if(stepCount === 0) {
- break
- }
- steps += stepCount;
- lines -= 1
- }
- return steps * direction
- }
- function countStepsToLineBoundary(direction, filter) {
- var fnNextPos, increment, lastRect, rect, onSameLine, iterator = getIteratorAtCursor(), paragraphNode = odfUtils.getParagraphElement(iterator.getCurrentNode()), steps = 0, range = (rootNode.ownerDocument.createRange());
- if(direction < 0) {
- fnNextPos = iterator.previousPosition;
- increment = -1
- }else {
- fnNextPos = iterator.nextPosition;
- increment = 1
- }
- lastRect = getVisibleRect(iterator.container(), iterator.unfilteredDomOffset(), range);
- while(fnNextPos.call(iterator)) {
- if(filter.acceptPosition(iterator) === FILTER_ACCEPT) {
- if(odfUtils.getParagraphElement(iterator.getCurrentNode()) !== paragraphNode) {
- break
- }
- rect = getVisibleRect(iterator.container(), iterator.unfilteredDomOffset(), range);
- if(rect.bottom !== lastRect.bottom) {
- onSameLine = rect.top >= lastRect.top && rect.bottom < lastRect.bottom || rect.top <= lastRect.top && rect.bottom > lastRect.bottom;
- if(!onSameLine) {
- break
- }
- }
- steps += increment;
- lastRect = rect
- }
- }
- range.detach();
- return steps
- }
- this.getStepCounter = function() {
- return{convertForwardStepsBetweenFilters:convertForwardStepsBetweenFilters, convertBackwardStepsBetweenFilters:convertBackwardStepsBetweenFilters, countLinesSteps:countLinesSteps, countStepsToLineBoundary:countStepsToLineBoundary}
- };
- function init() {
- positionIterator = gui.SelectionMover.createPositionIterator(rootNode);
- var range = rootNode.ownerDocument.createRange();
- range.setStart(positionIterator.container(), positionIterator.unfilteredDomOffset());
- range.collapse(true);
- cursor.setSelectedRange(range)
- }
- init()
-};
-gui.SelectionMover.createPositionIterator = function(rootNode) {
- function CursorFilter() {
- this.acceptNode = function(node) {
- if(!node || (node.namespaceURI === "urn:webodf:names:cursor" || node.namespaceURI === "urn:webodf:names:editinfo")) {
- return NodeFilter.FILTER_REJECT
- }
- return NodeFilter.FILTER_ACCEPT
- }
- }
- var filter = new CursorFilter;
- return new core.PositionIterator(rootNode, 5, filter, false)
-};
-(function() {
- return gui.SelectionMover
-})();
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.Document = function Document() {
};
ops.Document.prototype.getMemberIds = function() {
@@ -8925,6 +9896,8 @@ ops.Document.prototype.getCanvas = function() {
};
ops.Document.prototype.createRootFilter = function(inputMemberId) {
};
+ops.Document.prototype.createPositionIterator = function(rootNode) {
+};
ops.Document.signalCursorAdded = "cursor/added";
ops.Document.signalCursorRemoved = "cursor/removed";
ops.Document.signalCursorMoved = "cursor/moved";
@@ -8932,160 +9905,80 @@ ops.Document.signalMemberAdded = "member/added";
ops.Document.signalMemberUpdated = "member/updated";
ops.Document.signalMemberRemoved = "member/removed";
ops.OdtCursor = function OdtCursor(memberId, document) {
- var self = this, validSelectionTypes = {}, selectionType, selectionMover, cursor, events = new core.EventNotifier([ops.OdtCursor.signalCursorUpdated]);
+ var self = this, validSelectionTypes = {}, selectionType, cursor, events = new core.EventNotifier([ops.OdtCursor.signalCursorUpdated]);
this.removeFromDocument = function() {
- cursor.remove()
+ cursor.remove();
};
this.subscribe = function(eventid, cb) {
- events.subscribe(eventid, cb)
+ events.subscribe(eventid, cb);
};
this.unsubscribe = function(eventid, cb) {
- events.unsubscribe(eventid, cb)
- };
- this.getStepCounter = function() {
- return selectionMover.getStepCounter()
+ events.unsubscribe(eventid, cb);
};
this.getMemberId = function() {
- return memberId
+ return memberId;
};
this.getNode = function() {
- return cursor.getNode()
+ return cursor.getNode();
};
this.getAnchorNode = function() {
- return cursor.getAnchorNode()
+ return cursor.getAnchorNode();
};
this.getSelectedRange = function() {
- return cursor.getSelectedRange()
+ return cursor.getSelectedRange();
};
this.setSelectedRange = function(range, isForwardSelection) {
cursor.setSelectedRange(range, isForwardSelection);
- events.emit(ops.OdtCursor.signalCursorUpdated, self)
+ events.emit(ops.OdtCursor.signalCursorUpdated, self);
};
this.hasForwardSelection = function() {
- return cursor.hasForwardSelection()
+ return cursor.hasForwardSelection();
};
this.getDocument = function() {
- return document
+ return document;
};
this.getSelectionType = function() {
- return selectionType
+ return selectionType;
};
this.setSelectionType = function(value) {
- if(validSelectionTypes.hasOwnProperty(value)) {
- selectionType = value
- }else {
- runtime.log("Invalid selection type: " + value)
+ if (validSelectionTypes.hasOwnProperty(value)) {
+ selectionType = value;
+ } else {
+ runtime.log("Invalid selection type: " + value);
}
};
this.resetSelectionType = function() {
- self.setSelectionType(ops.OdtCursor.RangeSelection)
+ self.setSelectionType(ops.OdtCursor.RangeSelection);
};
function init() {
cursor = new core.Cursor(document.getDOMDocument(), memberId);
- selectionMover = new gui.SelectionMover(cursor, document.getRootNode());
validSelectionTypes[ops.OdtCursor.RangeSelection] = true;
validSelectionTypes[ops.OdtCursor.RegionSelection] = true;
- self.resetSelectionType()
+ self.resetSelectionType();
}
- init()
+ init();
};
ops.OdtCursor.RangeSelection = "Range";
ops.OdtCursor.RegionSelection = "Region";
ops.OdtCursor.signalCursorUpdated = "cursorUpdated";
(function() {
- return ops.OdtCursor
-})();
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.Operation = function Operation() {
-};
-ops.Operation.prototype.init = function(data) {
-};
-ops.Operation.prototype.isEdit;
-ops.Operation.prototype.group;
-ops.Operation.prototype.execute = function(document) {
-};
-ops.Operation.prototype.spec = function() {
-};
-/*
-
- Copyright (C) 2010-2014 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- This file is part of WebODF.
-
- WebODF is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License (GNU AGPL)
- as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- WebODF is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with WebODF. If not, see <http://www.gnu.org/licenses/>.
- @licend
-
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-(function() {
var nextNodeId = 0;
- ops.StepsCache = function StepsCache(rootElement, filter, bucketSize) {
- var coordinatens = "urn:webodf:names:steps", stepToDomPoint = {}, nodeToBookmark = {}, odfUtils = new odf.OdfUtils, domUtils = new core.DomUtils, basePoint, lastUndamagedCacheStep, FILTER_ACCEPT = core.PositionFilter.FilterResult.FILTER_ACCEPT, verifyCache;
- function ParagraphBookmark(nodeId, steps, paragraphNode) {
+ ops.StepsCache = function StepsCache(rootElement, bucketSize, restoreBookmarkPosition) {
+ var coordinatens = "urn:webodf:names:steps", stepToDomPoint = {}, nodeToBookmark = {}, domUtils = core.DomUtils, basePoint, lastUndamagedCacheStep, DOCUMENT_POSITION_FOLLOWING = Node.DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_PRECEDING = Node.DOCUMENT_POSITION_PRECEDING;
+ function NodeBookmark(nodeId, bookmarkNode) {
+ var self = this;
this.nodeId = nodeId;
- this.steps = steps;
- this.node = paragraphNode;
+ this.steps = -1;
+ this.node = bookmarkNode;
this.nextBookmark = null;
this.previousBookmark = null;
this.setIteratorPosition = function(iterator) {
- iterator.setPositionBeforeElement(paragraphNode);
- do {
- if(filter.acceptPosition(iterator) === FILTER_ACCEPT) {
- break
- }
- }while(iterator.nextPosition())
- }
+ iterator.setPositionBeforeElement(bookmarkNode);
+ restoreBookmarkPosition(self.steps, iterator);
+ };
}
function RootBookmark(nodeId, steps, rootNode) {
+ var self = this;
this.nodeId = nodeId;
this.steps = steps;
this.node = rootNode;
@@ -9093,254 +9986,269 @@ ops.Operation.prototype.spec = function() {
this.previousBookmark = null;
this.setIteratorPosition = function(iterator) {
iterator.setUnfilteredPosition(rootNode, 0);
- do {
- if(filter.acceptPosition(iterator) === FILTER_ACCEPT) {
- break
- }
- }while(iterator.nextPosition())
- }
+ restoreBookmarkPosition(self.steps, iterator);
+ };
}
function inspectBookmarks(bookmark1, bookmark2) {
var parts = "[" + bookmark1.nodeId;
- if(bookmark2) {
- parts += " => " + bookmark2.nodeId
+ if (bookmark2) {
+ parts += " => " + bookmark2.nodeId;
}
- return parts + "]"
+ return parts + "]";
}
function isUndamagedBookmark(bookmark) {
- return lastUndamagedCacheStep === undefined || bookmark.steps <= lastUndamagedCacheStep
+ return lastUndamagedCacheStep === undefined || bookmark === basePoint || bookmark.steps <= lastUndamagedCacheStep;
}
- function verifyCacheImpl() {
- var bookmark = basePoint, previousBookmark, nextBookmark, documentPosition, loopCheck = new core.LoopWatchDog(0, 1E5);
- while(bookmark) {
+ function verifyCache() {
+ if (ops.StepsCache.ENABLE_CACHE_VERIFICATION !== true) {
+ return;
+ }
+ var bookmark = basePoint, previousBookmark, nextBookmark, documentPosition, loopCheck = new core.LoopWatchDog(0, 1E5), stepToDomPointNodeIds = {};
+ while (bookmark) {
loopCheck.check();
previousBookmark = bookmark.previousBookmark;
- if(previousBookmark) {
- runtime.assert(previousBookmark.nextBookmark === bookmark, "Broken bookmark link to previous @" + inspectBookmarks(previousBookmark, bookmark))
- }else {
+ if (previousBookmark) {
+ runtime.assert(previousBookmark.nextBookmark === bookmark, "Broken bookmark link to previous @" + inspectBookmarks(previousBookmark, bookmark));
+ } else {
runtime.assert(bookmark === basePoint, "Broken bookmark link @" + inspectBookmarks(bookmark));
- runtime.assert(isUndamagedBookmark(basePoint), "Base point is damaged @" + inspectBookmarks(bookmark))
+ runtime.assert(isUndamagedBookmark(basePoint), "Base point is damaged @" + inspectBookmarks(bookmark));
}
nextBookmark = bookmark.nextBookmark;
- if(nextBookmark) {
- runtime.assert(nextBookmark.previousBookmark === bookmark, "Broken bookmark link to next @" + inspectBookmarks(bookmark, nextBookmark))
+ if (nextBookmark) {
+ runtime.assert(nextBookmark.previousBookmark === bookmark, "Broken bookmark link to next @" + inspectBookmarks(bookmark, nextBookmark));
}
- if(isUndamagedBookmark(bookmark)) {
+ if (isUndamagedBookmark(bookmark)) {
runtime.assert(domUtils.containsNode(rootElement, bookmark.node), "Disconnected node is being reported as undamaged @" + inspectBookmarks(bookmark));
- if(previousBookmark) {
+ if (previousBookmark) {
documentPosition = bookmark.node.compareDocumentPosition(previousBookmark.node);
- runtime.assert(documentPosition === 0 || (documentPosition & Node.DOCUMENT_POSITION_PRECEDING) !== 0, "Bookmark order with previous does not reflect DOM order @" + inspectBookmarks(previousBookmark, bookmark))
+ runtime.assert(documentPosition === 0 || (documentPosition & DOCUMENT_POSITION_PRECEDING) !== 0, "Bookmark order with previous does not reflect DOM order @" + inspectBookmarks(previousBookmark, bookmark));
}
- if(nextBookmark) {
- if(domUtils.containsNode(rootElement, nextBookmark.node)) {
+ if (nextBookmark) {
+ if (domUtils.containsNode(rootElement, nextBookmark.node)) {
documentPosition = bookmark.node.compareDocumentPosition(nextBookmark.node);
- runtime.assert(documentPosition === 0 || (documentPosition & Node.DOCUMENT_POSITION_FOLLOWING) !== 0, "Bookmark order with next does not reflect DOM order @" + inspectBookmarks(bookmark, nextBookmark))
+ runtime.assert(documentPosition === 0 || (documentPosition & DOCUMENT_POSITION_FOLLOWING) !== 0, "Bookmark order with next does not reflect DOM order @" + inspectBookmarks(bookmark, nextBookmark));
}
}
}
- bookmark = bookmark.nextBookmark
+ bookmark = bookmark.nextBookmark;
}
+ Object.keys(stepToDomPoint).forEach(function(step) {
+ var domPointBookmark = stepToDomPoint[step];
+ if (lastUndamagedCacheStep === undefined || step <= lastUndamagedCacheStep) {
+ runtime.assert(domPointBookmark.steps <= step, "Bookmark step of " + domPointBookmark.steps + " exceeds cached step lookup for " + step + " @" + inspectBookmarks(domPointBookmark));
+ }
+ runtime.assert(stepToDomPointNodeIds.hasOwnProperty(domPointBookmark.nodeId) === false, "Bookmark " + inspectBookmarks(domPointBookmark) + " appears twice in cached step lookup at steps " + stepToDomPointNodeIds[domPointBookmark.nodeId] + " and " + step);
+ stepToDomPointNodeIds[domPointBookmark.nodeId] = step;
+ });
}
function getBucket(steps) {
- return Math.floor(steps / bucketSize) * bucketSize
+ return Math.floor(steps / bucketSize) * bucketSize;
}
function getDestinationBucket(steps) {
- return Math.ceil(steps / bucketSize) * bucketSize
+ return Math.ceil(steps / bucketSize) * bucketSize;
}
function clearNodeId(node) {
- node.removeAttributeNS(coordinatens, "nodeId")
+ node.removeAttributeNS(coordinatens, "nodeId");
}
function getNodeId(node) {
var id = "";
- if(node.nodeType === Node.ELEMENT_NODE) {
- id = (node).getAttributeNS(coordinatens, "nodeId")
+ if (node.nodeType === Node.ELEMENT_NODE) {
+ id = (node).getAttributeNS(coordinatens, "nodeId") || "";
}
- return id
+ return id;
}
function setNodeId(node) {
var nodeId = nextNodeId.toString();
node.setAttributeNS(coordinatens, "nodeId", nodeId);
nextNodeId += 1;
- return nodeId
+ return nodeId;
}
function isValidBookmarkForNode(node, bookmark) {
- return bookmark.node === node
+ return bookmark.node === node;
}
- function getNodeBookmark(node, steps) {
+ function getNodeBookmark(node) {
var nodeId = getNodeId(node) || setNodeId(node), existingBookmark;
existingBookmark = nodeToBookmark[nodeId];
- if(!existingBookmark) {
- existingBookmark = nodeToBookmark[nodeId] = new ParagraphBookmark(nodeId, steps, node)
- }else {
- if(!isValidBookmarkForNode(node, existingBookmark)) {
+ if (!existingBookmark) {
+ existingBookmark = nodeToBookmark[nodeId] = new NodeBookmark(nodeId, node);
+ } else {
+ if (!isValidBookmarkForNode(node, existingBookmark)) {
runtime.log("Cloned node detected. Creating new bookmark");
nodeId = setNodeId(node);
- existingBookmark = nodeToBookmark[nodeId] = new ParagraphBookmark(nodeId, steps, node)
- }else {
- existingBookmark.steps = steps
+ existingBookmark = nodeToBookmark[nodeId] = new NodeBookmark(nodeId, node);
}
}
- return existingBookmark
+ return existingBookmark;
}
function getClosestBookmark(steps) {
var cacheBucket, cachePoint, loopGuard = new core.LoopWatchDog(0, 1E4);
- if(lastUndamagedCacheStep !== undefined && steps > lastUndamagedCacheStep) {
- steps = lastUndamagedCacheStep
+ if (lastUndamagedCacheStep !== undefined && steps > lastUndamagedCacheStep) {
+ steps = lastUndamagedCacheStep;
}
cacheBucket = getBucket(steps);
- while(!cachePoint && cacheBucket !== 0) {
+ while (!cachePoint && cacheBucket >= 0) {
cachePoint = stepToDomPoint[cacheBucket];
- cacheBucket -= bucketSize
+ cacheBucket -= bucketSize;
}
cachePoint = cachePoint || basePoint;
- while(cachePoint.nextBookmark && cachePoint.nextBookmark.steps <= steps) {
+ while (cachePoint.nextBookmark && cachePoint.nextBookmark.steps <= steps) {
loopGuard.check();
- cachePoint = cachePoint.nextBookmark
+ cachePoint = cachePoint.nextBookmark;
}
- return cachePoint
+ runtime.assert(steps === -1 || cachePoint.steps <= steps, "Bookmark @" + inspectBookmarks(cachePoint) + " at step " + cachePoint.steps + " exceeds requested step of " + steps);
+ return cachePoint;
}
function getUndamagedBookmark(bookmark) {
- if(lastUndamagedCacheStep !== undefined && bookmark.steps > lastUndamagedCacheStep) {
- bookmark = getClosestBookmark(lastUndamagedCacheStep)
+ if (lastUndamagedCacheStep !== undefined && bookmark.steps > lastUndamagedCacheStep) {
+ bookmark = getClosestBookmark(lastUndamagedCacheStep);
}
- return bookmark
+ return bookmark;
}
function removeBookmark(currentBookmark) {
- if(currentBookmark.previousBookmark) {
- currentBookmark.previousBookmark.nextBookmark = currentBookmark.nextBookmark
+ if (currentBookmark.previousBookmark) {
+ currentBookmark.previousBookmark.nextBookmark = currentBookmark.nextBookmark;
}
- if(currentBookmark.nextBookmark) {
- currentBookmark.nextBookmark.previousBookmark = currentBookmark.previousBookmark
+ if (currentBookmark.nextBookmark) {
+ currentBookmark.nextBookmark.previousBookmark = currentBookmark.previousBookmark;
}
}
+ function isAlreadyInOrder(previousBookmark, newBookmark) {
+ return previousBookmark === newBookmark || previousBookmark.nextBookmark === newBookmark;
+ }
function insertBookmark(previousBookmark, newBookmark) {
var nextBookmark;
- if(previousBookmark !== newBookmark && previousBookmark.nextBookmark !== newBookmark) {
- removeBookmark(newBookmark);
- nextBookmark = previousBookmark.nextBookmark;
- newBookmark.nextBookmark = previousBookmark.nextBookmark;
- newBookmark.previousBookmark = previousBookmark;
- previousBookmark.nextBookmark = newBookmark;
- if(nextBookmark) {
- nextBookmark.previousBookmark = newBookmark
+ if (!isAlreadyInOrder(previousBookmark, newBookmark)) {
+ if (previousBookmark.steps === newBookmark.steps) {
+ while ((newBookmark.node.compareDocumentPosition(previousBookmark.node) & DOCUMENT_POSITION_FOLLOWING) !== 0 && previousBookmark !== basePoint) {
+ previousBookmark = (previousBookmark.previousBookmark);
+ }
+ }
+ if (!isAlreadyInOrder(previousBookmark, newBookmark)) {
+ removeBookmark(newBookmark);
+ nextBookmark = previousBookmark.nextBookmark;
+ newBookmark.nextBookmark = previousBookmark.nextBookmark;
+ newBookmark.previousBookmark = previousBookmark;
+ previousBookmark.nextBookmark = newBookmark;
+ if (nextBookmark) {
+ nextBookmark.previousBookmark = newBookmark;
+ }
}
}
}
function repairCacheUpToStep(currentIteratorStep) {
var damagedBookmark, undamagedBookmark, nextBookmark, stepsBucket;
- if(lastUndamagedCacheStep !== undefined && lastUndamagedCacheStep < currentIteratorStep) {
+ if (lastUndamagedCacheStep !== undefined && lastUndamagedCacheStep < currentIteratorStep) {
undamagedBookmark = getClosestBookmark(lastUndamagedCacheStep);
damagedBookmark = undamagedBookmark.nextBookmark;
- while(damagedBookmark && damagedBookmark.steps <= currentIteratorStep) {
+ while (damagedBookmark && damagedBookmark.steps <= currentIteratorStep) {
nextBookmark = damagedBookmark.nextBookmark;
stepsBucket = getDestinationBucket(damagedBookmark.steps);
- if(stepToDomPoint[stepsBucket] === damagedBookmark) {
- delete stepToDomPoint[stepsBucket]
+ if (stepToDomPoint[stepsBucket] === damagedBookmark) {
+ delete stepToDomPoint[stepsBucket];
}
- if(!domUtils.containsNode(rootElement, damagedBookmark.node)) {
+ if (!domUtils.containsNode(rootElement, damagedBookmark.node)) {
removeBookmark(damagedBookmark);
- delete nodeToBookmark[damagedBookmark.nodeId]
- }else {
- damagedBookmark.steps = currentIteratorStep + 1
+ delete nodeToBookmark[damagedBookmark.nodeId];
+ } else {
+ damagedBookmark.steps = currentIteratorStep + 1;
}
- damagedBookmark = nextBookmark
+ damagedBookmark = nextBookmark;
}
- lastUndamagedCacheStep = currentIteratorStep
- }else {
- undamagedBookmark = getClosestBookmark(currentIteratorStep)
+ lastUndamagedCacheStep = currentIteratorStep;
+ } else {
+ undamagedBookmark = getClosestBookmark(currentIteratorStep);
}
- return undamagedBookmark
+ return undamagedBookmark;
}
- this.updateCache = function(steps, iterator, isStep) {
- var cacheBucket, existingCachePoint, bookmark, closestPriorBookmark, node = iterator.getCurrentNode();
- if(iterator.isBeforeNode() && odfUtils.isParagraph(node)) {
- if(!isStep) {
- steps += 1
- }
- closestPriorBookmark = repairCacheUpToStep(steps);
- bookmark = getNodeBookmark((node), steps);
- insertBookmark(closestPriorBookmark, bookmark);
- cacheBucket = getDestinationBucket(bookmark.steps);
- existingCachePoint = stepToDomPoint[cacheBucket];
- if(!existingCachePoint || bookmark.steps > existingCachePoint.steps) {
- stepToDomPoint[cacheBucket] = bookmark
+ this.updateBookmark = function(steps, node) {
+ var previousCacheBucket, newCacheBucket = getDestinationBucket(steps), existingCachePoint, bookmark, closestPriorBookmark;
+ closestPriorBookmark = repairCacheUpToStep(steps);
+ bookmark = getNodeBookmark((node));
+ if (bookmark.steps !== steps) {
+ previousCacheBucket = getDestinationBucket(bookmark.steps);
+ if (previousCacheBucket !== newCacheBucket && stepToDomPoint[previousCacheBucket] === bookmark) {
+ delete stepToDomPoint[previousCacheBucket];
}
- verifyCache()
+ bookmark.steps = steps;
}
+ insertBookmark(closestPriorBookmark, bookmark);
+ existingCachePoint = stepToDomPoint[newCacheBucket];
+ if (!existingCachePoint || bookmark.steps > existingCachePoint.steps) {
+ stepToDomPoint[newCacheBucket] = bookmark;
+ }
+ verifyCache();
};
this.setToClosestStep = function(steps, iterator) {
var cachePoint;
verifyCache();
cachePoint = getClosestBookmark(steps);
cachePoint.setIteratorPosition(iterator);
- return cachePoint.steps
+ return cachePoint.steps;
};
function findBookmarkedAncestor(node) {
var currentNode = node, nodeId, bookmark = null;
- while(!bookmark && (currentNode && currentNode !== rootElement)) {
+ while (!bookmark && currentNode && currentNode !== rootElement) {
nodeId = getNodeId(currentNode);
- if(nodeId) {
+ if (nodeId) {
bookmark = nodeToBookmark[nodeId];
- if(bookmark && !isValidBookmarkForNode(currentNode, bookmark)) {
+ if (bookmark && !isValidBookmarkForNode(currentNode, bookmark)) {
runtime.log("Cloned node detected. Creating new bookmark");
bookmark = null;
- clearNodeId((currentNode))
+ clearNodeId((currentNode));
}
}
- currentNode = currentNode.parentNode
+ currentNode = currentNode.parentNode;
}
- return bookmark
+ return bookmark;
}
this.setToClosestDomPoint = function(node, offset, iterator) {
var bookmark, b, key;
verifyCache();
- if(node === rootElement && offset === 0) {
- bookmark = basePoint
- }else {
- if(node === rootElement && offset === rootElement.childNodes.length) {
+ if (node === rootElement && offset === 0) {
+ bookmark = basePoint;
+ } else {
+ if (node === rootElement && offset === rootElement.childNodes.length) {
bookmark = basePoint;
- for(key in stepToDomPoint) {
- if(stepToDomPoint.hasOwnProperty(key)) {
+ for (key in stepToDomPoint) {
+ if (stepToDomPoint.hasOwnProperty(key)) {
b = stepToDomPoint[key];
- if(b.steps > bookmark.steps) {
- bookmark = b
+ if (b.steps > bookmark.steps) {
+ bookmark = b;
}
}
}
- }else {
+ } else {
bookmark = findBookmarkedAncestor(node.childNodes.item(offset) || node);
- if(!bookmark) {
+ if (!bookmark) {
iterator.setUnfilteredPosition(node, offset);
- while(!bookmark && iterator.previousNode()) {
- bookmark = findBookmarkedAncestor(iterator.getCurrentNode())
+ while (!bookmark && iterator.previousNode()) {
+ bookmark = findBookmarkedAncestor(iterator.getCurrentNode());
}
}
}
}
bookmark = getUndamagedBookmark(bookmark || basePoint);
bookmark.setIteratorPosition(iterator);
- return bookmark.steps
+ return bookmark.steps;
};
this.damageCacheAfterStep = function(inflectionStep) {
- if(inflectionStep < 0) {
- inflectionStep = 0
+ if (inflectionStep < 0) {
+ inflectionStep = -1;
}
- if(lastUndamagedCacheStep === undefined) {
- lastUndamagedCacheStep = inflectionStep
- }else {
- if(inflectionStep < lastUndamagedCacheStep) {
- lastUndamagedCacheStep = inflectionStep
+ if (lastUndamagedCacheStep === undefined) {
+ lastUndamagedCacheStep = inflectionStep;
+ } else {
+ if (inflectionStep < lastUndamagedCacheStep) {
+ lastUndamagedCacheStep = inflectionStep;
}
}
- verifyCache()
+ verifyCache();
};
function init() {
var rootElementId = getNodeId(rootElement) || setNodeId(rootElement);
basePoint = new RootBookmark(rootElementId, 0, rootElement);
- verifyCache = ops.StepsCache.ENABLE_CACHE_VERIFICATION ? verifyCacheImpl : function() {
- }
}
- init()
+ init();
};
ops.StepsCache.ENABLE_CACHE_VERIFICATION = false;
ops.StepsCache.Bookmark = function Bookmark() {
@@ -9351,569 +10259,492 @@ ops.Operation.prototype.spec = function() {
ops.StepsCache.Bookmark.prototype.previousBookmark;
ops.StepsCache.Bookmark.prototype.nextBookmark;
ops.StepsCache.Bookmark.prototype.setIteratorPosition = function(iterator) {
- }
+ };
})();
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
(function() {
- var PREVIOUS_STEP = 0, NEXT_STEP = 1;
- ops.StepsTranslator = function StepsTranslator(getRootNode, newIterator, filter, bucketSize) {
- var rootNode = getRootNode(), stepsCache = new ops.StepsCache(rootNode, filter, bucketSize), domUtils = new core.DomUtils, iterator = newIterator(getRootNode()), FILTER_ACCEPT = core.PositionFilter.FilterResult.FILTER_ACCEPT;
- function verifyRootNode() {
- var currentRootNode = getRootNode();
- if(currentRootNode !== rootNode) {
- runtime.log("Undo detected. Resetting steps cache");
- rootNode = currentRootNode;
- stepsCache = new ops.StepsCache(rootNode, filter, bucketSize);
- iterator = newIterator(rootNode)
+ ops.OdtStepsTranslator = function OdtStepsTranslator(rootNode, iterator, filter, bucketSize) {
+ var stepsCache, odfUtils = odf.OdfUtils, domUtils = core.DomUtils, FILTER_ACCEPT = core.PositionFilter.FilterResult.FILTER_ACCEPT, PREVIOUS = core.StepDirection.PREVIOUS, NEXT = core.StepDirection.NEXT;
+ function updateCache(steps, iterator, isStep) {
+ var node = iterator.getCurrentNode();
+ if (iterator.isBeforeNode() && odfUtils.isParagraph(node)) {
+ if (!isStep) {
+ steps += 1;
+ }
+ stepsCache.updateBookmark(steps, node);
}
}
+ function roundUpToStep(steps, iterator) {
+ do {
+ if (filter.acceptPosition(iterator) === FILTER_ACCEPT) {
+ updateCache(steps, iterator, true);
+ break;
+ }
+ updateCache(steps - 1, iterator, false);
+ } while (iterator.nextPosition());
+ }
this.convertStepsToDomPoint = function(steps) {
var stepsFromRoot, isStep;
- if(isNaN(steps)) {
+ if (isNaN(steps)) {
throw new TypeError("Requested steps is not numeric (" + steps + ")");
}
- if(steps < 0) {
+ if (steps < 0) {
throw new RangeError("Requested steps is negative (" + steps + ")");
}
- verifyRootNode();
stepsFromRoot = stepsCache.setToClosestStep(steps, iterator);
- while(stepsFromRoot < steps && iterator.nextPosition()) {
+ while (stepsFromRoot < steps && iterator.nextPosition()) {
isStep = filter.acceptPosition(iterator) === FILTER_ACCEPT;
- if(isStep) {
- stepsFromRoot += 1
+ if (isStep) {
+ stepsFromRoot += 1;
}
- stepsCache.updateCache(stepsFromRoot, iterator, isStep)
+ updateCache(stepsFromRoot, iterator, isStep);
}
- if(stepsFromRoot !== steps) {
+ if (stepsFromRoot !== steps) {
throw new RangeError("Requested steps (" + steps + ") exceeds available steps (" + stepsFromRoot + ")");
}
- return{node:iterator.container(), offset:iterator.unfilteredDomOffset()}
+ return {node:iterator.container(), offset:iterator.unfilteredDomOffset()};
};
function roundToPreferredStep(iterator, roundDirection) {
- if(!roundDirection || filter.acceptPosition(iterator) === FILTER_ACCEPT) {
- return true
+ if (!roundDirection || filter.acceptPosition(iterator) === FILTER_ACCEPT) {
+ return true;
}
- while(iterator.previousPosition()) {
- if(filter.acceptPosition(iterator) === FILTER_ACCEPT) {
- if(roundDirection(PREVIOUS_STEP, iterator.container(), iterator.unfilteredDomOffset())) {
- return true
+ while (iterator.previousPosition()) {
+ if (filter.acceptPosition(iterator) === FILTER_ACCEPT) {
+ if (roundDirection(PREVIOUS, iterator.container(), iterator.unfilteredDomOffset())) {
+ return true;
}
- break
+ break;
}
}
- while(iterator.nextPosition()) {
- if(filter.acceptPosition(iterator) === FILTER_ACCEPT) {
- if(roundDirection(NEXT_STEP, iterator.container(), iterator.unfilteredDomOffset())) {
- return true
+ while (iterator.nextPosition()) {
+ if (filter.acceptPosition(iterator) === FILTER_ACCEPT) {
+ if (roundDirection(NEXT, iterator.container(), iterator.unfilteredDomOffset())) {
+ return true;
}
- break
+ break;
}
}
- return false
+ return false;
}
this.convertDomPointToSteps = function(node, offset, roundDirection) {
var stepsFromRoot, beforeRoot, destinationNode, destinationOffset, rounding = 0, isStep;
- verifyRootNode();
- if(!domUtils.containsNode(rootNode, node)) {
+ if (!domUtils.containsNode(rootNode, node)) {
beforeRoot = domUtils.comparePoints(rootNode, 0, node, offset) < 0;
node = (rootNode);
- offset = beforeRoot ? 0 : (rootNode).childNodes.length
+ offset = beforeRoot ? 0 : (rootNode).childNodes.length;
}
iterator.setUnfilteredPosition(node, offset);
- if(!roundToPreferredStep(iterator, roundDirection)) {
- iterator.setUnfilteredPosition(node, offset)
+ if (!roundToPreferredStep(iterator, roundDirection)) {
+ iterator.setUnfilteredPosition(node, offset);
}
destinationNode = iterator.container();
destinationOffset = iterator.unfilteredDomOffset();
stepsFromRoot = stepsCache.setToClosestDomPoint(destinationNode, destinationOffset, iterator);
- if(domUtils.comparePoints(iterator.container(), iterator.unfilteredDomOffset(), destinationNode, destinationOffset) < 0) {
- return stepsFromRoot > 0 ? stepsFromRoot - 1 : stepsFromRoot
+ if (domUtils.comparePoints(iterator.container(), iterator.unfilteredDomOffset(), destinationNode, destinationOffset) < 0) {
+ return stepsFromRoot > 0 ? stepsFromRoot - 1 : stepsFromRoot;
}
- while(!(iterator.container() === destinationNode && iterator.unfilteredDomOffset() === destinationOffset) && iterator.nextPosition()) {
+ while (!(iterator.container() === destinationNode && iterator.unfilteredDomOffset() === destinationOffset) && iterator.nextPosition()) {
isStep = filter.acceptPosition(iterator) === FILTER_ACCEPT;
- if(isStep) {
- stepsFromRoot += 1
+ if (isStep) {
+ stepsFromRoot += 1;
}
- stepsCache.updateCache(stepsFromRoot, iterator, isStep)
+ updateCache(stepsFromRoot, iterator, isStep);
}
- return stepsFromRoot + rounding
+ return stepsFromRoot + rounding;
};
this.prime = function() {
var stepsFromRoot, isStep;
- verifyRootNode();
stepsFromRoot = stepsCache.setToClosestStep(0, iterator);
- while(iterator.nextPosition()) {
+ while (iterator.nextPosition()) {
isStep = filter.acceptPosition(iterator) === FILTER_ACCEPT;
- if(isStep) {
- stepsFromRoot += 1
+ if (isStep) {
+ stepsFromRoot += 1;
}
- stepsCache.updateCache(stepsFromRoot, iterator, isStep)
+ updateCache(stepsFromRoot, iterator, isStep);
}
};
this.handleStepsInserted = function(eventArgs) {
- verifyRootNode();
- stepsCache.damageCacheAfterStep(eventArgs.position)
+ stepsCache.damageCacheAfterStep(eventArgs.position);
};
this.handleStepsRemoved = function(eventArgs) {
- verifyRootNode();
- stepsCache.damageCacheAfterStep(eventArgs.position - 1)
+ stepsCache.damageCacheAfterStep(eventArgs.position - 1);
+ };
+ function init() {
+ stepsCache = new ops.StepsCache(rootNode, bucketSize, roundUpToStep);
}
+ init();
};
- ops.StepsTranslator.PREVIOUS_STEP = PREVIOUS_STEP;
- ops.StepsTranslator.NEXT_STEP = NEXT_STEP;
- return ops.StepsTranslator
})();
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.TextPositionFilter = function TextPositionFilter(getRootNode) {
- var odfUtils = new odf.OdfUtils, ELEMENT_NODE = Node.ELEMENT_NODE, TEXT_NODE = Node.TEXT_NODE, FILTER_ACCEPT = core.PositionFilter.FilterResult.FILTER_ACCEPT, FILTER_REJECT = core.PositionFilter.FilterResult.FILTER_REJECT;
- function checkLeftRight(container, leftNode, rightNode) {
+ops.Operation = function Operation() {
+};
+ops.Operation.prototype.init = function(data) {
+};
+ops.Operation.prototype.isEdit;
+ops.Operation.prototype.group;
+ops.Operation.prototype.execute = function(document) {
+};
+ops.Operation.prototype.spec = function() {
+};
+ops.TextPositionFilter = function TextPositionFilter() {
+ var odfUtils = odf.OdfUtils, ELEMENT_NODE = Node.ELEMENT_NODE, TEXT_NODE = Node.TEXT_NODE, FILTER_ACCEPT = core.PositionFilter.FilterResult.FILTER_ACCEPT, FILTER_REJECT = core.PositionFilter.FilterResult.FILTER_REJECT;
+ function previousSibling(node, nodeFilter) {
+ while (node && nodeFilter(node) !== FILTER_ACCEPT) {
+ node = node.previousSibling;
+ }
+ return node;
+ }
+ function checkLeftRight(container, leftNode, rightNode, nodeFilter) {
var r, firstPos, rightOfChar;
- if(leftNode) {
- if(odfUtils.isInlineRoot(leftNode) && odfUtils.isGroupingElement(rightNode)) {
- return FILTER_REJECT
+ if (leftNode) {
+ if (odfUtils.isInlineRoot(leftNode) && odfUtils.isGroupingElement(rightNode)) {
+ return FILTER_REJECT;
}
r = odfUtils.lookLeftForCharacter(leftNode);
- if(r === 1) {
- return FILTER_ACCEPT
+ if (r === 1) {
+ return FILTER_ACCEPT;
}
- if(r === 2 && (odfUtils.scanRightForAnyCharacter(rightNode) || odfUtils.scanRightForAnyCharacter(odfUtils.nextNode(container)))) {
- return FILTER_ACCEPT
+ if (r === 2 && (odfUtils.scanRightForAnyCharacter(rightNode) || odfUtils.scanRightForAnyCharacter(odfUtils.nextNode(container)))) {
+ return FILTER_ACCEPT;
+ }
+ } else {
+ if (odfUtils.isGroupingElement(container) && odfUtils.isInlineRoot(previousSibling(container.previousSibling, nodeFilter))) {
+ return FILTER_ACCEPT;
}
}
firstPos = leftNode === null && odfUtils.isParagraph(container);
rightOfChar = odfUtils.lookRightForCharacter(rightNode);
- if(firstPos) {
- if(rightOfChar) {
- return FILTER_ACCEPT
+ if (firstPos) {
+ if (rightOfChar) {
+ return FILTER_ACCEPT;
}
- return odfUtils.scanRightForAnyCharacter(rightNode) ? FILTER_REJECT : FILTER_ACCEPT
+ return odfUtils.scanRightForAnyCharacter(rightNode) ? FILTER_REJECT : FILTER_ACCEPT;
}
- if(!rightOfChar) {
- return FILTER_REJECT
+ if (!rightOfChar) {
+ return FILTER_REJECT;
}
leftNode = leftNode || odfUtils.previousNode(container);
- return odfUtils.scanLeftForAnyCharacter(leftNode) ? FILTER_REJECT : FILTER_ACCEPT
+ return odfUtils.scanLeftForAnyCharacter(leftNode) ? FILTER_REJECT : FILTER_ACCEPT;
}
this.acceptPosition = function(iterator) {
var container = iterator.container(), nodeType = container.nodeType, offset, text, leftChar, rightChar, leftNode, rightNode, r;
- if(nodeType !== ELEMENT_NODE && nodeType !== TEXT_NODE) {
- return FILTER_REJECT
+ if (nodeType !== ELEMENT_NODE && nodeType !== TEXT_NODE) {
+ return FILTER_REJECT;
}
- if(nodeType === TEXT_NODE) {
- if(!odfUtils.isGroupingElement(container.parentNode) || odfUtils.isWithinTrackedChanges(container.parentNode, getRootNode())) {
- return FILTER_REJECT
- }
+ if (nodeType === TEXT_NODE) {
offset = iterator.unfilteredDomOffset();
text = container.data;
runtime.assert(offset !== text.length, "Unexpected offset.");
- if(offset > 0) {
+ if (offset > 0) {
leftChar = (text[offset - 1]);
- if(!odfUtils.isODFWhitespace(leftChar)) {
- return FILTER_ACCEPT
+ if (!odfUtils.isODFWhitespace(leftChar)) {
+ return FILTER_ACCEPT;
}
- if(offset > 1) {
+ if (offset > 1) {
leftChar = (text[offset - 2]);
- if(!odfUtils.isODFWhitespace(leftChar)) {
- r = FILTER_ACCEPT
- }else {
- if(!odfUtils.isODFWhitespace(text.substr(0, offset))) {
- return FILTER_REJECT
+ if (!odfUtils.isODFWhitespace(leftChar)) {
+ r = FILTER_ACCEPT;
+ } else {
+ if (!odfUtils.isODFWhitespace(text.substr(0, offset))) {
+ return FILTER_REJECT;
}
}
- }else {
+ } else {
leftNode = odfUtils.previousNode(container);
- if(odfUtils.scanLeftForNonSpace(leftNode)) {
- r = FILTER_ACCEPT
+ if (odfUtils.scanLeftForNonSpace(leftNode)) {
+ r = FILTER_ACCEPT;
}
}
- if(r === FILTER_ACCEPT) {
- return odfUtils.isTrailingWhitespace((container), offset) ? FILTER_REJECT : FILTER_ACCEPT
+ if (r === FILTER_ACCEPT) {
+ return odfUtils.isTrailingWhitespace((container), offset) ? FILTER_REJECT : FILTER_ACCEPT;
}
rightChar = (text[offset]);
- if(odfUtils.isODFWhitespace(rightChar)) {
- return FILTER_REJECT
+ if (odfUtils.isODFWhitespace(rightChar)) {
+ return FILTER_REJECT;
}
- return odfUtils.scanLeftForAnyCharacter(odfUtils.previousNode(container)) ? FILTER_REJECT : FILTER_ACCEPT
+ return odfUtils.scanLeftForAnyCharacter(odfUtils.previousNode(container)) ? FILTER_REJECT : FILTER_ACCEPT;
}
leftNode = iterator.leftNode();
rightNode = container;
container = (container.parentNode);
- r = checkLeftRight(container, leftNode, rightNode)
- }else {
- if(!odfUtils.isGroupingElement(container) || odfUtils.isWithinTrackedChanges(container, getRootNode())) {
- r = FILTER_REJECT
- }else {
+ r = checkLeftRight(container, leftNode, rightNode, iterator.getNodeFilter());
+ } else {
+ if (!odfUtils.isGroupingElement(container)) {
+ r = FILTER_REJECT;
+ } else {
leftNode = iterator.leftNode();
rightNode = iterator.rightNode();
- r = checkLeftRight(container, leftNode, rightNode)
+ r = checkLeftRight(container, leftNode, rightNode, iterator.getNodeFilter());
}
}
- return r
- }
+ return r;
+ };
};
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
+function RootFilter(anchor, cursors, getRoot) {
+ var FILTER_ACCEPT = core.PositionFilter.FilterResult.FILTER_ACCEPT, FILTER_REJECT = core.PositionFilter.FilterResult.FILTER_REJECT;
+ this.acceptPosition = function(iterator) {
+ var node = iterator.container(), anchorNode;
+ if (typeof anchor === "string") {
+ anchorNode = cursors[anchor].getNode();
+ } else {
+ anchorNode = anchor;
+ }
+ if (getRoot(node) === getRoot(anchorNode)) {
+ return FILTER_ACCEPT;
+ }
+ return FILTER_REJECT;
+ };
+}
ops.OdtDocument = function OdtDocument(odfCanvas) {
- var self = this, odfUtils, domUtils, cursors = {}, members = {}, eventNotifier = new core.EventNotifier([ops.Document.signalMemberAdded, ops.Document.signalMemberUpdated, ops.Document.signalMemberRemoved, ops.Document.signalCursorAdded, ops.Document.signalCursorRemoved, ops.Document.signalCursorMoved, ops.OdtDocument.signalParagraphChanged, ops.OdtDocument.signalParagraphStyleModified, ops.OdtDocument.signalCommonStyleCreated, ops.OdtDocument.signalCommonStyleDeleted, ops.OdtDocument.signalTableAdded,
- ops.OdtDocument.signalOperationStart, ops.OdtDocument.signalOperationEnd, ops.OdtDocument.signalProcessingBatchStart, ops.OdtDocument.signalProcessingBatchEnd, ops.OdtDocument.signalUndoStackChanged, ops.OdtDocument.signalStepsInserted, ops.OdtDocument.signalStepsRemoved]), FILTER_ACCEPT = core.PositionFilter.FilterResult.FILTER_ACCEPT, FILTER_REJECT = core.PositionFilter.FilterResult.FILTER_REJECT, filter, stepsTranslator, lastEditingOp, unsupportedMetadataRemoved = false;
+ var self = this, stepUtils, odfUtils = odf.OdfUtils, domUtils = core.DomUtils, cursors = {}, members = {}, eventNotifier = new core.EventNotifier([ops.Document.signalMemberAdded, ops.Document.signalMemberUpdated, ops.Document.signalMemberRemoved, ops.Document.signalCursorAdded, ops.Document.signalCursorRemoved, ops.Document.signalCursorMoved, ops.OdtDocument.signalParagraphChanged, ops.OdtDocument.signalParagraphStyleModified, ops.OdtDocument.signalCommonStyleCreated, ops.OdtDocument.signalCommonStyleDeleted,
+ ops.OdtDocument.signalTableAdded, ops.OdtDocument.signalOperationStart, ops.OdtDocument.signalOperationEnd, ops.OdtDocument.signalProcessingBatchStart, ops.OdtDocument.signalProcessingBatchEnd, ops.OdtDocument.signalUndoStackChanged, ops.OdtDocument.signalStepsInserted, ops.OdtDocument.signalStepsRemoved, ops.OdtDocument.signalMetadataUpdated, ops.OdtDocument.signalAnnotationAdded]), NEXT = core.StepDirection.NEXT, filter, stepsTranslator, lastEditingOp, unsupportedMetadataRemoved = false, SHOW_ALL =
+ NodeFilter.SHOW_ALL, blacklistedNodes = new gui.BlacklistNamespaceNodeFilter(["urn:webodf:names:cursor", "urn:webodf:names:editinfo"]), odfTextBodyFilter = new gui.OdfTextBodyNodeFilter, defaultNodeFilter = new core.NodeFilterChain([blacklistedNodes, odfTextBodyFilter]);
+ function createPositionIterator(rootNode) {
+ return new core.PositionIterator(rootNode, SHOW_ALL, defaultNodeFilter, false);
+ }
+ this.createPositionIterator = createPositionIterator;
function getRootNode() {
var element = odfCanvas.odfContainer().getContentElement(), localName = element && element.localName;
runtime.assert(localName === "text", "Unsupported content element type '" + localName + "' for OdtDocument");
- return element
+ return element;
}
this.getDocumentElement = function() {
- return odfCanvas.odfContainer().rootElement
- };
- this.getDOMDocument = function() {
- return(this.getDocumentElement().ownerDocument)
+ return odfCanvas.odfContainer().rootElement;
};
this.cloneDocumentElement = function() {
var rootElement = self.getDocumentElement(), annotationViewManager = odfCanvas.getAnnotationViewManager(), initialDoc;
- if(annotationViewManager) {
- annotationViewManager.forgetAnnotations()
+ if (annotationViewManager) {
+ annotationViewManager.forgetAnnotations();
}
initialDoc = rootElement.cloneNode(true);
odfCanvas.refreshAnnotations();
- return initialDoc
+ self.fixCursorPositions();
+ return initialDoc;
};
this.setDocumentElement = function(documentElement) {
- var odfContainer = odfCanvas.odfContainer();
+ var odfContainer = odfCanvas.odfContainer(), rootNode;
+ eventNotifier.unsubscribe(ops.OdtDocument.signalStepsInserted, stepsTranslator.handleStepsInserted);
+ eventNotifier.unsubscribe(ops.OdtDocument.signalStepsRemoved, stepsTranslator.handleStepsRemoved);
odfContainer.setRootElement(documentElement);
odfCanvas.setOdfContainer(odfContainer, true);
- odfCanvas.refreshCSS()
+ odfCanvas.refreshCSS();
+ rootNode = getRootNode();
+ stepsTranslator = new ops.OdtStepsTranslator(rootNode, createPositionIterator(rootNode), filter, 500);
+ eventNotifier.subscribe(ops.OdtDocument.signalStepsInserted, stepsTranslator.handleStepsInserted);
+ eventNotifier.subscribe(ops.OdtDocument.signalStepsRemoved, stepsTranslator.handleStepsRemoved);
};
function getDOMDocument() {
- return(self.getDocumentElement().ownerDocument)
+ return (self.getDocumentElement().ownerDocument);
}
this.getDOMDocument = getDOMDocument;
function isRoot(node) {
- if(node.namespaceURI === odf.Namespaces.officens && node.localName === "text" || node.namespaceURI === odf.Namespaces.officens && node.localName === "annotation") {
- return true
+ if (node.namespaceURI === odf.Namespaces.officens && node.localName === "text" || node.namespaceURI === odf.Namespaces.officens && node.localName === "annotation") {
+ return true;
}
- return false
+ return false;
}
function getRoot(node) {
- while(node && !isRoot(node)) {
- node = (node.parentNode)
+ while (node && !isRoot(node)) {
+ node = (node.parentNode);
}
- return node
+ return node;
}
this.getRootElement = getRoot;
- function RootFilter(anchor) {
- this.acceptPosition = function(iterator) {
- var node = iterator.container(), anchorNode;
- if(typeof anchor === "string") {
- anchorNode = cursors[anchor].getNode()
- }else {
- anchorNode = anchor
- }
- if(getRoot(node) === getRoot(anchorNode)) {
- return FILTER_ACCEPT
- }
- return FILTER_REJECT
- }
- }
function createStepIterator(container, offset, filters, subTree) {
- var positionIterator = gui.SelectionMover.createPositionIterator(subTree), filterOrChain, stepIterator;
- if(filters.length === 1) {
- filterOrChain = filters[0]
- }else {
+ var positionIterator = createPositionIterator(subTree), filterOrChain, stepIterator;
+ if (filters.length === 1) {
+ filterOrChain = filters[0];
+ } else {
filterOrChain = new core.PositionFilterChain;
- filters.forEach(filterOrChain.addFilter)
+ filters.forEach(filterOrChain.addFilter);
}
stepIterator = new core.StepIterator(filterOrChain, positionIterator);
stepIterator.setPosition(container, offset);
- return stepIterator
+ return stepIterator;
}
this.createStepIterator = createStepIterator;
function getIteratorAtPosition(position) {
- var iterator = gui.SelectionMover.createPositionIterator(getRootNode()), point = stepsTranslator.convertStepsToDomPoint(position);
+ var iterator = createPositionIterator(getRootNode()), point = stepsTranslator.convertStepsToDomPoint(position);
iterator.setUnfilteredPosition(point.node, point.offset);
- return iterator
+ return iterator;
}
this.getIteratorAtPosition = getIteratorAtPosition;
+ this.convertCursorStepToDomPoint = function(step) {
+ return stepsTranslator.convertStepsToDomPoint(step);
+ };
+ function roundUp(step) {
+ return step === NEXT;
+ }
this.convertDomPointToCursorStep = function(node, offset, roundDirection) {
- return stepsTranslator.convertDomPointToSteps(node, offset, roundDirection)
+ var roundingFunc;
+ if (roundDirection === NEXT) {
+ roundingFunc = roundUp;
+ }
+ return stepsTranslator.convertDomPointToSteps(node, offset, roundingFunc);
};
- this.convertDomToCursorRange = function(selection, constraint) {
- var point1, point2, anchorConstraint = constraint && constraint(selection.anchorNode, selection.anchorOffset), focusConstraint;
- point1 = stepsTranslator.convertDomPointToSteps(selection.anchorNode, selection.anchorOffset, anchorConstraint);
- if(!constraint && (selection.anchorNode === selection.focusNode && selection.anchorOffset === selection.focusOffset)) {
- point2 = point1
- }else {
- focusConstraint = constraint && constraint(selection.focusNode, selection.focusOffset);
- point2 = stepsTranslator.convertDomPointToSteps(selection.focusNode, selection.focusOffset, focusConstraint)
+ this.convertDomToCursorRange = function(selection) {
+ var point1, point2;
+ point1 = stepsTranslator.convertDomPointToSteps(selection.anchorNode, selection.anchorOffset);
+ if (selection.anchorNode === selection.focusNode && selection.anchorOffset === selection.focusOffset) {
+ point2 = point1;
+ } else {
+ point2 = stepsTranslator.convertDomPointToSteps(selection.focusNode, selection.focusOffset);
}
- return{position:point1, length:point2 - point1}
+ return {position:point1, length:point2 - point1};
};
this.convertCursorToDomRange = function(position, length) {
var range = getDOMDocument().createRange(), point1, point2;
point1 = stepsTranslator.convertStepsToDomPoint(position);
- if(length) {
+ if (length) {
point2 = stepsTranslator.convertStepsToDomPoint(position + length);
- if(length > 0) {
+ if (length > 0) {
range.setStart(point1.node, point1.offset);
- range.setEnd(point2.node, point2.offset)
- }else {
+ range.setEnd(point2.node, point2.offset);
+ } else {
range.setStart(point2.node, point2.offset);
- range.setEnd(point1.node, point1.offset)
+ range.setEnd(point1.node, point1.offset);
}
- }else {
- range.setStart(point1.node, point1.offset)
+ } else {
+ range.setStart(point1.node, point1.offset);
}
- return range
+ return range;
};
function getTextNodeAtStep(steps, memberid) {
var iterator = getIteratorAtPosition(steps), node = iterator.container(), lastTextNode, nodeOffset = 0, cursorNode = null, text;
- if(node.nodeType === Node.TEXT_NODE) {
+ if (node.nodeType === Node.TEXT_NODE) {
lastTextNode = (node);
nodeOffset = (iterator.unfilteredDomOffset());
- if(lastTextNode.length > 0) {
- if(nodeOffset > 0) {
- lastTextNode = lastTextNode.splitText(nodeOffset)
+ if (lastTextNode.length > 0) {
+ if (nodeOffset > 0) {
+ lastTextNode = lastTextNode.splitText(nodeOffset);
}
lastTextNode.parentNode.insertBefore(getDOMDocument().createTextNode(""), lastTextNode);
lastTextNode = (lastTextNode.previousSibling);
- nodeOffset = 0
+ nodeOffset = 0;
}
- }else {
+ } else {
lastTextNode = getDOMDocument().createTextNode("");
nodeOffset = 0;
- node.insertBefore(lastTextNode, iterator.rightNode())
+ node.insertBefore(lastTextNode, iterator.rightNode());
}
- if(memberid) {
- if(cursors[memberid] && self.getCursorPosition(memberid) === steps) {
+ if (memberid) {
+ if (cursors[memberid] && self.getCursorPosition(memberid) === steps) {
cursorNode = cursors[memberid].getNode();
- while(cursorNode.nextSibling && cursorNode.nextSibling.localName === "cursor") {
- cursorNode.parentNode.insertBefore(cursorNode.nextSibling, cursorNode)
+ while (cursorNode.nextSibling && cursorNode.nextSibling.localName === "cursor") {
+ cursorNode.parentNode.insertBefore(cursorNode.nextSibling, cursorNode);
}
- if(lastTextNode.length > 0 && lastTextNode.nextSibling !== cursorNode) {
+ if (lastTextNode.length > 0 && lastTextNode.nextSibling !== cursorNode) {
lastTextNode = getDOMDocument().createTextNode("");
- nodeOffset = 0
+ nodeOffset = 0;
}
- cursorNode.parentNode.insertBefore(lastTextNode, cursorNode)
+ cursorNode.parentNode.insertBefore(lastTextNode, cursorNode);
}
- }else {
- while(lastTextNode.nextSibling && lastTextNode.nextSibling.localName === "cursor") {
- lastTextNode.parentNode.insertBefore(lastTextNode.nextSibling, lastTextNode)
+ } else {
+ while (lastTextNode.nextSibling && lastTextNode.nextSibling.localName === "cursor") {
+ lastTextNode.parentNode.insertBefore(lastTextNode.nextSibling, lastTextNode);
}
}
- while(lastTextNode.previousSibling && lastTextNode.previousSibling.nodeType === Node.TEXT_NODE) {
+ while (lastTextNode.previousSibling && lastTextNode.previousSibling.nodeType === Node.TEXT_NODE) {
text = (lastTextNode.previousSibling);
text.appendData(lastTextNode.data);
nodeOffset = text.length;
lastTextNode = text;
- lastTextNode.parentNode.removeChild(lastTextNode.nextSibling)
+ lastTextNode.parentNode.removeChild(lastTextNode.nextSibling);
}
- while(lastTextNode.nextSibling && lastTextNode.nextSibling.nodeType === Node.TEXT_NODE) {
+ while (lastTextNode.nextSibling && lastTextNode.nextSibling.nodeType === Node.TEXT_NODE) {
text = (lastTextNode.nextSibling);
lastTextNode.appendData(text.data);
- lastTextNode.parentNode.removeChild(text)
+ lastTextNode.parentNode.removeChild(text);
}
- return{textNode:lastTextNode, offset:nodeOffset}
- }
- function getParagraphElement(node) {
- return odfUtils.getParagraphElement(node)
- }
- function getStyleElement(styleName, styleFamily) {
- return odfCanvas.getFormatting().getStyleElement(styleName, styleFamily)
- }
- this.getStyleElement = getStyleElement;
- function getParagraphStyleElement(styleName) {
- return getStyleElement(styleName, "paragraph")
- }
- function getParagraphStyleAttributes(styleName) {
- var node = getParagraphStyleElement(styleName);
- if(node) {
- return odfCanvas.getFormatting().getInheritedStyleAttributes(node, false)
- }
- return null
+ return {textNode:lastTextNode, offset:nodeOffset};
}
function handleOperationExecuted(op) {
- var spec = op.spec(), memberId = spec.memberid, date = (new Date(spec.timestamp)).toISOString(), odfContainer = odfCanvas.odfContainer(), fullName;
- if(op.isEdit) {
+ var opspec = op.spec(), memberId = opspec.memberid, date = (new Date(opspec.timestamp)).toISOString(), odfContainer = odfCanvas.odfContainer(), changedMetadata, fullName;
+ if (op.isEdit) {
fullName = self.getMember(memberId).getProperties().fullName;
odfContainer.setMetadata({"dc:creator":fullName, "dc:date":date}, null);
- if(!lastEditingOp) {
- odfContainer.incrementEditingCycles();
- if(!unsupportedMetadataRemoved) {
- odfContainer.setMetadata(null, ["meta:editing-duration", "meta:document-statistic"])
+ changedMetadata = {setProperties:{"dc:creator":fullName, "dc:date":date}, removedProperties:[]};
+ if (!lastEditingOp) {
+ changedMetadata.setProperties["meta:editing-cycles"] = odfContainer.incrementEditingCycles();
+ if (!unsupportedMetadataRemoved) {
+ odfContainer.setMetadata(null, ["meta:editing-duration", "meta:document-statistic"]);
}
}
- lastEditingOp = op
+ lastEditingOp = op;
+ self.emit(ops.OdtDocument.signalMetadataUpdated, changedMetadata);
}
}
function upgradeWhitespaceToElement(textNode, offset) {
runtime.assert(textNode.data[offset] === " ", "upgradeWhitespaceToElement: textNode.data[offset] should be a literal space");
var space = textNode.ownerDocument.createElementNS(odf.Namespaces.textns, "text:s"), container = textNode.parentNode, adjacentNode = textNode;
space.appendChild(textNode.ownerDocument.createTextNode(" "));
- if(textNode.length === 1) {
- container.replaceChild(space, textNode)
- }else {
+ if (textNode.length === 1) {
+ container.replaceChild(space, textNode);
+ } else {
textNode.deleteData(offset, 1);
- if(offset > 0) {
- if(offset < textNode.length) {
- textNode.splitText(offset)
+ if (offset > 0) {
+ if (offset < textNode.length) {
+ textNode.splitText(offset);
}
- adjacentNode = textNode.nextSibling
+ adjacentNode = textNode.nextSibling;
}
- container.insertBefore(space, adjacentNode)
+ container.insertBefore(space, adjacentNode);
}
- return space
+ return space;
}
- function upgradeWhitespacesAtPosition(position) {
- var iterator = getIteratorAtPosition(position), container, offset, i;
- iterator.previousPosition();
- iterator.previousPosition();
- for(i = -1;i <= 1;i += 1) {
- container = iterator.container();
- offset = iterator.unfilteredDomOffset();
- if(container.nodeType === Node.TEXT_NODE && (container.data[offset] === " " && odfUtils.isSignificantWhitespace((container), offset))) {
- container = upgradeWhitespaceToElement((container), offset);
- iterator.moveToEndOfNode(container)
+ function upgradeWhitespacesAtPosition(step) {
+ var positionIterator = getIteratorAtPosition(step), stepIterator = new core.StepIterator(filter, positionIterator), contentBounds, container, offset, stepsToUpgrade = 2;
+ runtime.assert(stepIterator.isStep(), "positionIterator is not at a step (requested step: " + step + ")");
+ do {
+ contentBounds = stepUtils.getContentBounds(stepIterator);
+ if (contentBounds) {
+ container = contentBounds.container;
+ offset = contentBounds.startOffset;
+ if (container.nodeType === Node.TEXT_NODE && odfUtils.isSignificantWhitespace((container), offset)) {
+ container = upgradeWhitespaceToElement((container), offset);
+ stepIterator.setPosition(container, container.childNodes.length);
+ stepIterator.roundToPreviousStep();
+ }
}
- iterator.nextPosition()
- }
+ stepsToUpgrade -= 1;
+ } while (stepsToUpgrade > 0 && stepIterator.nextStep());
}
this.upgradeWhitespacesAtPosition = upgradeWhitespacesAtPosition;
- this.downgradeWhitespacesAtPosition = function(position) {
- var iterator = getIteratorAtPosition(position), container, offset, firstSpaceElementChild, lastSpaceElementChild;
- container = iterator.container();
- offset = iterator.unfilteredDomOffset();
- while(!odfUtils.isSpaceElement(container) && container.childNodes.item(offset)) {
- container = (container.childNodes.item(offset));
- offset = 0
- }
- if(container.nodeType === Node.TEXT_NODE) {
- container = (container.parentNode)
- }
- if(odfUtils.isDowngradableSpaceElement(container)) {
- firstSpaceElementChild = container.firstChild;
- lastSpaceElementChild = container.lastChild;
- domUtils.mergeIntoParent(container);
- if(lastSpaceElementChild !== firstSpaceElementChild) {
- domUtils.normalizeTextNodes(lastSpaceElementChild)
+ function maxOffset(node) {
+ return node.nodeType === Node.TEXT_NODE ? (node).length : node.childNodes.length;
+ }
+ function downgradeWhitespaces(stepIterator) {
+ var contentBounds, container, modifiedNodes = [], lastChild, stepsToUpgrade = 2;
+ runtime.assert(stepIterator.isStep(), "positionIterator is not at a step");
+ do {
+ contentBounds = stepUtils.getContentBounds(stepIterator);
+ if (contentBounds) {
+ container = contentBounds.container;
+ if (odfUtils.isDowngradableSpaceElement(container)) {
+ lastChild = (container.lastChild);
+ while (container.firstChild) {
+ modifiedNodes.push(container.firstChild);
+ container.parentNode.insertBefore(container.firstChild, container);
+ }
+ container.parentNode.removeChild(container);
+ stepIterator.setPosition(lastChild, maxOffset(lastChild));
+ stepIterator.roundToPreviousStep();
+ }
}
- domUtils.normalizeTextNodes(firstSpaceElementChild)
- }
+ stepsToUpgrade -= 1;
+ } while (stepsToUpgrade > 0 && stepIterator.nextStep());
+ modifiedNodes.forEach(domUtils.normalizeTextNodes);
+ }
+ this.downgradeWhitespaces = downgradeWhitespaces;
+ this.downgradeWhitespacesAtPosition = function(step) {
+ var positionIterator = getIteratorAtPosition(step), stepIterator = new core.StepIterator(filter, positionIterator);
+ downgradeWhitespaces(stepIterator);
};
- this.getParagraphStyleElement = getParagraphStyleElement;
- this.getParagraphElement = getParagraphElement;
- this.getParagraphStyleAttributes = getParagraphStyleAttributes;
this.getTextNodeAtStep = getTextNodeAtStep;
function paragraphOrRoot(container, offset, root) {
- var node = container.childNodes.item(offset) || container, paragraph = getParagraphElement(node);
- if(paragraph && domUtils.containsNode(root, paragraph)) {
- return(paragraph)
+ var node = container.childNodes.item(offset) || container, paragraph = odfUtils.getParagraphElement(node);
+ if (paragraph && domUtils.containsNode(root, paragraph)) {
+ return (paragraph);
}
- return root
+ return root;
}
this.fixCursorPositions = function() {
Object.keys(cursors).forEach(function(memberId) {
@@ -9921,76 +10752,76 @@ ops.OdtDocument = function OdtDocument(odfCanvas) {
selectedRange = cursor.getSelectedRange();
subTree = paragraphOrRoot((selectedRange.startContainer), selectedRange.startOffset, root);
startPoint = createStepIterator((selectedRange.startContainer), selectedRange.startOffset, [filter, rootFilter], subTree);
- if(!selectedRange.collapsed) {
+ if (!selectedRange.collapsed) {
subTree = paragraphOrRoot((selectedRange.endContainer), selectedRange.endOffset, root);
- endPoint = createStepIterator((selectedRange.endContainer), selectedRange.endOffset, [filter, rootFilter], subTree)
- }else {
- endPoint = startPoint
+ endPoint = createStepIterator((selectedRange.endContainer), selectedRange.endOffset, [filter, rootFilter], subTree);
+ } else {
+ endPoint = startPoint;
}
- if(!startPoint.isStep() || !endPoint.isStep()) {
+ if (!startPoint.isStep() || !endPoint.isStep()) {
cursorMoved = true;
runtime.assert(startPoint.roundToClosestStep(), "No walkable step found for cursor owned by " + memberId);
selectedRange.setStart(startPoint.container(), startPoint.offset());
runtime.assert(endPoint.roundToClosestStep(), "No walkable step found for cursor owned by " + memberId);
- selectedRange.setEnd(endPoint.container(), endPoint.offset())
- }else {
- if(startPoint.container() === endPoint.container() && startPoint.offset() === endPoint.offset()) {
- if(!selectedRange.collapsed || cursor.getAnchorNode() !== cursor.getNode()) {
+ selectedRange.setEnd(endPoint.container(), endPoint.offset());
+ } else {
+ if (startPoint.container() === endPoint.container() && startPoint.offset() === endPoint.offset()) {
+ if (!selectedRange.collapsed || cursor.getAnchorNode() !== cursor.getNode()) {
cursorMoved = true;
selectedRange.setStart(startPoint.container(), startPoint.offset());
- selectedRange.collapse(true)
+ selectedRange.collapse(true);
}
}
}
- if(cursorMoved) {
+ if (cursorMoved) {
cursor.setSelectedRange(selectedRange, cursor.hasForwardSelection());
- self.emit(ops.Document.signalCursorMoved, cursor)
+ self.emit(ops.Document.signalCursorMoved, cursor);
}
- })
+ });
};
this.getCursorPosition = function(memberid) {
var cursor = cursors[memberid];
- return cursor ? stepsTranslator.convertDomPointToSteps(cursor.getNode(), 0) : 0
+ return cursor ? stepsTranslator.convertDomPointToSteps(cursor.getNode(), 0) : 0;
};
this.getCursorSelection = function(memberid) {
var cursor = cursors[memberid], focusPosition = 0, anchorPosition = 0;
- if(cursor) {
+ if (cursor) {
focusPosition = stepsTranslator.convertDomPointToSteps(cursor.getNode(), 0);
- anchorPosition = stepsTranslator.convertDomPointToSteps(cursor.getAnchorNode(), 0)
+ anchorPosition = stepsTranslator.convertDomPointToSteps(cursor.getAnchorNode(), 0);
}
- return{position:anchorPosition, length:focusPosition - anchorPosition}
+ return {position:anchorPosition, length:focusPosition - anchorPosition};
};
this.getPositionFilter = function() {
- return filter
+ return filter;
};
this.getOdfCanvas = function() {
- return odfCanvas
+ return odfCanvas;
};
this.getCanvas = function() {
- return odfCanvas
+ return odfCanvas;
};
this.getRootNode = getRootNode;
this.addMember = function(member) {
runtime.assert(members[member.getMemberId()] === undefined, "This member already exists");
- members[member.getMemberId()] = member
+ members[member.getMemberId()] = member;
};
this.getMember = function(memberId) {
- return members.hasOwnProperty(memberId) ? members[memberId] : null
+ return members.hasOwnProperty(memberId) ? members[memberId] : null;
};
this.removeMember = function(memberId) {
- delete members[memberId]
+ delete members[memberId];
};
this.getCursor = function(memberid) {
- return cursors[memberid]
+ return cursors[memberid];
};
this.getMemberIds = function() {
var list = [], i;
- for(i in cursors) {
- if(cursors.hasOwnProperty(i)) {
- list.push(cursors[i].getMemberId())
+ for (i in cursors) {
+ if (cursors.hasOwnProperty(i)) {
+ list.push(cursors[i].getMemberId());
}
}
- return list
+ return list;
};
this.addCursor = function(cursor) {
runtime.assert(Boolean(cursor), "OdtDocument::addCursor without cursor");
@@ -9998,56 +10829,57 @@ ops.OdtDocument = function OdtDocument(odfCanvas) {
runtime.assert(typeof memberid === "string", "OdtDocument::addCursor has cursor without memberid");
runtime.assert(!cursors[memberid], "OdtDocument::addCursor is adding a duplicate cursor with memberid " + memberid);
cursor.setSelectedRange(initialSelection, true);
- cursors[memberid] = cursor
+ cursors[memberid] = cursor;
};
this.removeCursor = function(memberid) {
var cursor = cursors[memberid];
- if(cursor) {
+ if (cursor) {
cursor.removeFromDocument();
delete cursors[memberid];
self.emit(ops.Document.signalCursorRemoved, memberid);
- return true
+ return true;
}
- return false
+ return false;
};
this.moveCursor = function(memberid, position, length, selectionType) {
var cursor = cursors[memberid], selectionRange = self.convertCursorToDomRange(position, length);
- if(cursor) {
+ if (cursor) {
cursor.setSelectedRange(selectionRange, length >= 0);
- cursor.setSelectionType(selectionType || ops.OdtCursor.RangeSelection)
+ cursor.setSelectionType(selectionType || ops.OdtCursor.RangeSelection);
}
};
this.getFormatting = function() {
- return odfCanvas.getFormatting()
+ return odfCanvas.getFormatting();
};
this.emit = function(eventid, args) {
- eventNotifier.emit(eventid, args)
+ eventNotifier.emit(eventid, args);
};
this.subscribe = function(eventid, cb) {
- eventNotifier.subscribe(eventid, cb)
+ eventNotifier.subscribe(eventid, cb);
};
this.unsubscribe = function(eventid, cb) {
- eventNotifier.unsubscribe(eventid, cb)
+ eventNotifier.unsubscribe(eventid, cb);
};
this.createRootFilter = function(inputMemberId) {
- return new RootFilter(inputMemberId)
+ return new RootFilter(inputMemberId, cursors, getRoot);
};
this.close = function(callback) {
- callback()
+ callback();
};
this.destroy = function(callback) {
- callback()
+ callback();
};
function init() {
- filter = new ops.TextPositionFilter(getRootNode);
- odfUtils = new odf.OdfUtils;
- domUtils = new core.DomUtils;
- stepsTranslator = new ops.StepsTranslator(getRootNode, gui.SelectionMover.createPositionIterator, filter, 500);
+ var rootNode = getRootNode();
+ filter = new ops.TextPositionFilter;
+ stepUtils = new odf.StepUtils;
+ stepsTranslator = new ops.OdtStepsTranslator(rootNode, createPositionIterator(rootNode), filter, 500);
eventNotifier.subscribe(ops.OdtDocument.signalStepsInserted, stepsTranslator.handleStepsInserted);
eventNotifier.subscribe(ops.OdtDocument.signalStepsRemoved, stepsTranslator.handleStepsRemoved);
- eventNotifier.subscribe(ops.OdtDocument.signalOperationEnd, handleOperationExecuted)
+ eventNotifier.subscribe(ops.OdtDocument.signalOperationEnd, handleOperationExecuted);
+ eventNotifier.subscribe(ops.OdtDocument.signalProcessingBatchEnd, core.Task.processTasks);
}
- init()
+ init();
};
ops.OdtDocument.signalParagraphChanged = "paragraph/changed";
ops.OdtDocument.signalTableAdded = "table/added";
@@ -10061,54 +10893,16 @@ ops.OdtDocument.signalProcessingBatchEnd = "router/batchend";
ops.OdtDocument.signalUndoStackChanged = "undo/changed";
ops.OdtDocument.signalStepsInserted = "steps/inserted";
ops.OdtDocument.signalStepsRemoved = "steps/removed";
-(function() {
- return ops.OdtDocument
-})();
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
+ops.OdtDocument.signalMetadataUpdated = "metadata/updated";
+ops.OdtDocument.signalAnnotationAdded = "annotation/added";
ops.OpAddAnnotation = function OpAddAnnotation() {
var memberid, timestamp, position, length, name, doc;
this.init = function(data) {
memberid = data.memberid;
timestamp = parseInt(data.timestamp, 10);
position = parseInt(data.position, 10);
- length = parseInt(data.length, 10) || 0;
- name = data.name
+ length = data.length !== undefined ? parseInt(data.length, 10) || 0 : undefined;
+ name = data.name;
};
this.isEdit = true;
this.group = undefined;
@@ -10129,203 +10923,107 @@ ops.OpAddAnnotation = function OpAddAnnotation() {
annotationNode.appendChild(creatorNode);
annotationNode.appendChild(dateNode);
annotationNode.appendChild(listNode);
- return annotationNode
+ return annotationNode;
}
function createAnnotationEnd() {
var annotationEnd;
annotationEnd = doc.createElementNS(odf.Namespaces.officens, "office:annotation-end");
annotationEnd.setAttributeNS(odf.Namespaces.officens, "office:name", name);
- return annotationEnd
+ return annotationEnd;
}
function insertNodeAtPosition(odtDocument, node, insertPosition) {
var previousNode, parentNode, domPosition = odtDocument.getTextNodeAtStep(insertPosition, memberid);
- if(domPosition) {
+ if (domPosition) {
previousNode = domPosition.textNode;
parentNode = previousNode.parentNode;
- if(domPosition.offset !== previousNode.length) {
- previousNode.splitText(domPosition.offset)
+ if (domPosition.offset !== previousNode.length) {
+ previousNode.splitText(domPosition.offset);
}
parentNode.insertBefore(node, previousNode.nextSibling);
- if(previousNode.length === 0) {
- parentNode.removeChild(previousNode)
+ if (previousNode.length === 0) {
+ parentNode.removeChild(previousNode);
}
}
}
this.execute = function(document) {
- var odtDocument = (document), annotation, annotationEnd, cursor = odtDocument.getCursor(memberid), selectedRange, paragraphElement, domUtils = new core.DomUtils;
+ var odtDocument = (document), annotation, annotationEnd, cursor = odtDocument.getCursor(memberid), selectedRange, paragraphElement;
doc = odtDocument.getDOMDocument();
annotation = createAnnotationNode(odtDocument, new Date(timestamp));
- if(length) {
+ if (length !== undefined) {
annotationEnd = createAnnotationEnd();
annotation.annotationEndElement = annotationEnd;
- insertNodeAtPosition(odtDocument, annotationEnd, position + length)
+ insertNodeAtPosition(odtDocument, annotationEnd, position + length);
}
insertNodeAtPosition(odtDocument, annotation, position);
- odtDocument.emit(ops.OdtDocument.signalStepsInserted, {position:position, length:length});
- if(cursor) {
+ odtDocument.emit(ops.OdtDocument.signalStepsInserted, {position:position});
+ if (cursor) {
selectedRange = doc.createRange();
- paragraphElement = domUtils.getElementsByTagNameNS(annotation, odf.Namespaces.textns, "p")[0];
+ paragraphElement = (annotation.getElementsByTagNameNS(odf.Namespaces.textns, "p")[0]);
selectedRange.selectNodeContents(paragraphElement);
cursor.setSelectedRange(selectedRange, false);
- odtDocument.emit(ops.Document.signalCursorMoved, cursor)
+ cursor.setSelectionType(ops.OdtCursor.RangeSelection);
+ odtDocument.emit(ops.Document.signalCursorMoved, cursor);
}
odtDocument.getOdfCanvas().addAnnotation(annotation);
odtDocument.fixCursorPositions();
- return true
+ odtDocument.emit(ops.OdtDocument.signalAnnotationAdded, {memberId:memberid, annotation:annotation});
+ return true;
};
this.spec = function() {
- return{optype:"AddAnnotation", memberid:memberid, timestamp:timestamp, position:position, length:length, name:name}
- }
+ return {optype:"AddAnnotation", memberid:memberid, timestamp:timestamp, position:position, length:length, name:name};
+ };
};
ops.OpAddAnnotation.Spec;
ops.OpAddAnnotation.InitSpec;
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.OpAddCursor = function OpAddCursor() {
var memberid, timestamp;
this.init = function(data) {
memberid = data.memberid;
- timestamp = data.timestamp
+ timestamp = data.timestamp;
};
this.isEdit = false;
this.group = undefined;
this.execute = function(document) {
var odtDocument = (document), cursor = odtDocument.getCursor(memberid);
- if(cursor) {
- return false
+ if (cursor) {
+ return false;
}
cursor = new ops.OdtCursor(memberid, odtDocument);
odtDocument.addCursor(cursor);
odtDocument.emit(ops.Document.signalCursorAdded, cursor);
- return true
+ return true;
};
this.spec = function() {
- return{optype:"AddCursor", memberid:memberid, timestamp:timestamp}
- }
+ return {optype:"AddCursor", memberid:memberid, timestamp:timestamp};
+ };
};
ops.OpAddCursor.Spec;
ops.OpAddCursor.InitSpec;
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- This file is part of WebODF.
-
- WebODF is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License (GNU AGPL)
- as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- WebODF is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with WebODF. If not, see <http://www.gnu.org/licenses/>.
- @licend
-
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.OpAddMember = function OpAddMember() {
var memberid, timestamp, setProperties;
this.init = function(data) {
memberid = data.memberid;
timestamp = parseInt(data.timestamp, 10);
- setProperties = data.setProperties
+ setProperties = data.setProperties;
};
this.isEdit = false;
this.group = undefined;
this.execute = function(document) {
var odtDocument = (document), member;
- if(odtDocument.getMember(memberid)) {
- return false
+ if (odtDocument.getMember(memberid)) {
+ return false;
}
member = new ops.Member(memberid, setProperties);
odtDocument.addMember(member);
odtDocument.emit(ops.Document.signalMemberAdded, member);
- return true
+ return true;
};
this.spec = function() {
- return{optype:"AddMember", memberid:memberid, timestamp:timestamp, setProperties:setProperties}
- }
+ return {optype:"AddMember", memberid:memberid, timestamp:timestamp, setProperties:setProperties};
+ };
};
ops.OpAddMember.Spec;
ops.OpAddMember.InitSpec;
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.OpAddStyle = function OpAddStyle() {
var memberid, timestamp, styleName, styleFamily, isAutomaticStyle, setProperties, stylens = odf.Namespaces.stylens;
this.init = function(data) {
@@ -10334,190 +11032,120 @@ ops.OpAddStyle = function OpAddStyle() {
styleName = data.styleName;
styleFamily = data.styleFamily;
isAutomaticStyle = data.isAutomaticStyle === "true" || data.isAutomaticStyle === true;
- setProperties = data.setProperties
+ setProperties = data.setProperties;
};
this.isEdit = true;
this.group = undefined;
this.execute = function(document) {
var odtDocument = (document), odfContainer = odtDocument.getOdfCanvas().odfContainer(), formatting = odtDocument.getFormatting(), dom = odtDocument.getDOMDocument(), styleNode = dom.createElementNS(stylens, "style:style");
- if(!styleNode) {
- return false
+ if (!styleNode) {
+ return false;
}
- if(setProperties) {
- formatting.updateStyle(styleNode, setProperties)
+ if (setProperties) {
+ formatting.updateStyle(styleNode, setProperties);
}
styleNode.setAttributeNS(stylens, "style:family", styleFamily);
styleNode.setAttributeNS(stylens, "style:name", styleName);
- if(isAutomaticStyle) {
- odfContainer.rootElement.automaticStyles.appendChild(styleNode)
- }else {
- odfContainer.rootElement.styles.appendChild(styleNode)
+ if (isAutomaticStyle) {
+ odfContainer.rootElement.automaticStyles.appendChild(styleNode);
+ } else {
+ odfContainer.rootElement.styles.appendChild(styleNode);
}
odtDocument.getOdfCanvas().refreshCSS();
- if(!isAutomaticStyle) {
- odtDocument.emit(ops.OdtDocument.signalCommonStyleCreated, {name:styleName, family:styleFamily})
+ if (!isAutomaticStyle) {
+ odtDocument.emit(ops.OdtDocument.signalCommonStyleCreated, {name:styleName, family:styleFamily});
}
- return true
+ return true;
};
this.spec = function() {
- return{optype:"AddStyle", memberid:memberid, timestamp:timestamp, styleName:styleName, styleFamily:styleFamily, isAutomaticStyle:isAutomaticStyle, setProperties:setProperties}
- }
+ return {optype:"AddStyle", memberid:memberid, timestamp:timestamp, styleName:styleName, styleFamily:styleFamily, isAutomaticStyle:isAutomaticStyle, setProperties:setProperties};
+ };
};
ops.OpAddStyle.Spec;
ops.OpAddStyle.InitSpec;
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
odf.ObjectNameGenerator = function ObjectNameGenerator(odfContainer, memberId) {
- var stylens = odf.Namespaces.stylens, drawns = odf.Namespaces.drawns, xlinkns = odf.Namespaces.xlinkns, domUtils = new core.DomUtils, utils = new core.Utils, memberIdHash = utils.hashString(memberId), styleNameGenerator = null, frameNameGenerator = null, imageNameGenerator = null, existingFrameNames = {}, existingImageNames = {};
+ var stylens = odf.Namespaces.stylens, drawns = odf.Namespaces.drawns, xlinkns = odf.Namespaces.xlinkns, utils = new core.Utils, memberIdHash = utils.hashString(memberId), styleNameGenerator = null, frameNameGenerator = null, imageNameGenerator = null, existingFrameNames = {}, existingImageNames = {};
function NameGenerator(prefix, findExistingNames) {
var reportedNames = {};
this.generateName = function() {
var existingNames = findExistingNames(), startIndex = 0, name;
do {
name = prefix + startIndex;
- startIndex += 1
- }while(reportedNames[name] || existingNames[name]);
+ startIndex += 1;
+ } while (reportedNames[name] || existingNames[name]);
reportedNames[name] = true;
- return name
- }
+ return name;
+ };
}
function getAllStyleNames() {
var styleElements = [odfContainer.rootElement.automaticStyles, odfContainer.rootElement.styles], styleNames = {};
function getStyleNames(styleListElement) {
var e = styleListElement.firstElementChild;
- while(e) {
- if(e.namespaceURI === stylens && e.localName === "style") {
- styleNames[e.getAttributeNS(stylens, "name")] = true
+ while (e) {
+ if (e.namespaceURI === stylens && e.localName === "style") {
+ styleNames[e.getAttributeNS(stylens, "name")] = true;
}
- e = e.nextElementSibling
+ e = e.nextElementSibling;
}
}
styleElements.forEach(getStyleNames);
- return styleNames
+ return styleNames;
}
this.generateStyleName = function() {
- if(styleNameGenerator === null) {
+ if (styleNameGenerator === null) {
styleNameGenerator = new NameGenerator("auto" + memberIdHash + "_", function() {
- return getAllStyleNames()
- })
+ return getAllStyleNames();
+ });
}
- return styleNameGenerator.generateName()
+ return styleNameGenerator.generateName();
};
this.generateFrameName = function() {
- if(frameNameGenerator === null) {
- var nodes = domUtils.getElementsByTagNameNS(odfContainer.rootElement.body, drawns, "frame");
- nodes.forEach(function(frame) {
- existingFrameNames[frame.getAttributeNS(drawns, "name")] = true
- });
+ var i, nodes, node;
+ if (frameNameGenerator === null) {
+ nodes = odfContainer.rootElement.body.getElementsByTagNameNS(drawns, "frame");
+ for (i = 0;i < nodes.length;i += 1) {
+ node = (nodes.item(i));
+ existingFrameNames[node.getAttributeNS(drawns, "name")] = true;
+ }
frameNameGenerator = new NameGenerator("fr" + memberIdHash + "_", function() {
- return existingFrameNames
- })
+ return existingFrameNames;
+ });
}
- return frameNameGenerator.generateName()
+ return frameNameGenerator.generateName();
};
this.generateImageName = function() {
- if(imageNameGenerator === null) {
- var nodes = domUtils.getElementsByTagNameNS(odfContainer.rootElement.body, drawns, "image");
- nodes.forEach(function(image) {
- var path = image.getAttributeNS(xlinkns, "href");
+ var i, path, nodes, node;
+ if (imageNameGenerator === null) {
+ nodes = odfContainer.rootElement.body.getElementsByTagNameNS(drawns, "image");
+ for (i = 0;i < nodes.length;i += 1) {
+ node = (nodes.item(i));
+ path = node.getAttributeNS(xlinkns, "href");
path = path.substring("Pictures/".length, path.lastIndexOf("."));
- existingImageNames[path] = true
- });
+ existingImageNames[path] = true;
+ }
imageNameGenerator = new NameGenerator("img" + memberIdHash + "_", function() {
- return existingImageNames
- })
+ return existingImageNames;
+ });
}
- return imageNameGenerator.generateName()
- }
+ return imageNameGenerator.generateName();
+ };
};
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
odf.TextStyleApplicator = function TextStyleApplicator(objectNameGenerator, formatting, automaticStyles) {
- var domUtils = new core.DomUtils, textns = odf.Namespaces.textns, stylens = odf.Namespaces.stylens, textProperties = "style:text-properties", webodfns = "urn:webodf:names:scope";
+ var domUtils = core.DomUtils, textns = odf.Namespaces.textns, stylens = odf.Namespaces.stylens, textProperties = "style:text-properties", webodfns = "urn:webodf:names:scope";
function StyleLookup(info) {
var cachedAppliedStyles = {};
function compare(expected, actual) {
- if(typeof expected === "object" && typeof actual === "object") {
+ if (typeof expected === "object" && typeof actual === "object") {
return Object.keys(expected).every(function(key) {
- return compare(expected[key], actual[key])
- })
+ return compare(expected[key], actual[key]);
+ });
}
- return expected === actual
+ return expected === actual;
}
this.isStyleApplied = function(textNode) {
- var appliedStyle = formatting.getAppliedStylesForElement(textNode, cachedAppliedStyles);
- return compare(info, appliedStyle)
- }
+ var appliedStyle = formatting.getAppliedStylesForElement(textNode, cachedAppliedStyles).styleProperties;
+ return compare(info, appliedStyle);
+ };
}
function StyleManager(info) {
var createdStyles = {};
@@ -10530,64 +11158,64 @@ odf.TextStyleApplicator = function TextStyleApplicator(objectNameGenerator, form
derivedStyleNode.setAttributeNS(stylens, "style:family", "text");
derivedStyleNode.setAttributeNS(webodfns, "scope", "document-content");
automaticStyles.appendChild(derivedStyleNode);
- return derivedStyleNode
+ return derivedStyleNode;
}
function getDirectStyle(existingStyleName, document) {
existingStyleName = existingStyleName || "";
- if(!createdStyles.hasOwnProperty(existingStyleName)) {
- createdStyles[existingStyleName] = createDirectFormat(existingStyleName, document)
+ if (!createdStyles.hasOwnProperty(existingStyleName)) {
+ createdStyles[existingStyleName] = createDirectFormat(existingStyleName, document);
}
- return createdStyles[existingStyleName].getAttributeNS(stylens, "name")
+ return createdStyles[existingStyleName].getAttributeNS(stylens, "name");
}
this.applyStyleToContainer = function(container) {
var name = getDirectStyle(container.getAttributeNS(textns, "style-name"), container.ownerDocument);
- container.setAttributeNS(textns, "text:style-name", name)
- }
+ container.setAttributeNS(textns, "text:style-name", name);
+ };
}
function isTextSpan(node) {
- return node.localName === "span" && node.namespaceURI === textns
+ return node.localName === "span" && node.namespaceURI === textns;
}
- function moveToNewSpan(startNode, limits) {
+ function moveToNewSpan(startNode, range) {
var document = startNode.ownerDocument, originalContainer = (startNode.parentNode), styledContainer, trailingContainer, moveTrailing, node, nextNode, loopGuard = new core.LoopWatchDog(1E4), styledNodes = [];
- if(!isTextSpan(originalContainer)) {
+ styledNodes.push(startNode);
+ node = startNode.nextSibling;
+ while (node && domUtils.rangeContainsNode(range, node)) {
+ loopGuard.check();
+ styledNodes.push(node);
+ node = node.nextSibling;
+ }
+ if (!isTextSpan(originalContainer)) {
styledContainer = document.createElementNS(textns, "text:span");
originalContainer.insertBefore(styledContainer, startNode);
- moveTrailing = false
- }else {
- if(startNode.previousSibling && !domUtils.rangeContainsNode(limits, (originalContainer.firstChild))) {
+ moveTrailing = false;
+ } else {
+ if (startNode.previousSibling && !domUtils.rangeContainsNode(range, (originalContainer.firstChild))) {
styledContainer = originalContainer.cloneNode(false);
originalContainer.parentNode.insertBefore(styledContainer, originalContainer.nextSibling);
- moveTrailing = true
- }else {
+ moveTrailing = true;
+ } else {
styledContainer = originalContainer;
- moveTrailing = true
+ moveTrailing = true;
}
}
- styledNodes.push(startNode);
- node = startNode.nextSibling;
- while(node && domUtils.rangeContainsNode(limits, node)) {
- loopGuard.check();
- styledNodes.push(node);
- node = node.nextSibling
- }
styledNodes.forEach(function(n) {
- if(n.parentNode !== styledContainer) {
- styledContainer.appendChild(n)
+ if (n.parentNode !== styledContainer) {
+ styledContainer.appendChild(n);
}
});
- if(node && moveTrailing) {
+ if (node && moveTrailing) {
trailingContainer = styledContainer.cloneNode(false);
styledContainer.parentNode.insertBefore(trailingContainer, styledContainer.nextSibling);
- while(node) {
+ while (node) {
loopGuard.check();
nextNode = node.nextSibling;
trailingContainer.appendChild(node);
- node = nextNode
+ node = nextNode;
}
}
- return(styledContainer)
+ return (styledContainer);
}
- this.applyStyle = function(textNodes, limits, info) {
+ this.applyStyle = function(textNodes, range, info) {
var textPropsOnly = {}, isStyled, container, styleCache, styleLookup;
runtime.assert(info && info.hasOwnProperty(textProperties), "applyStyle without any text properties");
textPropsOnly[textProperties] = info[textProperties];
@@ -10595,68 +11223,30 @@ odf.TextStyleApplicator = function TextStyleApplicator(objectNameGenerator, form
styleLookup = new StyleLookup(textPropsOnly);
function apply(n) {
isStyled = styleLookup.isStyleApplied(n);
- if(isStyled === false) {
- container = moveToNewSpan(n, limits);
- styleCache.applyStyleToContainer(container)
+ if (isStyled === false) {
+ container = moveToNewSpan(n, range);
+ styleCache.applyStyleToContainer(container);
}
}
- textNodes.forEach(apply)
- }
+ textNodes.forEach(apply);
+ };
};
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.OpApplyDirectStyling = function OpApplyDirectStyling() {
- var memberid, timestamp, position, length, setProperties, odfUtils = new odf.OdfUtils, domUtils = new core.DomUtils;
+ var memberid, timestamp, position, length, setProperties, odfUtils = odf.OdfUtils, domUtils = core.DomUtils;
this.init = function(data) {
memberid = data.memberid;
timestamp = data.timestamp;
position = parseInt(data.position, 10);
length = parseInt(data.length, 10);
- setProperties = data.setProperties
+ setProperties = data.setProperties;
};
this.isEdit = true;
this.group = undefined;
function applyStyle(odtDocument, range, info) {
- var odfCanvas = odtDocument.getOdfCanvas(), odfContainer = odfCanvas.odfContainer(), nextTextNodes = domUtils.splitBoundaries(range), textNodes = odfUtils.getTextNodes(range, false), limits, textStyles;
- limits = {startContainer:range.startContainer, startOffset:range.startOffset, endContainer:range.endContainer, endOffset:range.endOffset};
+ var odfCanvas = odtDocument.getOdfCanvas(), odfContainer = odfCanvas.odfContainer(), nextTextNodes = domUtils.splitBoundaries(range), textNodes = odfUtils.getTextNodes(range, false), textStyles;
textStyles = new odf.TextStyleApplicator(new odf.ObjectNameGenerator((odfContainer), memberid), odtDocument.getFormatting(), odfContainer.rootElement.automaticStyles);
- textStyles.applyStyle(textNodes, limits, info);
- nextTextNodes.forEach(domUtils.normalizeTextNodes)
+ textStyles.applyStyle(textNodes, range, info);
+ nextTextNodes.forEach(domUtils.normalizeTextNodes);
}
this.execute = function(document) {
var odtDocument = (document), range = odtDocument.convertCursorToDomRange(position, length), impactedParagraphs = odfUtils.getParagraphElements(range);
@@ -10665,62 +11255,25 @@ ops.OpApplyDirectStyling = function OpApplyDirectStyling() {
odtDocument.getOdfCanvas().refreshCSS();
odtDocument.fixCursorPositions();
impactedParagraphs.forEach(function(n) {
- odtDocument.emit(ops.OdtDocument.signalParagraphChanged, {paragraphElement:n, memberId:memberid, timeStamp:timestamp})
+ odtDocument.emit(ops.OdtDocument.signalParagraphChanged, {paragraphElement:n, memberId:memberid, timeStamp:timestamp});
});
odtDocument.getOdfCanvas().rerenderAnnotations();
- return true
+ return true;
};
this.spec = function() {
- return{optype:"ApplyDirectStyling", memberid:memberid, timestamp:timestamp, position:position, length:length, setProperties:setProperties}
- }
+ return {optype:"ApplyDirectStyling", memberid:memberid, timestamp:timestamp, position:position, length:length, setProperties:setProperties};
+ };
};
ops.OpApplyDirectStyling.Spec;
ops.OpApplyDirectStyling.InitSpec;
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.OpApplyHyperlink = function OpApplyHyperlink() {
- var memberid, timestamp, position, length, hyperlink, domUtils = new core.DomUtils, odfUtils = new odf.OdfUtils;
+ var memberid, timestamp, position, length, hyperlink, domUtils = core.DomUtils, odfUtils = odf.OdfUtils;
this.init = function(data) {
memberid = data.memberid;
timestamp = data.timestamp;
position = data.position;
length = data.length;
- hyperlink = data.hyperlink
+ hyperlink = data.hyperlink;
};
this.isEdit = true;
this.group = undefined;
@@ -10728,21 +11281,21 @@ ops.OpApplyHyperlink = function OpApplyHyperlink() {
var node = document.createElementNS(odf.Namespaces.textns, "text:a");
node.setAttributeNS(odf.Namespaces.xlinkns, "xlink:type", "simple");
node.setAttributeNS(odf.Namespaces.xlinkns, "xlink:href", hyperlink);
- return node
+ return node;
}
function isPartOfLink(node) {
- while(node) {
- if(odfUtils.isHyperlink(node)) {
- return true
+ while (node) {
+ if (odfUtils.isHyperlink(node)) {
+ return true;
}
- node = node.parentNode
+ node = node.parentNode;
}
- return false
+ return false;
}
this.execute = function(document) {
var odtDocument = (document), ownerDocument = odtDocument.getDOMDocument(), range = odtDocument.convertCursorToDomRange(position, length), boundaryNodes = domUtils.splitBoundaries(range), modifiedParagraphs = [], textNodes = odfUtils.getTextNodes(range, false);
- if(textNodes.length === 0) {
- return false
+ if (textNodes.length === 0) {
+ return false;
}
textNodes.forEach(function(node) {
var linkNode, paragraph = odfUtils.getParagraphElement(node);
@@ -10750,64 +11303,28 @@ ops.OpApplyHyperlink = function OpApplyHyperlink() {
linkNode = createHyperlink(ownerDocument, hyperlink);
node.parentNode.insertBefore(linkNode, node);
linkNode.appendChild(node);
- if(modifiedParagraphs.indexOf(paragraph) === -1) {
- modifiedParagraphs.push(paragraph)
+ if (modifiedParagraphs.indexOf(paragraph) === -1) {
+ modifiedParagraphs.push(paragraph);
}
});
boundaryNodes.forEach(domUtils.normalizeTextNodes);
range.detach();
+ odtDocument.fixCursorPositions();
odtDocument.getOdfCanvas().refreshSize();
odtDocument.getOdfCanvas().rerenderAnnotations();
modifiedParagraphs.forEach(function(paragraph) {
- odtDocument.emit(ops.OdtDocument.signalParagraphChanged, {paragraphElement:paragraph, memberId:memberid, timeStamp:timestamp})
+ odtDocument.emit(ops.OdtDocument.signalParagraphChanged, {paragraphElement:paragraph, memberId:memberid, timeStamp:timestamp});
});
- return true
+ return true;
};
this.spec = function() {
- return{optype:"ApplyHyperlink", memberid:memberid, timestamp:timestamp, position:position, length:length, hyperlink:hyperlink}
- }
+ return {optype:"ApplyHyperlink", memberid:memberid, timestamp:timestamp, position:position, length:length, hyperlink:hyperlink};
+ };
};
ops.OpApplyHyperlink.Spec;
ops.OpApplyHyperlink.InitSpec;
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.OpInsertImage = function OpInsertImage() {
- var memberid, timestamp, position, filename, frameWidth, frameHeight, frameStyleName, frameName, drawns = odf.Namespaces.drawns, svgns = odf.Namespaces.svgns, textns = odf.Namespaces.textns, xlinkns = odf.Namespaces.xlinkns;
+ var memberid, timestamp, position, filename, frameWidth, frameHeight, frameStyleName, frameName, drawns = odf.Namespaces.drawns, svgns = odf.Namespaces.svgns, textns = odf.Namespaces.textns, xlinkns = odf.Namespaces.xlinkns, odfUtils = odf.OdfUtils;
this.init = function(data) {
memberid = data.memberid;
timestamp = data.timestamp;
@@ -10816,7 +11333,7 @@ ops.OpInsertImage = function OpInsertImage() {
frameWidth = data.frameWidth;
frameHeight = data.frameHeight;
frameStyleName = data.frameStyleName;
- frameName = data.frameName
+ frameName = data.frameName;
};
this.isEdit = true;
this.group = undefined;
@@ -10832,73 +11349,36 @@ ops.OpInsertImage = function OpInsertImage() {
frameNode.setAttributeNS(svgns, "svg:width", frameWidth);
frameNode.setAttributeNS(svgns, "svg:height", frameHeight);
frameNode.appendChild(imageNode);
- return frameNode
+ return frameNode;
}
this.execute = function(document) {
var odtDocument = (document), odfCanvas = odtDocument.getOdfCanvas(), domPosition = odtDocument.getTextNodeAtStep(position, memberid), textNode, refNode, paragraphElement, frameElement;
- if(!domPosition) {
- return false
+ if (!domPosition) {
+ return false;
}
textNode = domPosition.textNode;
- paragraphElement = odtDocument.getParagraphElement(textNode);
+ paragraphElement = odfUtils.getParagraphElement(textNode);
refNode = domPosition.offset !== textNode.length ? textNode.splitText(domPosition.offset) : textNode.nextSibling;
frameElement = createFrameElement(odtDocument.getDOMDocument());
textNode.parentNode.insertBefore(frameElement, refNode);
- odtDocument.emit(ops.OdtDocument.signalStepsInserted, {position:position, length:1});
- if(textNode.length === 0) {
- textNode.parentNode.removeChild(textNode)
+ odtDocument.emit(ops.OdtDocument.signalStepsInserted, {position:position});
+ if (textNode.length === 0) {
+ textNode.parentNode.removeChild(textNode);
}
odfCanvas.addCssForFrameWithImage(frameElement);
odfCanvas.refreshCSS();
odtDocument.emit(ops.OdtDocument.signalParagraphChanged, {paragraphElement:paragraphElement, memberId:memberid, timeStamp:timestamp});
odfCanvas.rerenderAnnotations();
- return true
+ return true;
};
this.spec = function() {
- return{optype:"InsertImage", memberid:memberid, timestamp:timestamp, filename:filename, position:position, frameWidth:frameWidth, frameHeight:frameHeight, frameStyleName:frameStyleName, frameName:frameName}
- }
+ return {optype:"InsertImage", memberid:memberid, timestamp:timestamp, filename:filename, position:position, frameWidth:frameWidth, frameHeight:frameHeight, frameStyleName:frameStyleName, frameName:frameName};
+ };
};
ops.OpInsertImage.Spec;
ops.OpInsertImage.InitSpec;
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.OpInsertTable = function OpInsertTable() {
- var memberid, timestamp, initialRows, initialColumns, position, tableName, tableStyleName, tableColumnStyleName, tableCellStyleMatrix, tablens = "urn:oasis:names:tc:opendocument:xmlns:table:1.0", textns = "urn:oasis:names:tc:opendocument:xmlns:text:1.0";
+ var memberid, timestamp, initialRows, initialColumns, position, tableName, tableStyleName, tableColumnStyleName, tableCellStyleMatrix, tablens = "urn:oasis:names:tc:opendocument:xmlns:table:1.0", textns = "urn:oasis:names:tc:opendocument:xmlns:text:1.0", odfUtils = odf.OdfUtils;
this.init = function(data) {
memberid = data.memberid;
timestamp = data.timestamp;
@@ -10908,16 +11388,16 @@ ops.OpInsertTable = function OpInsertTable() {
tableName = data.tableName;
tableStyleName = data.tableStyleName;
tableColumnStyleName = data.tableColumnStyleName;
- tableCellStyleMatrix = data.tableCellStyleMatrix
+ tableCellStyleMatrix = data.tableCellStyleMatrix;
};
this.isEdit = true;
this.group = undefined;
function getCellStyleName(row, column) {
var rowStyles;
- if(tableCellStyleMatrix.length === 1) {
- rowStyles = tableCellStyleMatrix[0]
- }else {
- if(tableCellStyleMatrix.length === 3) {
+ if (tableCellStyleMatrix.length === 1) {
+ rowStyles = tableCellStyleMatrix[0];
+ } else {
+ if (tableCellStyleMatrix.length === 3) {
switch(row) {
case 0:
rowStyles = tableCellStyleMatrix[0];
@@ -10927,240 +11407,318 @@ ops.OpInsertTable = function OpInsertTable() {
break;
default:
rowStyles = tableCellStyleMatrix[1];
- break
+ break;
}
- }else {
- rowStyles = tableCellStyleMatrix[row]
+ } else {
+ rowStyles = tableCellStyleMatrix[row];
}
}
- if(rowStyles.length === 1) {
- return rowStyles[0]
+ if (rowStyles.length === 1) {
+ return rowStyles[0];
}
- if(rowStyles.length === 3) {
+ if (rowStyles.length === 3) {
switch(column) {
case 0:
return rowStyles[0];
case initialColumns - 1:
return rowStyles[2];
default:
- return rowStyles[1]
+ return rowStyles[1];
}
}
- return rowStyles[column]
+ return rowStyles[column];
}
function createTableNode(document) {
var tableNode = document.createElementNS(tablens, "table:table"), columns = document.createElementNS(tablens, "table:table-column"), row, cell, paragraph, rowCounter, columnCounter, cellStyleName;
- if(tableStyleName) {
- tableNode.setAttributeNS(tablens, "table:style-name", tableStyleName)
+ if (tableStyleName) {
+ tableNode.setAttributeNS(tablens, "table:style-name", tableStyleName);
}
- if(tableName) {
- tableNode.setAttributeNS(tablens, "table:name", tableName)
+ if (tableName) {
+ tableNode.setAttributeNS(tablens, "table:name", tableName);
}
columns.setAttributeNS(tablens, "table:number-columns-repeated", initialColumns);
- if(tableColumnStyleName) {
- columns.setAttributeNS(tablens, "table:style-name", tableColumnStyleName)
+ if (tableColumnStyleName) {
+ columns.setAttributeNS(tablens, "table:style-name", tableColumnStyleName);
}
tableNode.appendChild(columns);
- for(rowCounter = 0;rowCounter < initialRows;rowCounter += 1) {
+ for (rowCounter = 0;rowCounter < initialRows;rowCounter += 1) {
row = document.createElementNS(tablens, "table:table-row");
- for(columnCounter = 0;columnCounter < initialColumns;columnCounter += 1) {
+ for (columnCounter = 0;columnCounter < initialColumns;columnCounter += 1) {
cell = document.createElementNS(tablens, "table:table-cell");
cellStyleName = getCellStyleName(rowCounter, columnCounter);
- if(cellStyleName) {
- cell.setAttributeNS(tablens, "table:style-name", cellStyleName)
+ if (cellStyleName) {
+ cell.setAttributeNS(tablens, "table:style-name", cellStyleName);
}
paragraph = document.createElementNS(textns, "text:p");
cell.appendChild(paragraph);
- row.appendChild(cell)
+ row.appendChild(cell);
}
- tableNode.appendChild(row)
+ tableNode.appendChild(row);
}
- return tableNode
+ return tableNode;
}
this.execute = function(document) {
var odtDocument = (document), domPosition = odtDocument.getTextNodeAtStep(position), rootNode = odtDocument.getRootNode(), previousSibling, tableNode;
- if(domPosition) {
+ if (domPosition) {
tableNode = createTableNode(odtDocument.getDOMDocument());
- previousSibling = odtDocument.getParagraphElement(domPosition.textNode);
+ previousSibling = odfUtils.getParagraphElement(domPosition.textNode);
rootNode.insertBefore(tableNode, previousSibling.nextSibling);
- odtDocument.emit(ops.OdtDocument.signalStepsInserted, {position:position, length:initialColumns * initialRows + 1});
+ odtDocument.emit(ops.OdtDocument.signalStepsInserted, {position:position});
odtDocument.getOdfCanvas().refreshSize();
odtDocument.emit(ops.OdtDocument.signalTableAdded, {tableElement:tableNode, memberId:memberid, timeStamp:timestamp});
odtDocument.getOdfCanvas().rerenderAnnotations();
- return true
+ return true;
}
- return false
+ return false;
};
this.spec = function() {
- return{optype:"InsertTable", memberid:memberid, timestamp:timestamp, position:position, initialRows:initialRows, initialColumns:initialColumns, tableName:tableName, tableStyleName:tableStyleName, tableColumnStyleName:tableColumnStyleName, tableCellStyleMatrix:tableCellStyleMatrix}
- }
+ return {optype:"InsertTable", memberid:memberid, timestamp:timestamp, position:position, initialRows:initialRows, initialColumns:initialColumns, tableName:tableName, tableStyleName:tableStyleName, tableColumnStyleName:tableColumnStyleName, tableCellStyleMatrix:tableCellStyleMatrix};
+ };
};
ops.OpInsertTable.Spec;
ops.OpInsertTable.InitSpec;
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.OpInsertText = function OpInsertText() {
- var space = " ", tab = "\t", memberid, timestamp, position, moveCursor, text;
+ var tab = "\t", memberid, timestamp, position, moveCursor, text, odfUtils = odf.OdfUtils;
this.init = function(data) {
memberid = data.memberid;
timestamp = data.timestamp;
position = data.position;
text = data.text;
- moveCursor = data.moveCursor === "true" || data.moveCursor === true
+ moveCursor = data.moveCursor === "true" || data.moveCursor === true;
};
this.isEdit = true;
this.group = undefined;
function triggerLayoutInWebkit(textNode) {
var parent = textNode.parentNode, next = textNode.nextSibling;
parent.removeChild(textNode);
- parent.insertBefore(textNode, next)
+ parent.insertBefore(textNode, next);
+ }
+ function isNonTabWhiteSpace(character) {
+ return character !== tab && odfUtils.isODFWhitespace(character);
}
function requiresSpaceElement(text, index) {
- return text[index] === space && (index === 0 || (index === text.length - 1 || text[index - 1] === space))
+ return isNonTabWhiteSpace(text[index]) && (index === 0 || index === text.length - 1 || isNonTabWhiteSpace(text[index - 1]));
}
this.execute = function(document) {
- var odtDocument = (document), domPosition, previousNode, parentElement, nextNode = null, ownerDocument = odtDocument.getDOMDocument(), paragraphElement, textns = "urn:oasis:names:tc:opendocument:xmlns:text:1.0", toInsertIndex = 0, spaceTag, spaceElement, cursor = odtDocument.getCursor(memberid), i;
+ var odtDocument = (document), domPosition, previousNode, parentElement, nextNode = null, ownerDocument = odtDocument.getDOMDocument(), paragraphElement, textns = "urn:oasis:names:tc:opendocument:xmlns:text:1.0", toInsertIndex = 0, spaceElement, cursor = odtDocument.getCursor(memberid), i;
function insertTextNode(toInsertText) {
- parentElement.insertBefore(ownerDocument.createTextNode(toInsertText), nextNode)
+ parentElement.insertBefore(ownerDocument.createTextNode(toInsertText), nextNode);
}
odtDocument.upgradeWhitespacesAtPosition(position);
domPosition = odtDocument.getTextNodeAtStep(position);
- if(domPosition) {
+ if (domPosition) {
previousNode = domPosition.textNode;
nextNode = previousNode.nextSibling;
parentElement = (previousNode.parentNode);
- paragraphElement = odtDocument.getParagraphElement(previousNode);
- for(i = 0;i < text.length;i += 1) {
- if(requiresSpaceElement(text, i) || text[i] === tab) {
- if(toInsertIndex === 0) {
- if(domPosition.offset !== previousNode.length) {
- nextNode = previousNode.splitText(domPosition.offset)
+ paragraphElement = odfUtils.getParagraphElement(previousNode);
+ for (i = 0;i < text.length;i += 1) {
+ if (text[i] === tab || requiresSpaceElement(text, i)) {
+ if (toInsertIndex === 0) {
+ if (domPosition.offset !== previousNode.length) {
+ nextNode = previousNode.splitText(domPosition.offset);
}
- if(0 < i) {
- previousNode.appendData(text.substring(0, i))
+ if (0 < i) {
+ previousNode.appendData(text.substring(0, i));
}
- }else {
- if(toInsertIndex < i) {
- insertTextNode(text.substring(toInsertIndex, i))
+ } else {
+ if (toInsertIndex < i) {
+ insertTextNode(text.substring(toInsertIndex, i));
}
}
toInsertIndex = i + 1;
- spaceTag = text[i] === space ? "text:s" : "text:tab";
- spaceElement = ownerDocument.createElementNS(textns, spaceTag);
- spaceElement.appendChild(ownerDocument.createTextNode(text[i]));
- parentElement.insertBefore(spaceElement, nextNode)
+ if (text[i] === tab) {
+ spaceElement = ownerDocument.createElementNS(textns, "text:tab");
+ spaceElement.appendChild(ownerDocument.createTextNode("\t"));
+ } else {
+ if (text[i] !== " ") {
+ runtime.log("WARN: InsertText operation contains non-tab, non-space whitespace character (character code " + text.charCodeAt(i) + ")");
+ }
+ spaceElement = ownerDocument.createElementNS(textns, "text:s");
+ spaceElement.appendChild(ownerDocument.createTextNode(" "));
+ }
+ parentElement.insertBefore(spaceElement, nextNode);
}
}
- if(toInsertIndex === 0) {
- previousNode.insertData(domPosition.offset, text)
- }else {
- if(toInsertIndex < text.length) {
- insertTextNode(text.substring(toInsertIndex))
+ if (toInsertIndex === 0) {
+ previousNode.insertData(domPosition.offset, text);
+ } else {
+ if (toInsertIndex < text.length) {
+ insertTextNode(text.substring(toInsertIndex));
}
}
triggerLayoutInWebkit(previousNode);
- if(previousNode.length === 0) {
- previousNode.parentNode.removeChild(previousNode)
+ if (previousNode.length === 0) {
+ previousNode.parentNode.removeChild(previousNode);
}
- odtDocument.emit(ops.OdtDocument.signalStepsInserted, {position:position, length:text.length});
- if(cursor && moveCursor) {
+ odtDocument.emit(ops.OdtDocument.signalStepsInserted, {position:position});
+ if (cursor && moveCursor) {
odtDocument.moveCursor(memberid, position + text.length, 0);
- odtDocument.emit(ops.Document.signalCursorMoved, cursor)
- }
- if(position > 0) {
- if(position > 1) {
- odtDocument.downgradeWhitespacesAtPosition(position - 2)
- }
- odtDocument.downgradeWhitespacesAtPosition(position - 1)
+ odtDocument.emit(ops.Document.signalCursorMoved, cursor);
}
odtDocument.downgradeWhitespacesAtPosition(position);
- odtDocument.downgradeWhitespacesAtPosition(position + text.length - 1);
odtDocument.downgradeWhitespacesAtPosition(position + text.length);
odtDocument.getOdfCanvas().refreshSize();
odtDocument.emit(ops.OdtDocument.signalParagraphChanged, {paragraphElement:paragraphElement, memberId:memberid, timeStamp:timestamp});
odtDocument.getOdfCanvas().rerenderAnnotations();
- return true
+ return true;
}
- return false
+ return false;
};
this.spec = function() {
- return{optype:"InsertText", memberid:memberid, timestamp:timestamp, position:position, text:text, moveCursor:moveCursor}
- }
+ return {optype:"InsertText", memberid:memberid, timestamp:timestamp, position:position, text:text, moveCursor:moveCursor};
+ };
};
ops.OpInsertText.Spec;
ops.OpInsertText.InitSpec;
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
+odf.CollapsingRules = function CollapsingRules(rootNode) {
+ var odfUtils = odf.OdfUtils, domUtils = core.DomUtils;
+ function filterOdfNodesToRemove(node) {
+ var isToRemove = odfUtils.isODFNode(node) || node.localName === "br" && odfUtils.isLineBreak(node.parentNode) || node.nodeType === Node.TEXT_NODE && odfUtils.isODFNode((node.parentNode));
+ return isToRemove ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;
+ }
+ function isCollapsibleContainer(node) {
+ return !odfUtils.isParagraph(node) && node !== rootNode && odfUtils.hasNoODFContent(node);
+ }
+ function mergeChildrenIntoParent(targetNode) {
+ var parent;
+ if (targetNode.nodeType === Node.TEXT_NODE) {
+ parent = targetNode.parentNode;
+ parent.removeChild(targetNode);
+ } else {
+ parent = domUtils.removeUnwantedNodes(targetNode, filterOdfNodesToRemove);
+ }
+ if (parent && isCollapsibleContainer(parent)) {
+ return mergeChildrenIntoParent(parent);
+ }
+ return parent;
+ }
+ this.mergeChildrenIntoParent = mergeChildrenIntoParent;
+};
+ops.OpMergeParagraph = function OpMergeParagraph() {
+ var memberid, timestamp, moveCursor, paragraphStyleName, sourceStartPosition, destinationStartPosition, odfUtils = odf.OdfUtils, domUtils = core.DomUtils, textns = odf.Namespaces.textns;
+ this.init = function(data) {
+ memberid = data.memberid;
+ timestamp = data.timestamp;
+ moveCursor = data.moveCursor;
+ paragraphStyleName = data.paragraphStyleName;
+ sourceStartPosition = parseInt(data.sourceStartPosition, 10);
+ destinationStartPosition = parseInt(data.destinationStartPosition, 10);
+ };
+ this.isEdit = true;
+ this.group = undefined;
+ function filterEmptyGroupingElementToRemove(element) {
+ if (odf.OdfUtils.isInlineRoot(element)) {
+ return NodeFilter.FILTER_SKIP;
+ }
+ return odfUtils.isGroupingElement(element) && odfUtils.hasNoODFContent(element) ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;
+ }
+ function mergeParagraphs(destination, source) {
+ var child;
+ child = source.firstChild;
+ while (child) {
+ if (child.localName === "editinfo") {
+ source.removeChild(child);
+ } else {
+ destination.appendChild(child);
+ domUtils.removeUnwantedNodes(child, filterEmptyGroupingElementToRemove);
+ }
+ child = source.firstChild;
+ }
+ }
+ function isInsignificantWhitespace(node) {
+ var textNode, badNodeDescription;
+ if (node.nodeType === Node.TEXT_NODE) {
+ textNode = (node);
+ if (textNode.length === 0) {
+ runtime.log("WARN: Empty text node found during merge operation");
+ return true;
+ }
+ if (odfUtils.isODFWhitespace(textNode.data) && odfUtils.isSignificantWhitespace(textNode, 0) === false) {
+ return true;
+ }
+ badNodeDescription = "#text";
+ } else {
+ badNodeDescription = (node.prefix ? node.prefix + ":" : "") + node.localName;
+ }
+ runtime.log("WARN: Unexpected text element found near paragraph boundary [" + badNodeDescription + "]");
+ return false;
+ }
+ function removeTextNodes(range) {
+ var emptyTextNodes;
+ if (range.collapsed) {
+ return;
+ }
+ domUtils.splitBoundaries(range);
+ emptyTextNodes = odfUtils.getTextElements(range, false, true).filter(isInsignificantWhitespace);
+ emptyTextNodes.forEach(function(node) {
+ node.parentNode.removeChild(node);
+ });
+ }
+ function trimLeadingInsignificantWhitespace(stepIterator, paragraphElement) {
+ var range = paragraphElement.ownerDocument.createRange();
+ stepIterator.setPosition(paragraphElement, 0);
+ stepIterator.roundToNextStep();
+ range.setStart(paragraphElement, 0);
+ range.setEnd(stepIterator.container(), stepIterator.offset());
+ removeTextNodes(range);
+ }
+ function trimTrailingInsignificantWhitespace(stepIterator, paragraphElement) {
+ var range = paragraphElement.ownerDocument.createRange();
+ stepIterator.setPosition(paragraphElement, paragraphElement.childNodes.length);
+ stepIterator.roundToPreviousStep();
+ range.setStart(stepIterator.container(), stepIterator.offset());
+ range.setEnd(paragraphElement, paragraphElement.childNodes.length);
+ removeTextNodes(range);
+ }
+ function getParagraphAtStep(odtDocument, steps, stepIterator) {
+ var domPoint = odtDocument.convertCursorStepToDomPoint(steps), paragraph = odfUtils.getParagraphElement(domPoint.node, domPoint.offset);
+ runtime.assert(Boolean(paragraph), "Paragraph not found at step " + steps);
+ if (stepIterator) {
+ stepIterator.setPosition(domPoint.node, domPoint.offset);
+ }
+ return (paragraph);
+ }
+ this.execute = function(document) {
+ var odtDocument = (document), sourceParagraph, destinationParagraph, cursor = odtDocument.getCursor(memberid), rootNode = odtDocument.getRootNode(), collapseRules = new odf.CollapsingRules(rootNode), stepIterator = odtDocument.createStepIterator(rootNode, 0, [odtDocument.getPositionFilter()], rootNode), downgradeOffset;
+ runtime.assert(destinationStartPosition < sourceStartPosition, "Destination paragraph (" + destinationStartPosition + ") must be " + "before source paragraph (" + sourceStartPosition + ")");
+ destinationParagraph = getParagraphAtStep(odtDocument, destinationStartPosition);
+ sourceParagraph = getParagraphAtStep(odtDocument, sourceStartPosition, stepIterator);
+ stepIterator.previousStep();
+ runtime.assert(domUtils.containsNode(destinationParagraph, stepIterator.container()), "Destination paragraph must be adjacent to the source paragraph");
+ trimTrailingInsignificantWhitespace(stepIterator, destinationParagraph);
+ downgradeOffset = destinationParagraph.childNodes.length;
+ trimLeadingInsignificantWhitespace(stepIterator, sourceParagraph);
+ mergeParagraphs(destinationParagraph, sourceParagraph);
+ runtime.assert(sourceParagraph.childNodes.length === 0, "Source paragraph should be empty before it is removed");
+ collapseRules.mergeChildrenIntoParent(sourceParagraph);
+ odtDocument.emit(ops.OdtDocument.signalStepsRemoved, {position:sourceStartPosition - 1});
+ stepIterator.setPosition(destinationParagraph, downgradeOffset);
+ stepIterator.roundToClosestStep();
+ if (!stepIterator.previousStep()) {
+ stepIterator.roundToNextStep();
+ }
+ odtDocument.downgradeWhitespaces(stepIterator);
+ if (paragraphStyleName) {
+ destinationParagraph.setAttributeNS(textns, "text:style-name", paragraphStyleName);
+ } else {
+ destinationParagraph.removeAttributeNS(textns, "style-name");
+ }
+ if (cursor && moveCursor) {
+ odtDocument.moveCursor(memberid, sourceStartPosition - 1, 0);
+ odtDocument.emit(ops.Document.signalCursorMoved, cursor);
+ }
+ odtDocument.fixCursorPositions();
+ odtDocument.getOdfCanvas().refreshSize();
+ odtDocument.emit(ops.OdtDocument.signalParagraphChanged, {paragraphElement:destinationParagraph, memberId:memberid, timeStamp:timestamp});
+ odtDocument.getOdfCanvas().rerenderAnnotations();
+ return true;
+ };
+ this.spec = function() {
+ return {optype:"MergeParagraph", memberid:memberid, timestamp:timestamp, moveCursor:moveCursor, paragraphStyleName:paragraphStyleName, sourceStartPosition:sourceStartPosition, destinationStartPosition:destinationStartPosition};
+ };
+};
+ops.OpMergeParagraph.Spec;
+ops.OpMergeParagraph.InitSpec;
ops.OpMoveCursor = function OpMoveCursor() {
var memberid, timestamp, position, length, selectionType;
this.init = function(data) {
@@ -11168,265 +11726,116 @@ ops.OpMoveCursor = function OpMoveCursor() {
timestamp = data.timestamp;
position = data.position;
length = data.length || 0;
- selectionType = data.selectionType || ops.OdtCursor.RangeSelection
+ selectionType = data.selectionType || ops.OdtCursor.RangeSelection;
};
this.isEdit = false;
this.group = undefined;
this.execute = function(document) {
var odtDocument = (document), cursor = odtDocument.getCursor(memberid), selectedRange;
- if(!cursor) {
- return false
+ if (!cursor) {
+ return false;
}
selectedRange = odtDocument.convertCursorToDomRange(position, length);
cursor.setSelectedRange(selectedRange, length >= 0);
cursor.setSelectionType(selectionType);
odtDocument.emit(ops.Document.signalCursorMoved, cursor);
- return true
+ return true;
};
this.spec = function() {
- return{optype:"MoveCursor", memberid:memberid, timestamp:timestamp, position:position, length:length, selectionType:selectionType}
- }
+ return {optype:"MoveCursor", memberid:memberid, timestamp:timestamp, position:position, length:length, selectionType:selectionType};
+ };
};
ops.OpMoveCursor.Spec;
ops.OpMoveCursor.InitSpec;
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.OpRemoveAnnotation = function OpRemoveAnnotation() {
- var memberid, timestamp, position, length, domUtils;
+ var memberid, timestamp, position, length, domUtils = core.DomUtils;
this.init = function(data) {
memberid = data.memberid;
timestamp = data.timestamp;
position = parseInt(data.position, 10);
length = parseInt(data.length, 10);
- domUtils = new core.DomUtils
};
this.isEdit = true;
this.group = undefined;
this.execute = function(document) {
var odtDocument = (document), iterator = odtDocument.getIteratorAtPosition(position), container = iterator.container(), annotationNode, annotationEnd;
- while(!(container.namespaceURI === odf.Namespaces.officens && container.localName === "annotation")) {
- container = container.parentNode
+ while (!(container.namespaceURI === odf.Namespaces.officens && container.localName === "annotation")) {
+ container = container.parentNode;
}
- if(container === null) {
- return false
+ if (container === null) {
+ return false;
}
annotationNode = (container);
annotationEnd = annotationNode.annotationEndElement;
- odtDocument.getOdfCanvas().forgetAnnotations();
+ odtDocument.getOdfCanvas().forgetAnnotation(annotationNode);
function insert(node) {
- (annotationNode).parentNode.insertBefore(node, annotationNode)
+ (annotationNode).parentNode.insertBefore(node, annotationNode);
}
domUtils.getElementsByTagNameNS(annotationNode, "urn:webodf:names:cursor", "cursor").forEach(insert);
domUtils.getElementsByTagNameNS(annotationNode, "urn:webodf:names:cursor", "anchor").forEach(insert);
annotationNode.parentNode.removeChild(annotationNode);
- if(annotationEnd) {
- annotationEnd.parentNode.removeChild(annotationEnd)
+ if (annotationEnd) {
+ annotationEnd.parentNode.removeChild(annotationEnd);
}
- odtDocument.emit(ops.OdtDocument.signalStepsRemoved, {position:position > 0 ? position - 1 : position, length:length});
+ odtDocument.emit(ops.OdtDocument.signalStepsRemoved, {position:position > 0 ? position - 1 : position});
+ odtDocument.getOdfCanvas().rerenderAnnotations();
odtDocument.fixCursorPositions();
- odtDocument.getOdfCanvas().refreshAnnotations();
- return true
+ return true;
};
this.spec = function() {
- return{optype:"RemoveAnnotation", memberid:memberid, timestamp:timestamp, position:position, length:length}
- }
+ return {optype:"RemoveAnnotation", memberid:memberid, timestamp:timestamp, position:position, length:length};
+ };
};
ops.OpRemoveAnnotation.Spec;
ops.OpRemoveAnnotation.InitSpec;
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.OpRemoveBlob = function OpRemoveBlob() {
var memberid, timestamp, filename;
this.init = function(data) {
memberid = data.memberid;
timestamp = data.timestamp;
- filename = data.filename
+ filename = data.filename;
};
this.isEdit = true;
this.group = undefined;
this.execute = function(document) {
var odtDocument = (document);
odtDocument.getOdfCanvas().odfContainer().removeBlob(filename);
- return true
+ return true;
};
this.spec = function() {
- return{optype:"RemoveBlob", memberid:memberid, timestamp:timestamp, filename:filename}
- }
+ return {optype:"RemoveBlob", memberid:memberid, timestamp:timestamp, filename:filename};
+ };
};
ops.OpRemoveBlob.Spec;
ops.OpRemoveBlob.InitSpec;
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.OpRemoveCursor = function OpRemoveCursor() {
var memberid, timestamp;
this.init = function(data) {
memberid = data.memberid;
- timestamp = data.timestamp
+ timestamp = data.timestamp;
};
this.isEdit = false;
this.group = undefined;
this.execute = function(document) {
var odtDocument = (document);
- if(!odtDocument.removeCursor(memberid)) {
- return false
+ if (!odtDocument.removeCursor(memberid)) {
+ return false;
}
- return true
+ return true;
};
this.spec = function() {
- return{optype:"RemoveCursor", memberid:memberid, timestamp:timestamp}
- }
+ return {optype:"RemoveCursor", memberid:memberid, timestamp:timestamp};
+ };
};
ops.OpRemoveCursor.Spec;
ops.OpRemoveCursor.InitSpec;
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.OpRemoveHyperlink = function OpRemoveHyperlink() {
- var memberid, timestamp, position, length, domUtils = new core.DomUtils, odfUtils = new odf.OdfUtils;
+ var memberid, timestamp, position, length, domUtils = core.DomUtils, odfUtils = odf.OdfUtils;
this.init = function(data) {
memberid = data.memberid;
timestamp = data.timestamp;
position = data.position;
- length = data.length
+ length = data.length;
};
this.isEdit = true;
this.group = undefined;
@@ -11435,333 +11844,114 @@ ops.OpRemoveHyperlink = function OpRemoveHyperlink() {
runtime.assert(links.length === 1, "The given range should only contain a single link.");
node = domUtils.mergeIntoParent((links[0]));
range.detach();
+ odtDocument.fixCursorPositions();
odtDocument.getOdfCanvas().refreshSize();
- odtDocument.emit(ops.OdtDocument.signalParagraphChanged, {paragraphElement:odfUtils.getParagraphElement(node), memberId:memberid, timeStamp:timestamp});
odtDocument.getOdfCanvas().rerenderAnnotations();
- return true
+ odtDocument.emit(ops.OdtDocument.signalParagraphChanged, {paragraphElement:odfUtils.getParagraphElement(node), memberId:memberid, timeStamp:timestamp});
+ return true;
};
this.spec = function() {
- return{optype:"RemoveHyperlink", memberid:memberid, timestamp:timestamp, position:position, length:length}
- }
+ return {optype:"RemoveHyperlink", memberid:memberid, timestamp:timestamp, position:position, length:length};
+ };
};
ops.OpRemoveHyperlink.Spec;
ops.OpRemoveHyperlink.InitSpec;
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- This file is part of WebODF.
-
- WebODF is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License (GNU AGPL)
- as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- WebODF is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with WebODF. If not, see <http://www.gnu.org/licenses/>.
- @licend
-
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.OpRemoveMember = function OpRemoveMember() {
var memberid, timestamp;
this.init = function(data) {
memberid = data.memberid;
- timestamp = parseInt(data.timestamp, 10)
+ timestamp = parseInt(data.timestamp, 10);
};
this.isEdit = false;
this.group = undefined;
this.execute = function(document) {
var odtDocument = (document);
- if(!odtDocument.getMember(memberid)) {
- return false
+ if (!odtDocument.getMember(memberid)) {
+ return false;
}
odtDocument.removeMember(memberid);
odtDocument.emit(ops.Document.signalMemberRemoved, memberid);
- return true
+ return true;
};
this.spec = function() {
- return{optype:"RemoveMember", memberid:memberid, timestamp:timestamp}
- }
+ return {optype:"RemoveMember", memberid:memberid, timestamp:timestamp};
+ };
};
ops.OpRemoveMember.Spec;
ops.OpRemoveMember.InitSpec;
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.OpRemoveStyle = function OpRemoveStyle() {
var memberid, timestamp, styleName, styleFamily;
this.init = function(data) {
memberid = data.memberid;
timestamp = data.timestamp;
styleName = data.styleName;
- styleFamily = data.styleFamily
+ styleFamily = data.styleFamily;
};
this.isEdit = true;
this.group = undefined;
this.execute = function(document) {
- var odtDocument = (document), styleNode = odtDocument.getStyleElement(styleName, styleFamily);
- if(!styleNode) {
- return false
+ var odtDocument = (document), styleNode = odtDocument.getFormatting().getStyleElement(styleName, styleFamily);
+ if (!styleNode) {
+ return false;
}
styleNode.parentNode.removeChild(styleNode);
odtDocument.getOdfCanvas().refreshCSS();
odtDocument.emit(ops.OdtDocument.signalCommonStyleDeleted, {name:styleName, family:styleFamily});
- return true
+ return true;
};
this.spec = function() {
- return{optype:"RemoveStyle", memberid:memberid, timestamp:timestamp, styleName:styleName, styleFamily:styleFamily}
- }
+ return {optype:"RemoveStyle", memberid:memberid, timestamp:timestamp, styleName:styleName, styleFamily:styleFamily};
+ };
};
ops.OpRemoveStyle.Spec;
ops.OpRemoveStyle.InitSpec;
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.OpRemoveText = function OpRemoveText() {
- var memberid, timestamp, position, length, odfUtils, domUtils, editinfons = "urn:webodf:names:editinfo", odfNodeNamespaceMap = {};
+ var memberid, timestamp, position, length, odfUtils = odf.OdfUtils, domUtils = core.DomUtils;
this.init = function(data) {
runtime.assert(data.length >= 0, "OpRemoveText only supports positive lengths");
memberid = data.memberid;
timestamp = data.timestamp;
position = parseInt(data.position, 10);
length = parseInt(data.length, 10);
- odfUtils = new odf.OdfUtils;
- domUtils = new core.DomUtils;
- odfNodeNamespaceMap[odf.Namespaces.dbns] = true;
- odfNodeNamespaceMap[odf.Namespaces.dcns] = true;
- odfNodeNamespaceMap[odf.Namespaces.dr3dns] = true;
- odfNodeNamespaceMap[odf.Namespaces.drawns] = true;
- odfNodeNamespaceMap[odf.Namespaces.chartns] = true;
- odfNodeNamespaceMap[odf.Namespaces.formns] = true;
- odfNodeNamespaceMap[odf.Namespaces.numberns] = true;
- odfNodeNamespaceMap[odf.Namespaces.officens] = true;
- odfNodeNamespaceMap[odf.Namespaces.presentationns] = true;
- odfNodeNamespaceMap[odf.Namespaces.stylens] = true;
- odfNodeNamespaceMap[odf.Namespaces.svgns] = true;
- odfNodeNamespaceMap[odf.Namespaces.tablens] = true;
- odfNodeNamespaceMap[odf.Namespaces.textns] = true
};
this.isEdit = true;
this.group = undefined;
- function CollapsingRules(rootNode) {
- function isOdfNode(node) {
- return odfNodeNamespaceMap.hasOwnProperty(node.namespaceURI)
- }
- function shouldRemove(node) {
- return isOdfNode(node) || (node.localName === "br" && odfUtils.isLineBreak(node.parentNode) || node.nodeType === Node.TEXT_NODE && isOdfNode((node.parentNode)))
- }
- function isEmpty(node) {
- var childNode;
- if(odfUtils.isCharacterElement(node)) {
- return false
- }
- if(node.nodeType === Node.TEXT_NODE) {
- return node.textContent.length === 0
- }
- childNode = node.firstChild;
- while(childNode) {
- if(isOdfNode(childNode) || !isEmpty(childNode)) {
- return false
- }
- childNode = childNode.nextSibling
- }
- return true
- }
- this.isEmpty = isEmpty;
- function isCollapsibleContainer(node) {
- return!odfUtils.isParagraph(node) && (node !== rootNode && isEmpty(node))
- }
- function mergeChildrenIntoParent(targetNode) {
- var parent;
- if(targetNode.nodeType === Node.TEXT_NODE) {
- parent = targetNode.parentNode;
- parent.removeChild(targetNode)
- }else {
- parent = domUtils.removeUnwantedNodes(targetNode, shouldRemove)
- }
- if(parent && isCollapsibleContainer(parent)) {
- return mergeChildrenIntoParent(parent)
- }
- return parent
- }
- this.mergeChildrenIntoParent = mergeChildrenIntoParent
- }
- function mergeParagraphs(first, second, collapseRules) {
- var child, destination = first, source = second, secondParent, insertionPoint = null;
- if(collapseRules.isEmpty(first)) {
- if(second.parentNode !== first.parentNode) {
- secondParent = second.parentNode;
- first.parentNode.insertBefore(second, first.nextSibling)
- }
- source = first;
- destination = second;
- insertionPoint = destination.getElementsByTagNameNS(editinfons, "editinfo").item(0) || destination.firstChild
- }
- while(source.firstChild) {
- child = source.firstChild;
- source.removeChild(child);
- if(child.localName !== "editinfo") {
- destination.insertBefore(child, insertionPoint)
- }
- }
- if(secondParent && collapseRules.isEmpty(secondParent)) {
- collapseRules.mergeChildrenIntoParent(secondParent)
- }
- collapseRules.mergeChildrenIntoParent(source);
- return destination
- }
this.execute = function(document) {
- var odtDocument = (document), paragraphElement, destinationParagraph, range, textNodes, paragraphs, cursor = odtDocument.getCursor(memberid), collapseRules = new CollapsingRules(odtDocument.getRootNode());
+ var odtDocument = (document), range, textNodes, paragraph, cursor = odtDocument.getCursor(memberid), collapseRules = new odf.CollapsingRules(odtDocument.getRootNode());
odtDocument.upgradeWhitespacesAtPosition(position);
odtDocument.upgradeWhitespacesAtPosition(position + length);
range = odtDocument.convertCursorToDomRange(position, length);
domUtils.splitBoundaries(range);
- paragraphElement = odtDocument.getParagraphElement(range.startContainer);
textNodes = odfUtils.getTextElements(range, false, true);
- paragraphs = odfUtils.getParagraphElements(range);
+ paragraph = (odfUtils.getParagraphElement(range.startContainer, range.startOffset));
+ runtime.assert(paragraph !== undefined, "Attempting to remove text outside a paragraph element");
range.detach();
textNodes.forEach(function(element) {
- if(element.parentNode) {
- collapseRules.mergeChildrenIntoParent(element)
- }else {
- runtime.log("WARN: text element has already been removed from it's container")
+ if (element.parentNode) {
+ runtime.assert(domUtils.containsNode(paragraph, element), "RemoveText only supports removing elements within the same paragraph");
+ collapseRules.mergeChildrenIntoParent(element);
+ } else {
+ runtime.log("WARN: text element has already been removed from it's container");
}
});
- function merge(destination, paragraph) {
- return mergeParagraphs(destination, paragraph, collapseRules)
- }
- destinationParagraph = paragraphs.reduce(merge);
- odtDocument.emit(ops.OdtDocument.signalStepsRemoved, {position:position, length:length});
+ odtDocument.emit(ops.OdtDocument.signalStepsRemoved, {position:position});
odtDocument.downgradeWhitespacesAtPosition(position);
odtDocument.fixCursorPositions();
odtDocument.getOdfCanvas().refreshSize();
- odtDocument.emit(ops.OdtDocument.signalParagraphChanged, {paragraphElement:destinationParagraph || paragraphElement, memberId:memberid, timeStamp:timestamp});
- if(cursor) {
+ odtDocument.emit(ops.OdtDocument.signalParagraphChanged, {paragraphElement:paragraph, memberId:memberid, timeStamp:timestamp});
+ if (cursor) {
cursor.resetSelectionType();
- odtDocument.emit(ops.Document.signalCursorMoved, cursor)
+ odtDocument.emit(ops.Document.signalCursorMoved, cursor);
}
odtDocument.getOdfCanvas().rerenderAnnotations();
- return true
+ return true;
};
this.spec = function() {
- return{optype:"RemoveText", memberid:memberid, timestamp:timestamp, position:position, length:length}
- }
+ return {optype:"RemoveText", memberid:memberid, timestamp:timestamp, position:position, length:length};
+ };
};
ops.OpRemoveText.Spec;
ops.OpRemoveText.InitSpec;
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.OpSetBlob = function OpSetBlob() {
var memberid, timestamp, filename, mimetype, content;
this.init = function(data) {
@@ -11769,136 +11959,68 @@ ops.OpSetBlob = function OpSetBlob() {
timestamp = data.timestamp;
filename = data.filename;
mimetype = data.mimetype;
- content = data.content
+ content = data.content;
};
this.isEdit = true;
this.group = undefined;
this.execute = function(document) {
var odtDocument = (document);
odtDocument.getOdfCanvas().odfContainer().setBlob(filename, mimetype, content);
- return true
+ return true;
};
this.spec = function() {
- return{optype:"SetBlob", memberid:memberid, timestamp:timestamp, filename:filename, mimetype:mimetype, content:content}
- }
+ return {optype:"SetBlob", memberid:memberid, timestamp:timestamp, filename:filename, mimetype:mimetype, content:content};
+ };
};
ops.OpSetBlob.Spec;
ops.OpSetBlob.InitSpec;
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.OpSetParagraphStyle = function OpSetParagraphStyle() {
- var memberid, timestamp, position, styleName, textns = "urn:oasis:names:tc:opendocument:xmlns:text:1.0";
+ var memberid, timestamp, position, styleName, textns = "urn:oasis:names:tc:opendocument:xmlns:text:1.0", odfUtils = odf.OdfUtils;
this.init = function(data) {
memberid = data.memberid;
timestamp = data.timestamp;
position = data.position;
- styleName = data.styleName
+ styleName = data.styleName;
};
this.isEdit = true;
this.group = undefined;
+ function isFirstStep(odtDocument, paragraphNode, iterator) {
+ var filters = [odtDocument.getPositionFilter()], container = iterator.container(), offset = iterator.unfilteredDomOffset(), stepIterator = odtDocument.createStepIterator(container, offset, filters, paragraphNode);
+ return stepIterator.previousStep() === false;
+ }
this.execute = function(document) {
var odtDocument = (document), iterator, paragraphNode;
iterator = odtDocument.getIteratorAtPosition(position);
- paragraphNode = odtDocument.getParagraphElement(iterator.container());
- if(paragraphNode) {
- if(styleName !== "") {
- paragraphNode.setAttributeNS(textns, "text:style-name", styleName)
- }else {
- paragraphNode.removeAttributeNS(textns, "style-name")
+ paragraphNode = odfUtils.getParagraphElement(iterator.container());
+ if (paragraphNode) {
+ runtime.assert(isFirstStep(odtDocument, paragraphNode, iterator), "SetParagraphStyle position should be the first position in the paragraph");
+ if (styleName) {
+ paragraphNode.setAttributeNS(textns, "text:style-name", styleName);
+ } else {
+ paragraphNode.removeAttributeNS(textns, "style-name");
}
odtDocument.getOdfCanvas().refreshSize();
odtDocument.emit(ops.OdtDocument.signalParagraphChanged, {paragraphElement:paragraphNode, timeStamp:timestamp, memberId:memberid});
odtDocument.getOdfCanvas().rerenderAnnotations();
- return true
+ return true;
}
- return false
+ return false;
};
this.spec = function() {
- return{optype:"SetParagraphStyle", memberid:memberid, timestamp:timestamp, position:position, styleName:styleName}
- }
+ return {optype:"SetParagraphStyle", memberid:memberid, timestamp:timestamp, position:position, styleName:styleName};
+ };
};
ops.OpSetParagraphStyle.Spec;
ops.OpSetParagraphStyle.InitSpec;
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.OpSplitParagraph = function OpSplitParagraph() {
- var memberid, timestamp, position, moveCursor, odfUtils;
+ var memberid, timestamp, sourceParagraphPosition, position, moveCursor, paragraphStyleName, odfUtils = odf.OdfUtils, textns = odf.Namespaces.textns;
this.init = function(data) {
memberid = data.memberid;
timestamp = data.timestamp;
position = data.position;
+ sourceParagraphPosition = data.sourceParagraphPosition;
+ paragraphStyleName = data.paragraphStyleName;
moveCursor = data.moveCursor === "true" || data.moveCursor === true;
- odfUtils = new odf.OdfUtils
};
this.isEdit = true;
this.group = undefined;
@@ -11906,233 +12028,154 @@ ops.OpSplitParagraph = function OpSplitParagraph() {
var odtDocument = (document), domPosition, paragraphNode, targetNode, node, splitNode, splitChildNode, keptChildNode, cursor = odtDocument.getCursor(memberid);
odtDocument.upgradeWhitespacesAtPosition(position);
domPosition = odtDocument.getTextNodeAtStep(position);
- if(!domPosition) {
- return false
+ if (!domPosition) {
+ return false;
}
- paragraphNode = odtDocument.getParagraphElement(domPosition.textNode);
- if(!paragraphNode) {
- return false
+ paragraphNode = odfUtils.getParagraphElement(domPosition.textNode);
+ if (!paragraphNode) {
+ return false;
}
- if(odfUtils.isListItem(paragraphNode.parentNode)) {
- targetNode = paragraphNode.parentNode
- }else {
- targetNode = paragraphNode
+ if (odfUtils.isListItem(paragraphNode.parentNode)) {
+ targetNode = paragraphNode.parentNode;
+ } else {
+ targetNode = paragraphNode;
}
- if(domPosition.offset === 0) {
+ if (domPosition.offset === 0) {
keptChildNode = domPosition.textNode.previousSibling;
- splitChildNode = null
- }else {
+ splitChildNode = null;
+ } else {
keptChildNode = domPosition.textNode;
- if(domPosition.offset >= domPosition.textNode.length) {
- splitChildNode = null
- }else {
- splitChildNode = (domPosition.textNode.splitText(domPosition.offset))
+ if (domPosition.offset >= domPosition.textNode.length) {
+ splitChildNode = null;
+ } else {
+ splitChildNode = (domPosition.textNode.splitText(domPosition.offset));
}
}
node = domPosition.textNode;
- while(node !== targetNode) {
+ while (node !== targetNode) {
node = node.parentNode;
splitNode = node.cloneNode(false);
- if(splitChildNode) {
- splitNode.appendChild(splitChildNode)
+ if (splitChildNode) {
+ splitNode.appendChild(splitChildNode);
}
- if(keptChildNode) {
- while(keptChildNode && keptChildNode.nextSibling) {
- splitNode.appendChild(keptChildNode.nextSibling)
+ if (keptChildNode) {
+ while (keptChildNode && keptChildNode.nextSibling) {
+ splitNode.appendChild(keptChildNode.nextSibling);
}
- }else {
- while(node.firstChild) {
- splitNode.appendChild(node.firstChild)
+ } else {
+ while (node.firstChild) {
+ splitNode.appendChild(node.firstChild);
}
}
node.parentNode.insertBefore(splitNode, node.nextSibling);
keptChildNode = node;
- splitChildNode = splitNode
+ splitChildNode = splitNode;
+ }
+ if (odfUtils.isListItem(splitChildNode)) {
+ splitChildNode = splitChildNode.childNodes.item(0);
}
- if(odfUtils.isListItem(splitChildNode)) {
- splitChildNode = splitChildNode.childNodes.item(0)
+ if (paragraphStyleName) {
+ (splitChildNode).setAttributeNS(textns, "text:style-name", paragraphStyleName);
+ } else {
+ (splitChildNode).removeAttributeNS(textns, "style-name");
}
- if(domPosition.textNode.length === 0) {
- domPosition.textNode.parentNode.removeChild(domPosition.textNode)
+ if (domPosition.textNode.length === 0) {
+ domPosition.textNode.parentNode.removeChild(domPosition.textNode);
}
- odtDocument.emit(ops.OdtDocument.signalStepsInserted, {position:position, length:1});
- if(cursor && moveCursor) {
+ odtDocument.emit(ops.OdtDocument.signalStepsInserted, {position:position});
+ if (cursor && moveCursor) {
odtDocument.moveCursor(memberid, position + 1, 0);
- odtDocument.emit(ops.Document.signalCursorMoved, cursor)
+ odtDocument.emit(ops.Document.signalCursorMoved, cursor);
}
odtDocument.fixCursorPositions();
odtDocument.getOdfCanvas().refreshSize();
odtDocument.emit(ops.OdtDocument.signalParagraphChanged, {paragraphElement:paragraphNode, memberId:memberid, timeStamp:timestamp});
odtDocument.emit(ops.OdtDocument.signalParagraphChanged, {paragraphElement:splitChildNode, memberId:memberid, timeStamp:timestamp});
odtDocument.getOdfCanvas().rerenderAnnotations();
- return true
+ return true;
};
this.spec = function() {
- return{optype:"SplitParagraph", memberid:memberid, timestamp:timestamp, position:position, moveCursor:moveCursor}
- }
+ return {optype:"SplitParagraph", memberid:memberid, timestamp:timestamp, position:position, sourceParagraphPosition:sourceParagraphPosition, paragraphStyleName:paragraphStyleName, moveCursor:moveCursor};
+ };
};
ops.OpSplitParagraph.Spec;
ops.OpSplitParagraph.InitSpec;
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- This file is part of WebODF.
-
- WebODF is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License (GNU AGPL)
- as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- WebODF is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with WebODF. If not, see <http://www.gnu.org/licenses/>.
- @licend
-
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.OpUpdateMember = function OpUpdateMember() {
var memberid, timestamp, setProperties, removedProperties;
this.init = function(data) {
memberid = data.memberid;
timestamp = parseInt(data.timestamp, 10);
setProperties = data.setProperties;
- removedProperties = data.removedProperties
+ removedProperties = data.removedProperties;
};
this.isEdit = false;
this.group = undefined;
function updateCreators(doc) {
var xpath = xmldom.XPath, xp = "//dc:creator[@editinfo:memberid='" + memberid + "']", creators = xpath.getODFElementsWithXPath(doc.getRootNode(), xp, function(prefix) {
- if(prefix === "editinfo") {
- return"urn:webodf:names:editinfo"
+ if (prefix === "editinfo") {
+ return "urn:webodf:names:editinfo";
}
- return odf.Namespaces.lookupNamespaceURI(prefix)
+ return odf.Namespaces.lookupNamespaceURI(prefix);
}), i;
- for(i = 0;i < creators.length;i += 1) {
- creators[i].textContent = setProperties.fullName
+ for (i = 0;i < creators.length;i += 1) {
+ creators[i].textContent = setProperties.fullName;
}
}
this.execute = function(document) {
var odtDocument = (document), member = odtDocument.getMember(memberid);
- if(!member) {
- return false
+ if (!member) {
+ return false;
}
- if(removedProperties) {
- member.removeProperties(removedProperties)
+ if (removedProperties) {
+ member.removeProperties(removedProperties);
}
- if(setProperties) {
+ if (setProperties) {
member.setProperties(setProperties);
- if(setProperties.fullName) {
- updateCreators(odtDocument)
+ if (setProperties.fullName) {
+ updateCreators(odtDocument);
}
}
odtDocument.emit(ops.Document.signalMemberUpdated, member);
- return true
+ return true;
};
this.spec = function() {
- return{optype:"UpdateMember", memberid:memberid, timestamp:timestamp, setProperties:setProperties, removedProperties:removedProperties}
- }
+ return {optype:"UpdateMember", memberid:memberid, timestamp:timestamp, setProperties:setProperties, removedProperties:removedProperties};
+ };
};
ops.OpUpdateMember.Spec;
ops.OpUpdateMember.InitSpec;
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- This file is part of WebODF.
-
- WebODF is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License (GNU AGPL)
- as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- WebODF is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with WebODF. If not, see <http://www.gnu.org/licenses/>.
- @licend
-
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.OpUpdateMetadata = function OpUpdateMetadata() {
var memberid, timestamp, setProperties, removedProperties;
this.init = function(data) {
memberid = data.memberid;
timestamp = parseInt(data.timestamp, 10);
setProperties = data.setProperties;
- removedProperties = data.removedProperties
+ removedProperties = data.removedProperties;
};
this.isEdit = true;
this.group = undefined;
this.execute = function(document) {
- var odtDocument = (document), odfContainer = odtDocument.getOdfCanvas().odfContainer(), removedPropertiesArray = [];
- if(removedProperties) {
- removedPropertiesArray = removedProperties.attributes.split(",")
+ var odtDocument = (document), odfContainer = odtDocument.getOdfCanvas().odfContainer(), removedPropertiesArray = null;
+ if (removedProperties) {
+ removedPropertiesArray = removedProperties.attributes.split(",");
}
odfContainer.setMetadata(setProperties, removedPropertiesArray);
- return true
+ odtDocument.emit(ops.OdtDocument.signalMetadataUpdated, {setProperties:setProperties !== null ? setProperties : {}, removedProperties:removedPropertiesArray !== null ? removedPropertiesArray : []});
+ return true;
};
this.spec = function() {
- return{optype:"UpdateMetadata", memberid:memberid, timestamp:timestamp, setProperties:setProperties, removedProperties:removedProperties}
- }
+ return {optype:"UpdateMetadata", memberid:memberid, timestamp:timestamp, setProperties:setProperties, removedProperties:removedProperties};
+ };
};
ops.OpUpdateMetadata.Spec;
ops.OpUpdateMetadata.InitSpec;
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.OpUpdateParagraphStyle = function OpUpdateParagraphStyle() {
var memberid, timestamp, styleName, setProperties, removedProperties, paragraphPropertiesName = "style:paragraph-properties", textPropertiesName = "style:text-properties", stylens = odf.Namespaces.stylens;
function removedAttributesFromStyleNode(node, removedAttributeNames) {
var i, attributeNameParts, attributeNameList = removedAttributeNames ? removedAttributeNames.split(",") : [];
- for(i = 0;i < attributeNameList.length;i += 1) {
+ for (i = 0;i < attributeNameList.length;i += 1) {
attributeNameParts = attributeNameList[i].split(":");
- node.removeAttributeNS((odf.Namespaces.lookupNamespaceURI(attributeNameParts[0])), attributeNameParts[1])
+ node.removeAttributeNS((odf.Namespaces.lookupNamespaceURI(attributeNameParts[0])), attributeNameParts[1]);
}
}
this.init = function(data) {
@@ -12140,146 +12183,79 @@ ops.OpUpdateParagraphStyle = function OpUpdateParagraphStyle() {
timestamp = data.timestamp;
styleName = data.styleName;
setProperties = data.setProperties;
- removedProperties = data.removedProperties
+ removedProperties = data.removedProperties;
};
this.isEdit = true;
this.group = undefined;
this.execute = function(document) {
var odtDocument = (document), formatting = odtDocument.getFormatting(), styleNode, object, paragraphPropertiesNode, textPropertiesNode;
- if(styleName !== "") {
- styleNode = odtDocument.getParagraphStyleElement(styleName)
- }else {
- styleNode = formatting.getDefaultStyleElement("paragraph")
+ if (styleName !== "") {
+ styleNode = formatting.getStyleElement(styleName, "paragraph");
+ } else {
+ styleNode = formatting.getDefaultStyleElement("paragraph");
}
- if(styleNode) {
+ if (styleNode) {
paragraphPropertiesNode = (styleNode.getElementsByTagNameNS(stylens, "paragraph-properties").item(0));
textPropertiesNode = (styleNode.getElementsByTagNameNS(stylens, "text-properties").item(0));
- if(setProperties) {
- formatting.updateStyle(styleNode, setProperties)
+ if (setProperties) {
+ formatting.updateStyle(styleNode, setProperties);
}
- if(removedProperties) {
+ if (removedProperties) {
object = (removedProperties[paragraphPropertiesName]);
- if(paragraphPropertiesNode && object) {
+ if (paragraphPropertiesNode && object) {
removedAttributesFromStyleNode(paragraphPropertiesNode, object.attributes);
- if(paragraphPropertiesNode.attributes.length === 0) {
- styleNode.removeChild(paragraphPropertiesNode)
+ if (paragraphPropertiesNode.attributes.length === 0) {
+ styleNode.removeChild(paragraphPropertiesNode);
}
}
object = (removedProperties[textPropertiesName]);
- if(textPropertiesNode && object) {
+ if (textPropertiesNode && object) {
removedAttributesFromStyleNode(textPropertiesNode, object.attributes);
- if(textPropertiesNode.attributes.length === 0) {
- styleNode.removeChild(textPropertiesNode)
+ if (textPropertiesNode.attributes.length === 0) {
+ styleNode.removeChild(textPropertiesNode);
}
}
- removedAttributesFromStyleNode(styleNode, removedProperties.attributes)
+ removedAttributesFromStyleNode(styleNode, removedProperties.attributes);
}
odtDocument.getOdfCanvas().refreshCSS();
odtDocument.emit(ops.OdtDocument.signalParagraphStyleModified, styleName);
odtDocument.getOdfCanvas().rerenderAnnotations();
- return true
+ return true;
}
- return false
+ return false;
};
this.spec = function() {
- return{optype:"UpdateParagraphStyle", memberid:memberid, timestamp:timestamp, styleName:styleName, setProperties:setProperties, removedProperties:removedProperties}
- }
+ return {optype:"UpdateParagraphStyle", memberid:memberid, timestamp:timestamp, styleName:styleName, setProperties:setProperties, removedProperties:removedProperties};
+ };
};
ops.OpUpdateParagraphStyle.Spec;
ops.OpUpdateParagraphStyle.InitSpec;
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.OperationFactory = function OperationFactory() {
var specs;
+ function construct(Constructor) {
+ return function(spec) {
+ return new Constructor;
+ };
+ }
this.register = function(specName, specConstructor) {
- specs[specName] = specConstructor
+ specs[specName] = specConstructor;
};
this.create = function(spec) {
- var op = null, Constructor = specs[spec.optype];
- if(Constructor) {
- op = new Constructor;
- op.init(spec)
+ var op = null, constructor = specs[spec.optype];
+ if (constructor) {
+ op = constructor(spec);
+ op.init(spec);
}
- return op
+ return op;
};
function init() {
- specs = {AddMember:ops.OpAddMember, UpdateMember:ops.OpUpdateMember, RemoveMember:ops.OpRemoveMember, AddCursor:ops.OpAddCursor, ApplyDirectStyling:ops.OpApplyDirectStyling, SetBlob:ops.OpSetBlob, RemoveBlob:ops.OpRemoveBlob, InsertImage:ops.OpInsertImage, InsertTable:ops.OpInsertTable, InsertText:ops.OpInsertText, RemoveText:ops.OpRemoveText, SplitParagraph:ops.OpSplitParagraph, SetParagraphStyle:ops.OpSetParagraphStyle, UpdateParagraphStyle:ops.OpUpdateParagraphStyle, AddStyle:ops.OpAddStyle,
- RemoveStyle:ops.OpRemoveStyle, MoveCursor:ops.OpMoveCursor, RemoveCursor:ops.OpRemoveCursor, AddAnnotation:ops.OpAddAnnotation, RemoveAnnotation:ops.OpRemoveAnnotation, UpdateMetadata:ops.OpUpdateMetadata, ApplyHyperlink:ops.OpApplyHyperlink, RemoveHyperlink:ops.OpRemoveHyperlink}
+ specs = {AddMember:construct(ops.OpAddMember), UpdateMember:construct(ops.OpUpdateMember), RemoveMember:construct(ops.OpRemoveMember), AddCursor:construct(ops.OpAddCursor), ApplyDirectStyling:construct(ops.OpApplyDirectStyling), SetBlob:construct(ops.OpSetBlob), RemoveBlob:construct(ops.OpRemoveBlob), InsertImage:construct(ops.OpInsertImage), InsertTable:construct(ops.OpInsertTable), InsertText:construct(ops.OpInsertText), RemoveText:construct(ops.OpRemoveText), MergeParagraph:construct(ops.OpMergeParagraph),
+ SplitParagraph:construct(ops.OpSplitParagraph), SetParagraphStyle:construct(ops.OpSetParagraphStyle), UpdateParagraphStyle:construct(ops.OpUpdateParagraphStyle), AddStyle:construct(ops.OpAddStyle), RemoveStyle:construct(ops.OpRemoveStyle), MoveCursor:construct(ops.OpMoveCursor), RemoveCursor:construct(ops.OpRemoveCursor), AddAnnotation:construct(ops.OpAddAnnotation), RemoveAnnotation:construct(ops.OpRemoveAnnotation), UpdateMetadata:construct(ops.OpUpdateMetadata), ApplyHyperlink:construct(ops.OpApplyHyperlink),
+ RemoveHyperlink:construct(ops.OpRemoveHyperlink)};
}
- init()
+ init();
};
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
+ops.OperationFactory.SpecConstructor;
ops.OperationRouter = function OperationRouter() {
};
ops.OperationRouter.prototype.setOperationFactory = function(f) {
@@ -12300,789 +12276,628 @@ ops.OperationRouter.prototype.hasSessionHostConnection = function() {
};
ops.OperationRouter.signalProcessingBatchStart = "router/batchstart";
ops.OperationRouter.signalProcessingBatchEnd = "router/batchend";
-/*
-
- Copyright (C) 2012 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.TrivialOperationRouter = function TrivialOperationRouter() {
var events = new core.EventNotifier([ops.OperationRouter.signalProcessingBatchStart, ops.OperationRouter.signalProcessingBatchEnd]), operationFactory, playbackFunction, groupIdentifier = 0;
this.setOperationFactory = function(f) {
- operationFactory = f
+ operationFactory = f;
};
this.setPlaybackFunction = function(playback_func) {
- playbackFunction = playback_func
+ playbackFunction = playback_func;
};
this.push = function(operations) {
groupIdentifier += 1;
events.emit(ops.OperationRouter.signalProcessingBatchStart, {});
operations.forEach(function(op) {
var timedOp, opspec = op.spec();
- opspec.timestamp = (new Date).getTime();
+ opspec.timestamp = Date.now();
timedOp = operationFactory.create(opspec);
timedOp.group = "g" + groupIdentifier;
- playbackFunction(timedOp)
+ playbackFunction(timedOp);
});
- events.emit(ops.OperationRouter.signalProcessingBatchEnd, {})
+ events.emit(ops.OperationRouter.signalProcessingBatchEnd, {});
};
this.close = function(cb) {
- cb()
+ cb();
};
this.subscribe = function(eventId, cb) {
- events.subscribe(eventId, cb)
+ events.subscribe(eventId, cb);
};
this.unsubscribe = function(eventId, cb) {
- events.unsubscribe(eventId, cb)
+ events.unsubscribe(eventId, cb);
};
this.hasLocalUnsyncedOps = function() {
- return false
+ return false;
};
this.hasSessionHostConnection = function() {
- return true
- }
+ return true;
+ };
};
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.Session = function Session(odfCanvas) {
var self = this, operationFactory = new ops.OperationFactory, odtDocument = new ops.OdtDocument(odfCanvas), operationRouter = null;
function forwardBatchStart(args) {
- odtDocument.emit(ops.OdtDocument.signalProcessingBatchStart, args)
+ odtDocument.emit(ops.OdtDocument.signalProcessingBatchStart, args);
}
function forwardBatchEnd(args) {
- odtDocument.emit(ops.OdtDocument.signalProcessingBatchEnd, args)
+ odtDocument.emit(ops.OdtDocument.signalProcessingBatchEnd, args);
}
this.setOperationFactory = function(opFactory) {
operationFactory = opFactory;
- if(operationRouter) {
- operationRouter.setOperationFactory(operationFactory)
+ if (operationRouter) {
+ operationRouter.setOperationFactory(operationFactory);
}
};
this.setOperationRouter = function(opRouter) {
- if(operationRouter) {
+ if (operationRouter) {
operationRouter.unsubscribe(ops.OperationRouter.signalProcessingBatchStart, forwardBatchStart);
- operationRouter.unsubscribe(ops.OperationRouter.signalProcessingBatchEnd, forwardBatchEnd)
+ operationRouter.unsubscribe(ops.OperationRouter.signalProcessingBatchEnd, forwardBatchEnd);
}
operationRouter = opRouter;
operationRouter.subscribe(ops.OperationRouter.signalProcessingBatchStart, forwardBatchStart);
operationRouter.subscribe(ops.OperationRouter.signalProcessingBatchEnd, forwardBatchEnd);
opRouter.setPlaybackFunction(function(op) {
odtDocument.emit(ops.OdtDocument.signalOperationStart, op);
- if(op.execute(odtDocument)) {
+ if (op.execute(odtDocument)) {
odtDocument.emit(ops.OdtDocument.signalOperationEnd, op);
- return true
+ return true;
}
- return false
+ return false;
});
- opRouter.setOperationFactory(operationFactory)
+ opRouter.setOperationFactory(operationFactory);
};
this.getOperationFactory = function() {
- return operationFactory
+ return operationFactory;
};
this.getOdtDocument = function() {
- return odtDocument
+ return odtDocument;
};
this.enqueue = function(ops) {
- operationRouter.push(ops)
+ operationRouter.push(ops);
};
this.close = function(callback) {
operationRouter.close(function(err) {
- if(err) {
- callback(err)
- }else {
- odtDocument.close(callback)
+ if (err) {
+ callback(err);
+ } else {
+ odtDocument.close(callback);
}
- })
+ });
};
this.destroy = function(callback) {
- odtDocument.destroy(callback)
+ odtDocument.destroy(callback);
};
function init() {
- self.setOperationRouter(new ops.TrivialOperationRouter)
+ self.setOperationRouter(new ops.TrivialOperationRouter);
}
- init()
+ init();
};
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- This file is part of WebODF.
-
- WebODF is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License (GNU AGPL)
- as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- WebODF is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with WebODF. If not, see <http://www.gnu.org/licenses/>.
- @licend
-
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.AnnotationController = function AnnotationController(session, inputMemberId) {
- var odtDocument = session.getOdtDocument(), isAnnotatable = false, eventNotifier = new core.EventNotifier([gui.AnnotationController.annotatableChanged]), officens = odf.Namespaces.officens;
- function isWithinAnnotation(node, container) {
- while(node && node !== container) {
- if(node.namespaceURI === officens && node.localName === "annotation") {
- return true
- }
- node = node.parentNode
- }
- return false
- }
+gui.AnnotationController = function AnnotationController(session, sessionConstraints, inputMemberId) {
+ var odtDocument = session.getOdtDocument(), isAnnotatable = false, eventNotifier = new core.EventNotifier([gui.AnnotationController.annotatableChanged]), odfUtils = odf.OdfUtils, NEXT = core.StepDirection.NEXT;
function updatedCachedValues() {
var cursor = odtDocument.getCursor(inputMemberId), cursorNode = cursor && cursor.getNode(), newIsAnnotatable = false;
- if(cursorNode) {
- newIsAnnotatable = !isWithinAnnotation(cursorNode, odtDocument.getRootNode())
+ if (cursorNode) {
+ newIsAnnotatable = !odfUtils.isWithinAnnotation(cursorNode, odtDocument.getRootNode());
}
- if(newIsAnnotatable !== isAnnotatable) {
+ if (newIsAnnotatable !== isAnnotatable) {
isAnnotatable = newIsAnnotatable;
- eventNotifier.emit(gui.AnnotationController.annotatableChanged, isAnnotatable)
+ eventNotifier.emit(gui.AnnotationController.annotatableChanged, isAnnotatable);
}
}
function onCursorAdded(cursor) {
- if(cursor.getMemberId() === inputMemberId) {
- updatedCachedValues()
+ if (cursor.getMemberId() === inputMemberId) {
+ updatedCachedValues();
}
}
function onCursorRemoved(memberId) {
- if(memberId === inputMemberId) {
- updatedCachedValues()
+ if (memberId === inputMemberId) {
+ updatedCachedValues();
}
}
function onCursorMoved(cursor) {
- if(cursor.getMemberId() === inputMemberId) {
- updatedCachedValues()
+ if (cursor.getMemberId() === inputMemberId) {
+ updatedCachedValues();
}
}
this.isAnnotatable = function() {
- return isAnnotatable
+ return isAnnotatable;
};
this.addAnnotation = function() {
var op = new ops.OpAddAnnotation, selection = odtDocument.getCursorSelection(inputMemberId), length = selection.length, position = selection.position;
- if(!isAnnotatable) {
- return
+ if (!isAnnotatable) {
+ return;
+ }
+ if (length === 0) {
+ length = undefined;
+ } else {
+ position = length >= 0 ? position : position + length;
+ length = Math.abs(length);
}
- position = length >= 0 ? position : position + length;
- length = Math.abs(length);
op.init({memberid:inputMemberId, position:position, length:length, name:inputMemberId + Date.now()});
- session.enqueue([op])
+ session.enqueue([op]);
};
this.removeAnnotation = function(annotationNode) {
- var startStep, endStep, op, moveCursor;
- startStep = odtDocument.convertDomPointToCursorStep(annotationNode, 0) + 1;
+ var startStep, endStep, op, moveCursor, currentUserName = odtDocument.getMember(inputMemberId).getProperties().fullName;
+ if (sessionConstraints.getState(gui.CommonConstraints.EDIT.ANNOTATIONS.ONLY_DELETE_OWN) === true) {
+ if (currentUserName !== odfUtils.getAnnotationCreator(annotationNode)) {
+ return;
+ }
+ }
+ startStep = odtDocument.convertDomPointToCursorStep(annotationNode, 0, NEXT);
endStep = odtDocument.convertDomPointToCursorStep(annotationNode, annotationNode.childNodes.length);
op = new ops.OpRemoveAnnotation;
op.init({memberid:inputMemberId, position:startStep, length:endStep - startStep});
moveCursor = new ops.OpMoveCursor;
moveCursor.init({memberid:inputMemberId, position:startStep > 0 ? startStep - 1 : startStep, length:0});
- session.enqueue([op, moveCursor])
+ session.enqueue([op, moveCursor]);
};
this.subscribe = function(eventid, cb) {
- eventNotifier.subscribe(eventid, cb)
+ eventNotifier.subscribe(eventid, cb);
};
this.unsubscribe = function(eventid, cb) {
- eventNotifier.unsubscribe(eventid, cb)
+ eventNotifier.unsubscribe(eventid, cb);
};
this.destroy = function(callback) {
odtDocument.unsubscribe(ops.Document.signalCursorAdded, onCursorAdded);
odtDocument.unsubscribe(ops.Document.signalCursorRemoved, onCursorRemoved);
odtDocument.unsubscribe(ops.Document.signalCursorMoved, onCursorMoved);
- callback()
+ callback();
};
function init() {
+ sessionConstraints.registerConstraint(gui.CommonConstraints.EDIT.ANNOTATIONS.ONLY_DELETE_OWN);
odtDocument.subscribe(ops.Document.signalCursorAdded, onCursorAdded);
odtDocument.subscribe(ops.Document.signalCursorRemoved, onCursorRemoved);
odtDocument.subscribe(ops.Document.signalCursorMoved, onCursorMoved);
- updatedCachedValues()
+ updatedCachedValues();
}
- init()
+ init();
};
gui.AnnotationController.annotatableChanged = "annotatable/changed";
-(function() {
- return gui.AnnotationController
-})();
gui.Avatar = function Avatar(parentElement, avatarInitiallyVisible) {
var self = this, handle, image, pendingImageUrl, displayShown = "block", displayHidden = "none";
this.setColor = function(color) {
- image.style.borderColor = color
+ image.style.borderColor = color;
};
this.setImageUrl = function(url) {
- if(self.isVisible()) {
- image.src = url
- }else {
- pendingImageUrl = url
+ if (self.isVisible()) {
+ image.src = url;
+ } else {
+ pendingImageUrl = url;
}
};
this.isVisible = function() {
- return handle.style.display === displayShown
+ return handle.style.display === displayShown;
};
this.show = function() {
- if(pendingImageUrl) {
+ if (pendingImageUrl) {
image.src = pendingImageUrl;
- pendingImageUrl = undefined
+ pendingImageUrl = undefined;
}
- handle.style.display = displayShown
+ handle.style.display = displayShown;
};
this.hide = function() {
- handle.style.display = displayHidden
+ handle.style.display = displayHidden;
};
this.markAsFocussed = function(isFocussed) {
- if(isFocussed) {
- handle.classList.add("active")
- }else {
- handle.classList.remove("active")
+ if (isFocussed) {
+ handle.classList.add("active");
+ } else {
+ handle.classList.remove("active");
}
};
this.destroy = function(callback) {
parentElement.removeChild(handle);
- callback()
+ callback();
};
function init() {
- var document = (parentElement.ownerDocument), htmlns = document.documentElement.namespaceURI;
- handle = (document.createElementNS(htmlns, "div"));
- image = (document.createElementNS(htmlns, "img"));
- image.width = 64;
- image.height = 64;
+ var document = (parentElement.ownerDocument);
+ handle = (document.createElement("div"));
+ image = (document.createElement("img"));
handle.appendChild(image);
- handle.style.width = "64px";
- handle.style.height = "70px";
- handle.style.position = "absolute";
- handle.style.top = "-80px";
- handle.style.left = "-34px";
handle.style.display = avatarInitiallyVisible ? displayShown : displayHidden;
handle.className = "handle";
- parentElement.appendChild(handle)
+ parentElement.appendChild(handle);
}
- init()
+ init();
};
-gui.Caret = function Caret(cursor, avatarInitiallyVisible, blinkOnRangeSelect) {
- var MIN_CARET_HEIGHT_PX = 8, DEFAULT_CARET_TOP = "5%", DEFAULT_CARET_HEIGHT = "1em", BLINK_PERIOD_MS = 500, span, avatar, cursorNode, overlayElement, domUtils = new core.DomUtils, async = new core.Async, redrawTask, blinkTask, shouldResetBlink = false, shouldCheckCaretVisibility = false, shouldUpdateCaretSize = false, state = {isFocused:false, isShown:true, visibility:"hidden"}, lastState = {isFocused:!state.isFocused, isShown:!state.isShown, visibility:"hidden"};
- function blinkCaret() {
- span.style.opacity = span.style.opacity === "0" ? "1" : "0";
- blinkTask.trigger()
+gui.StepInfo = function() {
+};
+gui.StepInfo.VisualDirection = {LEFT_TO_RIGHT:0, RIGHT_TO_LEFT:1};
+gui.StepInfo.prototype.token;
+gui.StepInfo.prototype.container = function() {
+};
+gui.StepInfo.prototype.offset = function() {
+};
+gui.StepInfo.prototype.direction;
+gui.StepInfo.prototype.visualDirection;
+gui.VisualStepScanner = function() {
+};
+gui.VisualStepScanner.prototype.token;
+gui.VisualStepScanner.prototype.process = function(stepInfo, previousRect, nextRect) {
+};
+gui.GuiStepUtils = function GuiStepUtils() {
+ var odfUtils = odf.OdfUtils, stepUtils = new odf.StepUtils, domUtils = core.DomUtils, NEXT = core.StepDirection.NEXT, LEFT_TO_RIGHT = gui.StepInfo.VisualDirection.LEFT_TO_RIGHT, RIGHT_TO_LEFT = gui.StepInfo.VisualDirection.RIGHT_TO_LEFT;
+ function getContentRect(stepIterator) {
+ var bounds = stepUtils.getContentBounds(stepIterator), range, rect = null;
+ if (bounds) {
+ if (bounds.container.nodeType === Node.TEXT_NODE) {
+ range = bounds.container.ownerDocument.createRange();
+ range.setStart(bounds.container, bounds.startOffset);
+ range.setEnd(bounds.container, bounds.endOffset);
+ rect = range.getClientRects().length > 0 ? range.getBoundingClientRect() : null;
+ if (rect && (bounds.container).data.substring(bounds.startOffset, bounds.endOffset) === " " && rect.width <= 1) {
+ rect = null;
+ }
+ range.detach();
+ } else {
+ if (odfUtils.isCharacterElement(bounds.container) || odfUtils.isCharacterFrame(bounds.container)) {
+ rect = domUtils.getBoundingClientRect(bounds.container);
+ }
+ }
+ }
+ return rect;
}
- function getCaretClientRectWithMargin(caretElement, margin) {
- var caretRect = caretElement.getBoundingClientRect();
- return{left:caretRect.left - margin.left, top:caretRect.top - margin.top, right:caretRect.right + margin.right, bottom:caretRect.bottom + margin.bottom}
+ this.getContentRect = getContentRect;
+ function moveToFilteredStep(stepIterator, direction, scanners) {
+ var isForward = direction === NEXT, leftRect, rightRect, previousRect, nextRect, destinationToken, initialToken = stepIterator.snapshot(), wasTerminated = false, stepInfo;
+ function process(terminated, scanner) {
+ if (scanner.process(stepInfo, previousRect, nextRect)) {
+ terminated = true;
+ if (!destinationToken && scanner.token) {
+ destinationToken = scanner.token;
+ }
+ }
+ return terminated;
+ }
+ do {
+ leftRect = getContentRect(stepIterator);
+ stepInfo = ({token:stepIterator.snapshot(), container:stepIterator.container, offset:stepIterator.offset, direction:direction, visualDirection:direction === NEXT ? LEFT_TO_RIGHT : RIGHT_TO_LEFT});
+ if (stepIterator.nextStep()) {
+ rightRect = getContentRect(stepIterator);
+ } else {
+ rightRect = null;
+ }
+ stepIterator.restore(stepInfo.token);
+ if (isForward) {
+ previousRect = leftRect;
+ nextRect = rightRect;
+ } else {
+ previousRect = rightRect;
+ nextRect = leftRect;
+ }
+ wasTerminated = scanners.reduce(process, false);
+ } while (!wasTerminated && stepIterator.advanceStep(direction));
+ if (!wasTerminated) {
+ scanners.forEach(function(scanner) {
+ if (!destinationToken && scanner.token) {
+ destinationToken = scanner.token;
+ }
+ });
+ }
+ stepIterator.restore(destinationToken || initialToken);
+ return Boolean(destinationToken);
}
- function length(node) {
- return node.nodeType === Node.TEXT_NODE ? node.textContent.length : node.childNodes.length
+ this.moveToFilteredStep = moveToFilteredStep;
+};
+gui.Caret = function Caret(cursor, viewport, avatarInitiallyVisible, blinkOnRangeSelect) {
+ var cursorns = "urn:webodf:names:cursor", MIN_OVERLAY_HEIGHT_PX = 8, BLINK_PERIOD_MS = 500, caretOverlay, caretElement, avatar, overlayElement, caretSizer, caretSizerRange, canvas = cursor.getDocument().getCanvas(), domUtils = core.DomUtils, guiStepUtils = new gui.GuiStepUtils, stepIterator, redrawTask, blinkTask, shouldResetBlink = false, shouldCheckCaretVisibility = false, shouldUpdateCaretSize = false, state = {isFocused:false, isShown:true, visibility:"hidden"}, lastState = {isFocused:!state.isFocused,
+ isShown:!state.isShown, visibility:"hidden"};
+ function blinkCaret() {
+ caretElement.style.opacity = caretElement.style.opacity === "0" ? "1" : "0";
+ blinkTask.trigger();
}
- function verticalOverlap(cursorNode, rangeRect) {
- var cursorRect = cursorNode.getBoundingClientRect(), intersectTop = 0, intersectBottom = 0;
- if(cursorRect && rangeRect) {
- intersectTop = Math.max(cursorRect.top, rangeRect.top);
- intersectBottom = Math.min(cursorRect.bottom, rangeRect.bottom)
- }
- return intersectBottom - intersectTop
+ function getCaretSizeFromCursor() {
+ caretSizerRange.selectNodeContents(caretSizer);
+ return caretSizerRange.getBoundingClientRect();
}
function getSelectionRect() {
- var range = cursor.getSelectedRange().cloneRange(), node = cursor.getNode(), nextRectangle, selectionRectangle = null, nodeLength;
- if(node.previousSibling) {
- nodeLength = length(node.previousSibling);
- range.setStart(node.previousSibling, nodeLength > 0 ? nodeLength - 1 : 0);
- range.setEnd(node.previousSibling, nodeLength);
- nextRectangle = range.getBoundingClientRect();
- if(nextRectangle && nextRectangle.height) {
- selectionRectangle = nextRectangle
- }
- }
- if(node.nextSibling) {
- range.setStart(node.nextSibling, 0);
- range.setEnd(node.nextSibling, length(node.nextSibling) > 0 ? 1 : 0);
- nextRectangle = range.getBoundingClientRect();
- if(nextRectangle && nextRectangle.height) {
- if(!selectionRectangle || verticalOverlap(node, nextRectangle) > verticalOverlap(node, selectionRectangle)) {
- selectionRectangle = nextRectangle
- }
- }
- }
- return selectionRectangle
- }
- function updateCaretHeightAndPosition() {
- var selectionRect = getSelectionRect(), canvas = (cursor.getDocument().getCanvas()), zoomLevel = canvas.getZoomLevel(), rootRect = domUtils.getBoundingClientRect(canvas.getSizer()), caretRect, caretStyle;
- if(selectionRect) {
- span.style.top = "0";
- caretRect = domUtils.getBoundingClientRect(span);
- if(selectionRect.height < MIN_CARET_HEIGHT_PX) {
- selectionRect = {top:selectionRect.top - (MIN_CARET_HEIGHT_PX - selectionRect.height) / 2, height:MIN_CARET_HEIGHT_PX}
- }
- span.style.height = domUtils.adaptRangeDifferenceToZoomLevel(selectionRect.height, zoomLevel) + "px";
- span.style.top = domUtils.adaptRangeDifferenceToZoomLevel(selectionRect.top - caretRect.top, zoomLevel) + "px"
- }else {
- span.style.height = DEFAULT_CARET_HEIGHT;
- span.style.top = DEFAULT_CARET_TOP
- }
- if(overlayElement) {
- caretStyle = runtime.getWindow().getComputedStyle(span, null);
- caretRect = domUtils.getBoundingClientRect(span);
- overlayElement.style.bottom = domUtils.adaptRangeDifferenceToZoomLevel(rootRect.bottom - caretRect.bottom, zoomLevel) + "px";
- overlayElement.style.left = domUtils.adaptRangeDifferenceToZoomLevel(caretRect.right - rootRect.left, zoomLevel) + "px";
- if(caretStyle.font) {
- overlayElement.style.font = caretStyle.font
- }else {
- overlayElement.style.fontStyle = caretStyle.fontStyle;
- overlayElement.style.fontVariant = caretStyle.fontVariant;
- overlayElement.style.fontWeight = caretStyle.fontWeight;
- overlayElement.style.fontSize = caretStyle.fontSize;
- overlayElement.style.lineHeight = caretStyle.lineHeight;
- overlayElement.style.fontFamily = caretStyle.fontFamily
- }
- }
- }
- function ensureVisible() {
- var canvasElement = cursor.getDocument().getCanvas().getElement(), canvasContainerElement = (canvasElement.parentNode), caretRect, canvasContainerRect, horizontalMargin = canvasContainerElement.offsetWidth - canvasContainerElement.clientWidth + 5, verticalMargin = canvasContainerElement.offsetHeight - canvasContainerElement.clientHeight + 5;
- caretRect = getCaretClientRectWithMargin(span, {top:verticalMargin, left:horizontalMargin, bottom:verticalMargin, right:horizontalMargin});
- canvasContainerRect = canvasContainerElement.getBoundingClientRect();
- if(caretRect.top < canvasContainerRect.top) {
- canvasContainerElement.scrollTop -= canvasContainerRect.top - caretRect.top
- }else {
- if(caretRect.bottom > canvasContainerRect.bottom) {
- canvasContainerElement.scrollTop += caretRect.bottom - canvasContainerRect.bottom
- }
- }
- if(caretRect.left < canvasContainerRect.left) {
- canvasContainerElement.scrollLeft -= canvasContainerRect.left - caretRect.left
- }else {
- if(caretRect.right > canvasContainerRect.right) {
- canvasContainerElement.scrollLeft += caretRect.right - canvasContainerRect.right
+ var node = cursor.getNode(), caretRectangle, nextRectangle, selectionRectangle, rootRect = (domUtils.getBoundingClientRect(canvas.getSizer())), useLeftEdge = false, width = 0;
+ node.removeAttributeNS(cursorns, "caret-sizer-active");
+ if (node.getClientRects().length > 0) {
+ selectionRectangle = getCaretSizeFromCursor();
+ width = selectionRectangle.left - domUtils.getBoundingClientRect(node).left;
+ useLeftEdge = true;
+ } else {
+ stepIterator.setPosition(node, 0);
+ selectionRectangle = guiStepUtils.getContentRect(stepIterator);
+ if (!selectionRectangle && stepIterator.nextStep()) {
+ nextRectangle = guiStepUtils.getContentRect(stepIterator);
+ if (nextRectangle) {
+ selectionRectangle = nextRectangle;
+ useLeftEdge = true;
+ }
+ }
+ if (!selectionRectangle) {
+ node.setAttributeNS(cursorns, "caret-sizer-active", "true");
+ selectionRectangle = getCaretSizeFromCursor();
+ useLeftEdge = true;
+ }
+ if (!selectionRectangle) {
+ runtime.log("WARN: No suitable client rectangle found for visual caret for " + cursor.getMemberId());
+ while (node) {
+ if ((node).getClientRects().length > 0) {
+ selectionRectangle = domUtils.getBoundingClientRect(node);
+ useLeftEdge = true;
+ break;
+ }
+ node = node.parentNode;
+ }
+ }
+ }
+ selectionRectangle = domUtils.translateRect((selectionRectangle), rootRect, canvas.getZoomLevel());
+ caretRectangle = {top:selectionRectangle.top, height:selectionRectangle.height, right:useLeftEdge ? selectionRectangle.left : selectionRectangle.right, width:domUtils.adaptRangeDifferenceToZoomLevel(width, canvas.getZoomLevel())};
+ return caretRectangle;
+ }
+ function updateOverlayHeightAndPosition() {
+ var selectionRect = getSelectionRect(), cursorStyle;
+ if (selectionRect.height < MIN_OVERLAY_HEIGHT_PX) {
+ selectionRect = {top:selectionRect.top - (MIN_OVERLAY_HEIGHT_PX - selectionRect.height) / 2, height:MIN_OVERLAY_HEIGHT_PX, right:selectionRect.right};
+ }
+ caretOverlay.style.height = selectionRect.height + "px";
+ caretOverlay.style.top = selectionRect.top + "px";
+ caretOverlay.style.left = selectionRect.right - selectionRect.width + "px";
+ caretOverlay.style.width = selectionRect.width ? selectionRect.width + "px" : "";
+ if (overlayElement) {
+ cursorStyle = runtime.getWindow().getComputedStyle(cursor.getNode(), null);
+ if (cursorStyle.font) {
+ overlayElement.style.font = cursorStyle.font;
+ } else {
+ overlayElement.style.fontStyle = cursorStyle.fontStyle;
+ overlayElement.style.fontVariant = cursorStyle.fontVariant;
+ overlayElement.style.fontWeight = cursorStyle.fontWeight;
+ overlayElement.style.fontSize = cursorStyle.fontSize;
+ overlayElement.style.lineHeight = cursorStyle.lineHeight;
+ overlayElement.style.fontFamily = cursorStyle.fontFamily;
}
}
}
function hasStateChanged(property) {
- return lastState[property] !== state[property]
+ return lastState[property] !== state[property];
}
function saveState() {
Object.keys(state).forEach(function(key) {
- lastState[key] = state[key]
- })
+ lastState[key] = state[key];
+ });
}
function updateCaret() {
- if(state.isShown === false || (cursor.getSelectionType() !== ops.OdtCursor.RangeSelection || !blinkOnRangeSelect && !cursor.getSelectedRange().collapsed)) {
+ if (state.isShown === false || cursor.getSelectionType() !== ops.OdtCursor.RangeSelection || !blinkOnRangeSelect && !cursor.getSelectedRange().collapsed) {
state.visibility = "hidden";
- span.style.visibility = "hidden";
- blinkTask.cancel()
- }else {
+ caretElement.style.visibility = "hidden";
+ blinkTask.cancel();
+ } else {
state.visibility = "visible";
- span.style.visibility = "visible";
- if(state.isFocused === false) {
- span.style.opacity = "1";
- blinkTask.cancel()
- }else {
- if(shouldResetBlink || hasStateChanged("visibility")) {
- span.style.opacity = "1";
- blinkTask.cancel()
+ caretElement.style.visibility = "visible";
+ if (state.isFocused === false) {
+ caretElement.style.opacity = "1";
+ blinkTask.cancel();
+ } else {
+ if (shouldResetBlink || hasStateChanged("visibility")) {
+ caretElement.style.opacity = "1";
+ blinkTask.cancel();
}
- blinkTask.trigger()
- }
- if(shouldUpdateCaretSize || (shouldCheckCaretVisibility || hasStateChanged("visibility"))) {
- updateCaretHeightAndPosition()
- }
- if(shouldCheckCaretVisibility) {
- ensureVisible()
+ blinkTask.trigger();
}
}
- if(hasStateChanged("isFocused")) {
- avatar.markAsFocussed(state.isFocused)
+ if (shouldUpdateCaretSize || shouldCheckCaretVisibility) {
+ updateOverlayHeightAndPosition();
+ }
+ if (state.isShown && shouldCheckCaretVisibility) {
+ viewport.scrollIntoView(caretElement.getBoundingClientRect());
+ }
+ if (hasStateChanged("isFocused")) {
+ avatar.markAsFocussed(state.isFocused);
}
saveState();
shouldResetBlink = false;
shouldCheckCaretVisibility = false;
- shouldUpdateCaretSize = false
+ shouldUpdateCaretSize = false;
}
this.handleUpdate = function() {
shouldUpdateCaretSize = true;
- if(state.visibility !== "hidden") {
- state.visibility = "hidden";
- span.style.visibility = "hidden"
- }
- redrawTask.trigger()
+ redrawTask.trigger();
};
this.refreshCursorBlinking = function() {
shouldResetBlink = true;
- redrawTask.trigger()
+ redrawTask.trigger();
};
this.setFocus = function() {
state.isFocused = true;
- redrawTask.trigger()
+ redrawTask.trigger();
};
this.removeFocus = function() {
state.isFocused = false;
- redrawTask.trigger()
+ redrawTask.trigger();
};
this.show = function() {
state.isShown = true;
- redrawTask.trigger()
+ redrawTask.trigger();
};
this.hide = function() {
state.isShown = false;
- redrawTask.trigger()
+ redrawTask.trigger();
};
this.setAvatarImageUrl = function(url) {
- avatar.setImageUrl(url)
+ avatar.setImageUrl(url);
};
this.setColor = function(newColor) {
- span.style.borderColor = newColor;
- avatar.setColor(newColor)
+ caretElement.style.borderColor = newColor;
+ avatar.setColor(newColor);
};
this.getCursor = function() {
- return cursor
+ return cursor;
};
this.getFocusElement = function() {
- return span
+ return caretElement;
};
this.toggleHandleVisibility = function() {
- if(avatar.isVisible()) {
- avatar.hide()
- }else {
- avatar.show()
+ if (avatar.isVisible()) {
+ avatar.hide();
+ } else {
+ avatar.show();
}
};
this.showHandle = function() {
- avatar.show()
+ avatar.show();
};
this.hideHandle = function() {
- avatar.hide()
+ avatar.hide();
};
this.setOverlayElement = function(element) {
overlayElement = element;
+ caretOverlay.appendChild(element);
shouldUpdateCaretSize = true;
- redrawTask.trigger()
+ redrawTask.trigger();
};
this.ensureVisible = function() {
shouldCheckCaretVisibility = true;
- redrawTask.trigger()
+ redrawTask.trigger();
+ };
+ this.getBoundingClientRect = function() {
+ return domUtils.getBoundingClientRect(caretOverlay);
};
function destroy(callback) {
- cursorNode.removeChild(span);
- callback()
+ caretOverlay.parentNode.removeChild(caretOverlay);
+ caretSizer.parentNode.removeChild(caretSizer);
+ callback();
}
this.destroy = function(callback) {
var cleanup = [redrawTask.destroy, blinkTask.destroy, avatar.destroy, destroy];
- async.destroyAll(cleanup, callback)
+ core.Async.destroyAll(cleanup, callback);
};
function init() {
- var dom = cursor.getDocument().getDOMDocument(), htmlns = dom.documentElement.namespaceURI;
- span = (dom.createElementNS(htmlns, "span"));
- span.className = "caret";
- span.style.top = DEFAULT_CARET_TOP;
- cursorNode = cursor.getNode();
- cursorNode.appendChild(span);
- avatar = new gui.Avatar(cursorNode, avatarInitiallyVisible);
- redrawTask = new core.ScheduledTask(updateCaret, 0);
- blinkTask = new core.ScheduledTask(blinkCaret, BLINK_PERIOD_MS);
- redrawTask.triggerImmediate()
- }
- init()
+ var odtDocument = (cursor.getDocument()), positionFilters = [odtDocument.createRootFilter(cursor.getMemberId()), odtDocument.getPositionFilter()], dom = odtDocument.getDOMDocument(), editinfons = "urn:webodf:names:editinfo";
+ caretSizerRange = (dom.createRange());
+ caretSizer = dom.createElement("span");
+ caretSizer.className = "webodf-caretSizer";
+ caretSizer.textContent = "|";
+ cursor.getNode().appendChild(caretSizer);
+ caretOverlay = (dom.createElement("div"));
+ caretOverlay.setAttributeNS(editinfons, "editinfo:memberid", cursor.getMemberId());
+ caretOverlay.className = "webodf-caretOverlay";
+ caretElement = (dom.createElement("div"));
+ caretElement.className = "caret";
+ caretOverlay.appendChild(caretElement);
+ avatar = new gui.Avatar(caretOverlay, avatarInitiallyVisible);
+ canvas.getSizer().appendChild(caretOverlay);
+ stepIterator = odtDocument.createStepIterator(cursor.getNode(), 0, positionFilters, odtDocument.getRootNode());
+ redrawTask = core.Task.createRedrawTask(updateCaret);
+ blinkTask = core.Task.createTimeoutTask(blinkCaret, BLINK_PERIOD_MS);
+ redrawTask.triggerImmediate();
+ }
+ init();
};
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
odf.TextSerializer = function TextSerializer() {
- var self = this, odfUtils = new odf.OdfUtils;
+ var self = this, odfUtils = odf.OdfUtils;
function serializeNode(node) {
var s = "", accept = self.filter ? self.filter.acceptNode(node) : NodeFilter.FILTER_ACCEPT, nodeType = node.nodeType, child;
- if((accept === NodeFilter.FILTER_ACCEPT || accept === NodeFilter.FILTER_SKIP) && odfUtils.isTextContentContainingNode(node)) {
+ if ((accept === NodeFilter.FILTER_ACCEPT || accept === NodeFilter.FILTER_SKIP) && odfUtils.isTextContentContainingNode(node)) {
child = node.firstChild;
- while(child) {
+ while (child) {
s += serializeNode(child);
- child = child.nextSibling
+ child = child.nextSibling;
}
}
- if(accept === NodeFilter.FILTER_ACCEPT) {
- if(nodeType === Node.ELEMENT_NODE && odfUtils.isParagraph(node)) {
- s += "\n"
- }else {
- if(nodeType === Node.TEXT_NODE && node.textContent) {
- s += node.textContent
+ if (accept === NodeFilter.FILTER_ACCEPT) {
+ if (nodeType === Node.ELEMENT_NODE && odfUtils.isParagraph(node)) {
+ s += "\n";
+ } else {
+ if (nodeType === Node.TEXT_NODE && node.textContent) {
+ s += node.textContent;
}
}
}
- return s
+ return s;
}
this.filter = null;
this.writeToString = function(node) {
var plainText;
- if(!node) {
- return""
+ if (!node) {
+ return "";
}
plainText = serializeNode(node);
- if(plainText[plainText.length - 1] === "\n") {
- plainText = plainText.substr(0, plainText.length - 1)
+ if (plainText[plainText.length - 1] === "\n") {
+ plainText = plainText.substr(0, plainText.length - 1);
}
- return plainText
- }
+ return plainText;
+ };
};
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- This file is part of WebODF.
-
- WebODF is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License (GNU AGPL)
- as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- WebODF is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with WebODF. If not, see <http://www.gnu.org/licenses/>.
- @licend
-
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
gui.MimeDataExporter = function MimeDataExporter() {
- var textSerializer, filter;
+ var textSerializer;
this.exportRangeToDataTransfer = function(dataTransfer, range) {
var document = range.startContainer.ownerDocument, serializedFragment, fragmentContainer;
fragmentContainer = document.createElement("span");
fragmentContainer.appendChild(range.cloneContents());
serializedFragment = textSerializer.writeToString(fragmentContainer);
try {
- dataTransfer.setData("text/plain", serializedFragment)
- }catch(e) {
- dataTransfer.setData("Text", serializedFragment)
+ dataTransfer.setData("text/plain", serializedFragment);
+ } catch (e) {
+ dataTransfer.setData("Text", serializedFragment);
}
};
function init() {
textSerializer = new odf.TextSerializer;
- filter = new odf.OdfNodeFilter;
- textSerializer.filter = filter
+ textSerializer.filter = new odf.OdfNodeFilter;
}
- init()
+ init();
};
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
gui.Clipboard = function Clipboard(mimeDataExporter) {
this.setDataFromRange = function(e, range) {
var result, clipboard = e.clipboardData, window = runtime.getWindow();
- if(!clipboard && window) {
- clipboard = window.clipboardData
+ if (!clipboard && window) {
+ clipboard = window.clipboardData;
}
- if(clipboard) {
+ if (clipboard) {
result = true;
mimeDataExporter.exportRangeToDataTransfer((clipboard), range);
- e.preventDefault()
- }else {
- result = false
+ e.preventDefault();
+ } else {
+ result = false;
}
- return result
- }
+ return result;
+ };
+};
+gui.SessionContext = function(session, inputMemberId) {
+ var odtDocument = session.getOdtDocument(), odfUtils = odf.OdfUtils;
+ this.isLocalCursorWithinOwnAnnotation = function() {
+ var cursor = odtDocument.getCursor(inputMemberId), cursorNode, currentUserName, parentAnnotation;
+ if (!cursor) {
+ return false;
+ }
+ cursorNode = cursor && cursor.getNode();
+ currentUserName = odtDocument.getMember(inputMemberId).getProperties().fullName;
+ parentAnnotation = odfUtils.getParentAnnotation(cursorNode, odtDocument.getRootNode());
+ if (parentAnnotation && odfUtils.getAnnotationCreator(parentAnnotation) === currentUserName) {
+ return true;
+ }
+ return false;
+ };
};
-/*
-
- Copyright (C) 2012-2014 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
gui.StyleSummary = function StyleSummary(styles) {
var propertyValues = {};
function getPropertyValues(section, propertyName) {
var cacheKey = section + "|" + propertyName, values;
- if(!propertyValues.hasOwnProperty(cacheKey)) {
+ if (!propertyValues.hasOwnProperty(cacheKey)) {
values = [];
styles.forEach(function(style) {
- var styleSection = style[section], value = styleSection && styleSection[propertyName];
- if(values.indexOf(value) === -1) {
- values.push(value)
+ var styleSection = (style.styleProperties[section]), value = styleSection && styleSection[propertyName];
+ if (values.indexOf(value) === -1) {
+ values.push(value);
}
});
- propertyValues[cacheKey] = values
+ propertyValues[cacheKey] = values;
}
- return propertyValues[cacheKey]
+ return propertyValues[cacheKey];
}
this.getPropertyValues = getPropertyValues;
function lazilyLoaded(section, propertyName, acceptedPropertyValues) {
return function() {
var existingPropertyValues = getPropertyValues(section, propertyName);
return acceptedPropertyValues.length >= existingPropertyValues.length && existingPropertyValues.every(function(v) {
- return acceptedPropertyValues.indexOf(v) !== -1
- })
- }
+ return acceptedPropertyValues.indexOf(v) !== -1;
+ });
+ };
}
function getCommonValue(section, propertyName) {
var values = getPropertyValues(section, propertyName);
- return values.length === 1 ? values[0] : undefined
+ return values.length === 1 ? values[0] : undefined;
}
this.getCommonValue = getCommonValue;
this.isBold = lazilyLoaded("style:text-properties", "fo:font-weight", ["bold"]);
@@ -13091,365 +12906,357 @@ gui.StyleSummary = function StyleSummary(styles) {
this.hasStrikeThrough = lazilyLoaded("style:text-properties", "style:text-line-through-style", ["solid"]);
this.fontSize = function() {
var stringFontSize = getCommonValue("style:text-properties", "fo:font-size");
- return(stringFontSize && parseFloat(stringFontSize))
+ return (stringFontSize && parseFloat(stringFontSize));
};
this.fontName = function() {
- return getCommonValue("style:text-properties", "style:font-name")
+ return getCommonValue("style:text-properties", "style:font-name");
};
this.isAlignedLeft = lazilyLoaded("style:paragraph-properties", "fo:text-align", ["left", "start"]);
this.isAlignedCenter = lazilyLoaded("style:paragraph-properties", "fo:text-align", ["center"]);
this.isAlignedRight = lazilyLoaded("style:paragraph-properties", "fo:text-align", ["right", "end"]);
this.isAlignedJustified = lazilyLoaded("style:paragraph-properties", "fo:text-align", ["justify"]);
this.text = {isBold:this.isBold, isItalic:this.isItalic, hasUnderline:this.hasUnderline, hasStrikeThrough:this.hasStrikeThrough, fontSize:this.fontSize, fontName:this.fontName};
- this.paragraph = {isAlignedLeft:this.isAlignedLeft, isAlignedCenter:this.isAlignedCenter, isAlignedRight:this.isAlignedRight, isAlignedJustified:this.isAlignedJustified}
+ this.paragraph = {isAlignedLeft:this.isAlignedLeft, isAlignedCenter:this.isAlignedCenter, isAlignedRight:this.isAlignedRight, isAlignedJustified:this.isAlignedJustified};
};
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.DirectFormattingController = function DirectFormattingController(session, inputMemberId, objectNameGenerator, directParagraphStylingEnabled) {
- var self = this, odtDocument = session.getOdtDocument(), utils = new core.Utils, odfUtils = new odf.OdfUtils, eventNotifier = new core.EventNotifier([gui.DirectFormattingController.textStylingChanged, gui.DirectFormattingController.paragraphStylingChanged]), textns = odf.Namespaces.textns, FILTER_ACCEPT = core.PositionFilter.FilterResult.FILTER_ACCEPT, directCursorStyleProperties, selectionAppliedStyles = [], selectionStylesSummary = new gui.StyleSummary(selectionAppliedStyles);
+gui.DirectFormattingController = function DirectFormattingController(session, sessionConstraints, sessionContext, inputMemberId, objectNameGenerator, directTextStylingEnabled, directParagraphStylingEnabled) {
+ var self = this, odtDocument = session.getOdtDocument(), utils = new core.Utils, odfUtils = odf.OdfUtils, eventNotifier = new core.EventNotifier([gui.DirectFormattingController.enabledChanged, gui.DirectFormattingController.textStylingChanged, gui.DirectFormattingController.paragraphStylingChanged]), textns = odf.Namespaces.textns, NEXT = core.StepDirection.NEXT, directCursorStyleProperties = null, lastSignalledSelectionInfo, selectionInfoCache;
+ function getCachedStyleSummary() {
+ return selectionInfoCache.value().styleSummary;
+ }
+ function getCachedEnabledFeatures() {
+ return selectionInfoCache.value().enabledFeatures;
+ }
+ this.enabledFeatures = getCachedEnabledFeatures;
function getNodes(range) {
var container, nodes;
- if(range.collapsed) {
+ if (range.collapsed) {
container = range.startContainer;
- if(container.hasChildNodes() && range.startOffset < container.childNodes.length) {
- container = container.childNodes.item(range.startOffset)
+ if (container.hasChildNodes() && range.startOffset < container.childNodes.length) {
+ container = container.childNodes.item(range.startOffset);
}
- nodes = [container]
- }else {
- nodes = odfUtils.getTextNodes(range, true)
+ nodes = [container];
+ } else {
+ nodes = odfUtils.getTextElements(range, true, false);
}
- return nodes
+ return nodes;
}
- function getSelectionAppliedStyles() {
- var cursor = odtDocument.getCursor(inputMemberId), range = cursor && cursor.getSelectedRange(), nodes = range ? getNodes(range) : [], selectionStyles = odtDocument.getFormatting().getAppliedStyles(nodes);
- if(selectionStyles[0] && directCursorStyleProperties) {
- selectionStyles[0] = utils.mergeObjects(selectionStyles[0], (directCursorStyleProperties))
+ function getSelectionInfo() {
+ var cursor = odtDocument.getCursor(inputMemberId), range = cursor && cursor.getSelectedRange(), nodes = [], selectionStyles = [], selectionContainsText = true, enabledFeatures = {directTextStyling:true, directParagraphStyling:true};
+ if (range) {
+ nodes = getNodes(range);
+ if (nodes.length === 0) {
+ nodes = [range.startContainer, range.endContainer];
+ selectionContainsText = false;
+ }
+ selectionStyles = odtDocument.getFormatting().getAppliedStyles(nodes);
+ }
+ if (selectionStyles[0] !== undefined && directCursorStyleProperties) {
+ selectionStyles[0].styleProperties = utils.mergeObjects(selectionStyles[0].styleProperties, directCursorStyleProperties);
+ }
+ if (sessionConstraints.getState(gui.CommonConstraints.EDIT.REVIEW_MODE) === true) {
+ enabledFeatures.directTextStyling = enabledFeatures.directParagraphStyling = (sessionContext.isLocalCursorWithinOwnAnnotation());
}
- return selectionStyles
+ if (enabledFeatures.directTextStyling) {
+ enabledFeatures.directTextStyling = selectionContainsText && cursor !== undefined && cursor.getSelectionType() === ops.OdtCursor.RangeSelection;
+ }
+ return ({enabledFeatures:enabledFeatures, appliedStyles:selectionStyles, styleSummary:new gui.StyleSummary(selectionStyles)});
}
function createDiff(oldSummary, newSummary) {
var diffMap = {};
Object.keys(oldSummary).forEach(function(funcName) {
var oldValue = oldSummary[funcName](), newValue = newSummary[funcName]();
- if(oldValue !== newValue) {
- diffMap[funcName] = newValue
+ if (oldValue !== newValue) {
+ diffMap[funcName] = newValue;
}
});
- return diffMap
+ return diffMap;
}
- function updateSelectionStylesInfo() {
- var textStyleDiff, paragraphStyleDiff, newSelectionStylesSummary;
- selectionAppliedStyles = getSelectionAppliedStyles();
- newSelectionStylesSummary = new gui.StyleSummary(selectionAppliedStyles);
- textStyleDiff = createDiff(selectionStylesSummary.text, newSelectionStylesSummary.text);
- paragraphStyleDiff = createDiff(selectionStylesSummary.paragraph, newSelectionStylesSummary.paragraph);
- selectionStylesSummary = newSelectionStylesSummary;
- if(Object.keys(textStyleDiff).length > 0) {
- eventNotifier.emit(gui.DirectFormattingController.textStylingChanged, textStyleDiff)
+ function emitSelectionChanges() {
+ var textStyleDiff, paragraphStyleDiff, lastStyleSummary = lastSignalledSelectionInfo.styleSummary, newSelectionInfo = selectionInfoCache.value(), newSelectionStylesSummary = newSelectionInfo.styleSummary, lastEnabledFeatures = lastSignalledSelectionInfo.enabledFeatures, newEnabledFeatures = newSelectionInfo.enabledFeatures, enabledFeaturesChanged;
+ textStyleDiff = createDiff(lastStyleSummary.text, newSelectionStylesSummary.text);
+ paragraphStyleDiff = createDiff(lastStyleSummary.paragraph, newSelectionStylesSummary.paragraph);
+ enabledFeaturesChanged = !(newEnabledFeatures.directTextStyling === lastEnabledFeatures.directTextStyling && newEnabledFeatures.directParagraphStyling === lastEnabledFeatures.directParagraphStyling);
+ lastSignalledSelectionInfo = newSelectionInfo;
+ if (enabledFeaturesChanged) {
+ eventNotifier.emit(gui.DirectFormattingController.enabledChanged, newEnabledFeatures);
+ }
+ if (Object.keys(textStyleDiff).length > 0) {
+ eventNotifier.emit(gui.DirectFormattingController.textStylingChanged, textStyleDiff);
}
- if(Object.keys(paragraphStyleDiff).length > 0) {
- eventNotifier.emit(gui.DirectFormattingController.paragraphStylingChanged, paragraphStyleDiff)
+ if (Object.keys(paragraphStyleDiff).length > 0) {
+ eventNotifier.emit(gui.DirectFormattingController.paragraphStylingChanged, paragraphStyleDiff);
}
}
+ function forceSelectionInfoRefresh() {
+ selectionInfoCache.reset();
+ emitSelectionChanges();
+ }
function onCursorEvent(cursorOrId) {
var cursorMemberId = typeof cursorOrId === "string" ? cursorOrId : cursorOrId.getMemberId();
- if(cursorMemberId === inputMemberId) {
- updateSelectionStylesInfo()
+ if (cursorMemberId === inputMemberId) {
+ selectionInfoCache.reset();
}
}
function onParagraphStyleModified() {
- updateSelectionStylesInfo()
+ selectionInfoCache.reset();
}
function onParagraphChanged(args) {
var cursor = odtDocument.getCursor(inputMemberId), p = args.paragraphElement;
- if(cursor && odtDocument.getParagraphElement(cursor.getNode()) === p) {
- updateSelectionStylesInfo()
+ if (cursor && odfUtils.getParagraphElement(cursor.getNode()) === p) {
+ selectionInfoCache.reset();
}
}
function toggle(predicate, toggleMethod) {
toggleMethod(!predicate());
- return true
+ return true;
}
function formatTextSelection(textProperties) {
+ if (!getCachedEnabledFeatures().directTextStyling) {
+ return;
+ }
var selection = odtDocument.getCursorSelection(inputMemberId), op, properties = {"style:text-properties":textProperties};
- if(selection.length !== 0) {
+ if (selection.length !== 0) {
op = new ops.OpApplyDirectStyling;
op.init({memberid:inputMemberId, position:selection.position, length:selection.length, setProperties:properties});
- session.enqueue([op])
- }else {
+ session.enqueue([op]);
+ } else {
directCursorStyleProperties = utils.mergeObjects(directCursorStyleProperties || {}, properties);
- updateSelectionStylesInfo()
+ selectionInfoCache.reset();
}
}
this.formatTextSelection = formatTextSelection;
function applyTextPropertyToSelection(propertyName, propertyValue) {
var textProperties = {};
textProperties[propertyName] = propertyValue;
- formatTextSelection(textProperties)
+ formatTextSelection(textProperties);
}
this.createCursorStyleOp = function(position, length, useCachedStyle) {
- var styleOp = null, properties = useCachedStyle ? selectionAppliedStyles[0] : directCursorStyleProperties;
- if(properties && properties["style:text-properties"]) {
+ var styleOp = null, appliedStyles, properties = directCursorStyleProperties;
+ if (useCachedStyle) {
+ appliedStyles = selectionInfoCache.value().appliedStyles[0];
+ properties = appliedStyles && appliedStyles.styleProperties;
+ }
+ if (properties && properties["style:text-properties"]) {
styleOp = new ops.OpApplyDirectStyling;
styleOp.init({memberid:inputMemberId, position:position, length:length, setProperties:{"style:text-properties":properties["style:text-properties"]}});
directCursorStyleProperties = null;
- updateSelectionStylesInfo()
+ selectionInfoCache.reset();
}
- return styleOp
+ return styleOp;
};
function clearCursorStyle(op) {
var spec = op.spec();
- if(directCursorStyleProperties && spec.memberid === inputMemberId) {
- if(spec.optype !== "SplitParagraph") {
+ if (directCursorStyleProperties && spec.memberid === inputMemberId) {
+ if (spec.optype !== "SplitParagraph") {
directCursorStyleProperties = null;
- updateSelectionStylesInfo()
+ selectionInfoCache.reset();
}
}
}
function setBold(checked) {
var value = checked ? "bold" : "normal";
- applyTextPropertyToSelection("fo:font-weight", value)
+ applyTextPropertyToSelection("fo:font-weight", value);
}
this.setBold = setBold;
function setItalic(checked) {
var value = checked ? "italic" : "normal";
- applyTextPropertyToSelection("fo:font-style", value)
+ applyTextPropertyToSelection("fo:font-style", value);
}
this.setItalic = setItalic;
function setHasUnderline(checked) {
var value = checked ? "solid" : "none";
- applyTextPropertyToSelection("style:text-underline-style", value)
+ applyTextPropertyToSelection("style:text-underline-style", value);
}
this.setHasUnderline = setHasUnderline;
function setHasStrikethrough(checked) {
var value = checked ? "solid" : "none";
- applyTextPropertyToSelection("style:text-line-through-style", value)
+ applyTextPropertyToSelection("style:text-line-through-style", value);
}
this.setHasStrikethrough = setHasStrikethrough;
function setFontSize(value) {
- applyTextPropertyToSelection("fo:font-size", value + "pt")
+ applyTextPropertyToSelection("fo:font-size", value + "pt");
}
this.setFontSize = setFontSize;
function setFontName(value) {
- applyTextPropertyToSelection("style:font-name", value)
+ applyTextPropertyToSelection("style:font-name", value);
}
this.setFontName = setFontName;
this.getAppliedStyles = function() {
- return selectionAppliedStyles
+ return selectionInfoCache.value().appliedStyles;
};
this.toggleBold = toggle.bind(self, function() {
- return selectionStylesSummary.isBold()
+ return getCachedStyleSummary().isBold();
}, setBold);
this.toggleItalic = toggle.bind(self, function() {
- return selectionStylesSummary.isItalic()
+ return getCachedStyleSummary().isItalic();
}, setItalic);
this.toggleUnderline = toggle.bind(self, function() {
- return selectionStylesSummary.hasUnderline()
+ return getCachedStyleSummary().hasUnderline();
}, setHasUnderline);
this.toggleStrikethrough = toggle.bind(self, function() {
- return selectionStylesSummary.hasStrikeThrough()
+ return getCachedStyleSummary().hasStrikeThrough();
}, setHasStrikethrough);
this.isBold = function() {
- return selectionStylesSummary.isBold()
+ return getCachedStyleSummary().isBold();
};
this.isItalic = function() {
- return selectionStylesSummary.isItalic()
+ return getCachedStyleSummary().isItalic();
};
this.hasUnderline = function() {
- return selectionStylesSummary.hasUnderline()
+ return getCachedStyleSummary().hasUnderline();
};
this.hasStrikeThrough = function() {
- return selectionStylesSummary.hasStrikeThrough()
+ return getCachedStyleSummary().hasStrikeThrough();
};
this.fontSize = function() {
- return selectionStylesSummary.fontSize()
+ return getCachedStyleSummary().fontSize();
};
this.fontName = function() {
- return selectionStylesSummary.fontName()
+ return getCachedStyleSummary().fontName();
};
this.isAlignedLeft = function() {
- return selectionStylesSummary.isAlignedLeft()
+ return getCachedStyleSummary().isAlignedLeft();
};
this.isAlignedCenter = function() {
- return selectionStylesSummary.isAlignedCenter()
+ return getCachedStyleSummary().isAlignedCenter();
};
this.isAlignedRight = function() {
- return selectionStylesSummary.isAlignedRight()
+ return getCachedStyleSummary().isAlignedRight();
};
this.isAlignedJustified = function() {
- return selectionStylesSummary.isAlignedJustified()
+ return getCachedStyleSummary().isAlignedJustified();
};
- function roundUp(step) {
- return step === ops.StepsTranslator.NEXT_STEP
- }
function getOwnProperty(obj, key) {
- return obj.hasOwnProperty(key) ? obj[key] : undefined
+ return obj.hasOwnProperty(key) ? obj[key] : undefined;
}
function applyParagraphDirectStyling(applyDirectStyling) {
+ if (!getCachedEnabledFeatures().directParagraphStyling) {
+ return;
+ }
var range = odtDocument.getCursor(inputMemberId).getSelectedRange(), paragraphs = odfUtils.getParagraphElements(range), formatting = odtDocument.getFormatting(), operations = [], derivedStyleNames = {}, defaultStyleName;
paragraphs.forEach(function(paragraph) {
- var paragraphStartPoint = odtDocument.convertDomPointToCursorStep(paragraph, 0, roundUp), paragraphStyleName = paragraph.getAttributeNS(odf.Namespaces.textns, "style-name"), newParagraphStyleName, opAddStyle, opSetParagraphStyle, paragraphProperties;
- if(paragraphStyleName) {
- newParagraphStyleName = getOwnProperty(derivedStyleNames, paragraphStyleName)
- }else {
- newParagraphStyleName = defaultStyleName
+ var paragraphStartPoint = odtDocument.convertDomPointToCursorStep(paragraph, 0, NEXT), paragraphStyleName = paragraph.getAttributeNS(odf.Namespaces.textns, "style-name"), newParagraphStyleName, opAddStyle, opSetParagraphStyle, paragraphProperties;
+ if (paragraphStyleName) {
+ newParagraphStyleName = getOwnProperty(derivedStyleNames, paragraphStyleName);
+ } else {
+ newParagraphStyleName = defaultStyleName;
}
- if(!newParagraphStyleName) {
+ if (!newParagraphStyleName) {
newParagraphStyleName = objectNameGenerator.generateStyleName();
- if(paragraphStyleName) {
+ if (paragraphStyleName) {
derivedStyleNames[paragraphStyleName] = newParagraphStyleName;
- paragraphProperties = formatting.createDerivedStyleObject(paragraphStyleName, "paragraph", {})
- }else {
+ paragraphProperties = formatting.createDerivedStyleObject(paragraphStyleName, "paragraph", {});
+ } else {
defaultStyleName = newParagraphStyleName;
- paragraphProperties = {}
+ paragraphProperties = {};
}
paragraphProperties = applyDirectStyling(paragraphProperties);
opAddStyle = new ops.OpAddStyle;
opAddStyle.init({memberid:inputMemberId, styleName:newParagraphStyleName.toString(), styleFamily:"paragraph", isAutomaticStyle:true, setProperties:paragraphProperties});
- operations.push(opAddStyle)
+ operations.push(opAddStyle);
}
opSetParagraphStyle = new ops.OpSetParagraphStyle;
opSetParagraphStyle.init({memberid:inputMemberId, styleName:newParagraphStyleName.toString(), position:paragraphStartPoint});
- operations.push(opSetParagraphStyle)
+ operations.push(opSetParagraphStyle);
});
- session.enqueue(operations)
+ session.enqueue(operations);
}
function applySimpleParagraphDirectStyling(styleOverrides) {
applyParagraphDirectStyling(function(paragraphStyle) {
- return utils.mergeObjects(paragraphStyle, styleOverrides)
- })
+ return (utils.mergeObjects(paragraphStyle, styleOverrides));
+ });
}
function alignParagraph(alignment) {
- applySimpleParagraphDirectStyling({"style:paragraph-properties":{"fo:text-align":alignment}})
+ applySimpleParagraphDirectStyling({"style:paragraph-properties":{"fo:text-align":alignment}});
}
this.alignParagraphLeft = function() {
alignParagraph("left");
- return true
+ return true;
};
this.alignParagraphCenter = function() {
alignParagraph("center");
- return true
+ return true;
};
this.alignParagraphRight = function() {
alignParagraph("right");
- return true
+ return true;
};
this.alignParagraphJustified = function() {
alignParagraph("justify");
- return true
+ return true;
};
function modifyParagraphIndent(direction, paragraphStyle) {
var tabStopDistance = odtDocument.getFormatting().getDefaultTabStopDistance(), paragraphProperties = paragraphStyle["style:paragraph-properties"], indentValue, indent, newIndent;
- if(paragraphProperties) {
- indentValue = paragraphProperties["fo:margin-left"];
- if(indentValue) {
- indent = odfUtils.parseLength(indentValue)
- }
+ if (paragraphProperties) {
+ indentValue = (paragraphProperties["fo:margin-left"]);
+ indent = odfUtils.parseLength(indentValue);
}
- if(indent && indent.unit === tabStopDistance.unit) {
- newIndent = indent.value + direction * tabStopDistance.value + indent.unit
- }else {
- newIndent = direction * tabStopDistance.value + tabStopDistance.unit
+ if (indent && indent.unit === tabStopDistance.unit) {
+ newIndent = indent.value + direction * tabStopDistance.value + indent.unit;
+ } else {
+ newIndent = direction * tabStopDistance.value + tabStopDistance.unit;
}
- return utils.mergeObjects(paragraphStyle, {"style:paragraph-properties":{"fo:margin-left":newIndent}})
+ return (utils.mergeObjects(paragraphStyle, {"style:paragraph-properties":{"fo:margin-left":newIndent}}));
}
this.indent = function() {
applyParagraphDirectStyling(modifyParagraphIndent.bind(null, 1));
- return true
+ return true;
};
this.outdent = function() {
applyParagraphDirectStyling(modifyParagraphIndent.bind(null, -1));
- return true
+ return true;
};
function isSelectionAtTheEndOfLastParagraph(range, paragraphNode) {
- var iterator = gui.SelectionMover.createPositionIterator(paragraphNode), rootConstrainedFilter = new core.PositionFilterChain;
- rootConstrainedFilter.addFilter(odtDocument.getPositionFilter());
- rootConstrainedFilter.addFilter(odtDocument.createRootFilter(inputMemberId));
- iterator.setUnfilteredPosition((range.endContainer), range.endOffset);
- while(iterator.nextPosition()) {
- if(rootConstrainedFilter.acceptPosition(iterator) === FILTER_ACCEPT) {
- return odtDocument.getParagraphElement(iterator.getCurrentNode()) !== paragraphNode
- }
- }
- return true
+ var stepIterator, filters = [odtDocument.getPositionFilter(), odtDocument.createRootFilter(inputMemberId)];
+ stepIterator = odtDocument.createStepIterator((range.endContainer), range.endOffset, filters, paragraphNode);
+ return stepIterator.nextStep() === false;
}
function isTextStyleDifferentFromFirstParagraph(range, paragraphNode) {
- var textNodes = getNodes(range), textStyle = odtDocument.getFormatting().getAppliedStyles(textNodes)[0], paragraphStyle = odtDocument.getFormatting().getAppliedStylesForElement(paragraphNode);
- if(!textStyle || (textStyle["style:family"] !== "text" || !textStyle["style:text-properties"])) {
- return false
+ var textNodes = getNodes(range), selectedNodes = textNodes.length === 0 ? [range.startContainer] : textNodes, appliedTextStyles = odtDocument.getFormatting().getAppliedStyles(selectedNodes), textStyle = appliedTextStyles.length > 0 ? appliedTextStyles[0].styleProperties : undefined, paragraphStyle = odtDocument.getFormatting().getAppliedStylesForElement(paragraphNode).styleProperties;
+ if (!textStyle || textStyle["style:family"] !== "text" || !textStyle["style:text-properties"]) {
+ return false;
}
- if(!paragraphStyle || !paragraphStyle["style:text-properties"]) {
- return true
+ if (!paragraphStyle || !paragraphStyle["style:text-properties"]) {
+ return true;
}
textStyle = (textStyle["style:text-properties"]);
paragraphStyle = (paragraphStyle["style:text-properties"]);
- return!Object.keys(textStyle).every(function(key) {
- return textStyle[key] === paragraphStyle[key]
- })
+ return !Object.keys(textStyle).every(function(key) {
+ return textStyle[key] === paragraphStyle[key];
+ });
}
this.createParagraphStyleOps = function(position) {
- var cursor = odtDocument.getCursor(inputMemberId), range = cursor.getSelectedRange(), operations = [], op, startNode, endNode, paragraphNode, properties, parentStyleName, styleName;
- if(cursor.hasForwardSelection()) {
+ if (!getCachedEnabledFeatures().directParagraphStyling) {
+ return [];
+ }
+ var cursor = odtDocument.getCursor(inputMemberId), range = cursor.getSelectedRange(), operations = [], op, startNode, endNode, paragraphNode, appliedStyles, properties, parentStyleName, styleName;
+ if (cursor.hasForwardSelection()) {
startNode = cursor.getAnchorNode();
- endNode = cursor.getNode()
- }else {
+ endNode = cursor.getNode();
+ } else {
startNode = cursor.getNode();
- endNode = cursor.getAnchorNode()
+ endNode = cursor.getAnchorNode();
}
- paragraphNode = (odtDocument.getParagraphElement(endNode));
+ paragraphNode = (odfUtils.getParagraphElement(endNode));
runtime.assert(Boolean(paragraphNode), "DirectFormattingController: Cursor outside paragraph");
- if(!isSelectionAtTheEndOfLastParagraph(range, paragraphNode)) {
- return operations
+ if (!isSelectionAtTheEndOfLastParagraph(range, paragraphNode)) {
+ return operations;
}
- if(endNode !== startNode) {
- paragraphNode = (odtDocument.getParagraphElement(startNode))
+ if (endNode !== startNode) {
+ paragraphNode = (odfUtils.getParagraphElement(startNode));
}
- if(!directCursorStyleProperties && !isTextStyleDifferentFromFirstParagraph(range, paragraphNode)) {
- return operations
+ if (!directCursorStyleProperties && !isTextStyleDifferentFromFirstParagraph(range, paragraphNode)) {
+ return operations;
}
- properties = selectionAppliedStyles[0];
- if(!properties) {
- return operations
+ appliedStyles = selectionInfoCache.value().appliedStyles[0];
+ properties = appliedStyles && appliedStyles.styleProperties;
+ if (!properties) {
+ return operations;
}
parentStyleName = paragraphNode.getAttributeNS(textns, "style-name");
- if(parentStyleName) {
+ if (parentStyleName) {
properties = {"style:text-properties":properties["style:text-properties"]};
- properties = odtDocument.getFormatting().createDerivedStyleObject(parentStyleName, "paragraph", properties)
+ properties = odtDocument.getFormatting().createDerivedStyleObject(parentStyleName, "paragraph", properties);
}
styleName = objectNameGenerator.generateStyleName();
op = new ops.OpAddStyle;
@@ -13458,13 +13265,13 @@ gui.DirectFormattingController = function DirectFormattingController(session, in
op = new ops.OpSetParagraphStyle;
op.init({memberid:inputMemberId, styleName:styleName, position:position});
operations.push(op);
- return operations
+ return operations;
};
this.subscribe = function(eventid, cb) {
- eventNotifier.subscribe(eventid, cb)
+ eventNotifier.subscribe(eventid, cb);
};
this.unsubscribe = function(eventid, cb) {
- eventNotifier.unsubscribe(eventid, cb)
+ eventNotifier.unsubscribe(eventid, cb);
};
this.destroy = function(callback) {
odtDocument.unsubscribe(ops.Document.signalCursorAdded, onCursorEvent);
@@ -13473,10 +13280,21 @@ gui.DirectFormattingController = function DirectFormattingController(session, in
odtDocument.unsubscribe(ops.OdtDocument.signalParagraphStyleModified, onParagraphStyleModified);
odtDocument.unsubscribe(ops.OdtDocument.signalParagraphChanged, onParagraphChanged);
odtDocument.unsubscribe(ops.OdtDocument.signalOperationEnd, clearCursorStyle);
- callback()
+ odtDocument.unsubscribe(ops.OdtDocument.signalProcessingBatchEnd, emitSelectionChanges);
+ sessionConstraints.unsubscribe(gui.CommonConstraints.EDIT.REVIEW_MODE, forceSelectionInfoRefresh);
+ callback();
};
function emptyFunction() {
}
+ function emptyBoolFunction() {
+ return false;
+ }
+ function emptyFalseReturningFunction() {
+ return false;
+ }
+ function getCachedSelectionInfo() {
+ return selectionInfoCache.value();
+ }
function init() {
odtDocument.subscribe(ops.Document.signalCursorAdded, onCursorEvent);
odtDocument.subscribe(ops.Document.signalCursorRemoved, onCursorEvent);
@@ -13484,470 +13302,709 @@ gui.DirectFormattingController = function DirectFormattingController(session, in
odtDocument.subscribe(ops.OdtDocument.signalParagraphStyleModified, onParagraphStyleModified);
odtDocument.subscribe(ops.OdtDocument.signalParagraphChanged, onParagraphChanged);
odtDocument.subscribe(ops.OdtDocument.signalOperationEnd, clearCursorStyle);
- updateSelectionStylesInfo();
- if(!directParagraphStylingEnabled) {
- self.alignParagraphCenter = emptyFunction;
- self.alignParagraphJustified = emptyFunction;
- self.alignParagraphLeft = emptyFunction;
- self.alignParagraphRight = emptyFunction;
+ odtDocument.subscribe(ops.OdtDocument.signalProcessingBatchEnd, emitSelectionChanges);
+ sessionConstraints.subscribe(gui.CommonConstraints.EDIT.REVIEW_MODE, forceSelectionInfoRefresh);
+ selectionInfoCache = new core.LazyProperty(getSelectionInfo);
+ lastSignalledSelectionInfo = getCachedSelectionInfo();
+ if (!directTextStylingEnabled) {
+ self.formatTextSelection = emptyFunction;
+ self.setBold = emptyFunction;
+ self.setItalic = emptyFunction;
+ self.setHasUnderline = emptyFunction;
+ self.setHasStrikethrough = emptyFunction;
+ self.setFontSize = emptyFunction;
+ self.setFontName = emptyFunction;
+ self.toggleBold = emptyFalseReturningFunction;
+ self.toggleItalic = emptyFalseReturningFunction;
+ self.toggleUnderline = emptyFalseReturningFunction;
+ self.toggleStrikethrough = emptyFalseReturningFunction;
+ }
+ if (!directParagraphStylingEnabled) {
+ self.alignParagraphCenter = emptyBoolFunction;
+ self.alignParagraphJustified = emptyBoolFunction;
+ self.alignParagraphLeft = emptyBoolFunction;
+ self.alignParagraphRight = emptyBoolFunction;
self.createParagraphStyleOps = function() {
- return[]
+ return [];
};
- self.indent = emptyFunction;
- self.outdent = emptyFunction
+ self.indent = emptyBoolFunction;
+ self.outdent = emptyBoolFunction;
}
}
- init()
+ init();
};
+gui.DirectFormattingController.enabledChanged = "enabled/changed";
gui.DirectFormattingController.textStylingChanged = "textStyling/changed";
gui.DirectFormattingController.paragraphStylingChanged = "paragraphStyling/changed";
-(function() {
- return gui.DirectFormattingController
-})();
-gui.HyperlinkClickHandler = function HyperlinkClickHandler(getRootNode) {
- var webodfns = "urn:webodf:names:helper", links = "links", inactive = "inactive", None = gui.HyperlinkClickHandler.Modifier.None, Ctrl = gui.HyperlinkClickHandler.Modifier.Ctrl, Meta = gui.HyperlinkClickHandler.Modifier.Meta, odfUtils = new odf.OdfUtils, xpath = xmldom.XPath, modifier = None;
+gui.DirectFormattingController.SelectionInfo = function() {
+ this.enabledFeatures;
+ this.appliedStyles;
+ this.styleSummary;
+};
+gui.KeyboardHandler = function KeyboardHandler() {
+ var modifier = gui.KeyboardHandler.Modifier, defaultBinding = null, bindings = {};
+ function getModifiers(e) {
+ var modifiers = modifier.None;
+ if (e.metaKey) {
+ modifiers |= modifier.Meta;
+ }
+ if (e.ctrlKey) {
+ modifiers |= modifier.Ctrl;
+ }
+ if (e.altKey) {
+ modifiers |= modifier.Alt;
+ }
+ if (e.shiftKey) {
+ modifiers |= modifier.Shift;
+ }
+ return modifiers;
+ }
+ function getKeyCombo(keyCode, modifiers) {
+ if (!modifiers) {
+ modifiers = modifier.None;
+ }
+ switch(keyCode) {
+ case gui.KeyboardHandler.KeyCode.LeftMeta:
+ ;
+ case gui.KeyboardHandler.KeyCode.RightMeta:
+ ;
+ case gui.KeyboardHandler.KeyCode.MetaInMozilla:
+ modifiers |= modifier.Meta;
+ break;
+ case gui.KeyboardHandler.KeyCode.Ctrl:
+ modifiers |= modifier.Ctrl;
+ break;
+ case gui.KeyboardHandler.KeyCode.Alt:
+ modifiers |= modifier.Alt;
+ break;
+ case gui.KeyboardHandler.KeyCode.Shift:
+ modifiers |= modifier.Shift;
+ break;
+ }
+ return keyCode + ":" + modifiers;
+ }
+ this.setDefault = function(callback) {
+ defaultBinding = callback;
+ };
+ this.bind = function(keyCode, modifiers, callback, overwrite) {
+ var keyCombo = getKeyCombo(keyCode, modifiers);
+ runtime.assert(overwrite || bindings.hasOwnProperty(keyCombo) === false, "tried to overwrite the callback handler of key combo: " + keyCombo);
+ bindings[keyCombo] = callback;
+ };
+ this.unbind = function(keyCode, modifiers) {
+ var keyCombo = getKeyCombo(keyCode, modifiers);
+ delete bindings[keyCombo];
+ };
+ this.reset = function() {
+ defaultBinding = null;
+ bindings = {};
+ };
+ this.handleEvent = function(e) {
+ var keyCombo = getKeyCombo(e.keyCode, getModifiers(e)), callback = bindings[keyCombo], handled = false;
+ if (callback) {
+ handled = callback();
+ } else {
+ if (defaultBinding !== null) {
+ handled = defaultBinding(e);
+ }
+ }
+ if (handled) {
+ if (e.preventDefault) {
+ e.preventDefault();
+ } else {
+ e.returnValue = false;
+ }
+ }
+ };
+};
+gui.KeyboardHandler.Modifier = {None:0, Meta:1, Ctrl:2, Alt:4, CtrlAlt:6, Shift:8, MetaShift:9, CtrlShift:10, AltShift:12};
+gui.KeyboardHandler.KeyCode = {Backspace:8, Tab:9, Clear:12, Enter:13, Shift:16, Ctrl:17, Alt:18, End:35, Home:36, Left:37, Up:38, Right:39, Down:40, Delete:46, A:65, B:66, C:67, D:68, E:69, F:70, G:71, H:72, I:73, J:74, K:75, L:76, M:77, N:78, O:79, P:80, Q:81, R:82, S:83, T:84, U:85, V:86, W:87, X:88, Y:89, Z:90, LeftMeta:91, RightMeta:93, MetaInMozilla:224};
+gui.HyperlinkClickHandler = function HyperlinkClickHandler(getContainer, keyDownHandler, keyUpHandler) {
+ var inactiveLinksCssClass = "webodf-inactiveLinks", modifier = gui.KeyboardHandler.Modifier, keyCode = gui.KeyboardHandler.KeyCode, xpath = xmldom.XPath, odfUtils = odf.OdfUtils, window = (runtime.getWindow()), activeModifier = modifier.None, activeKeyBindings = [];
+ runtime.assert(window !== null, "Expected to be run in an environment which has a global window, like a browser.");
function getHyperlinkElement(node) {
- while(node !== null) {
- if(odfUtils.isHyperlink(node)) {
- return(node)
+ while (node !== null) {
+ if (odfUtils.isHyperlink(node)) {
+ return (node);
}
- if(odfUtils.isParagraph(node)) {
- break
+ if (odfUtils.isParagraph(node)) {
+ break;
}
- node = node.parentNode
+ node = node.parentNode;
}
- return null
+ return null;
}
this.handleClick = function(e) {
- var target = e.target || e.srcElement, modifierPressed, linkElement, url, rootNode, bookmarks;
- if(e.ctrlKey) {
- modifierPressed = Ctrl
- }else {
- if(e.metaKey) {
- modifierPressed = Meta
+ var target = e.target || e.srcElement, pressedModifier, linkElement, url, rootNode, bookmarks;
+ if (e.ctrlKey) {
+ pressedModifier = modifier.Ctrl;
+ } else {
+ if (e.metaKey) {
+ pressedModifier = modifier.Meta;
}
}
- if(modifier !== None && modifier !== modifierPressed) {
- return
+ if (activeModifier !== modifier.None && activeModifier !== pressedModifier) {
+ return;
}
linkElement = getHyperlinkElement((target));
- if(!linkElement) {
- return
+ if (!linkElement) {
+ return;
}
url = odfUtils.getHyperlinkTarget(linkElement);
- if(url === "") {
- return
+ if (url === "") {
+ return;
}
- if(url[0] === "#") {
+ if (url[0] === "#") {
url = url.substring(1);
- rootNode = (getRootNode());
+ rootNode = getContainer();
bookmarks = xpath.getODFElementsWithXPath(rootNode, "//text:bookmark-start[@text:name='" + url + "']", odf.Namespaces.lookupNamespaceURI);
- if(bookmarks.length === 0) {
- bookmarks = xpath.getODFElementsWithXPath(rootNode, "//text:bookmark[@text:name='" + url + "']", odf.Namespaces.lookupNamespaceURI)
+ if (bookmarks.length === 0) {
+ bookmarks = xpath.getODFElementsWithXPath(rootNode, "//text:bookmark[@text:name='" + url + "']", odf.Namespaces.lookupNamespaceURI);
}
- if(bookmarks.length > 0) {
- bookmarks[0].scrollIntoView(true)
+ if (bookmarks.length > 0) {
+ bookmarks[0].scrollIntoView(true);
}
- }else {
- if(/^\s*(javascript|data):/.test(url)) {
- runtime.log("WARN:", "potentially malicious URL ignored")
- }else {
- runtime.getWindow().open(url)
+ } else {
+ if (/^\s*(javascript|data):/.test(url)) {
+ runtime.log("WARN:", "potentially malicious URL ignored");
+ } else {
+ window.open(url);
}
}
- if(e.preventDefault) {
- e.preventDefault()
- }else {
- e.returnValue = false
+ if (e.preventDefault) {
+ e.preventDefault();
+ } else {
+ e.returnValue = false;
}
};
function showPointerCursor() {
- getRootNode().removeAttributeNS(webodfns, links)
+ var container = getContainer();
+ runtime.assert(Boolean(container.classList), "Document container has no classList element");
+ container.classList.remove(inactiveLinksCssClass);
}
- this.showPointerCursor = showPointerCursor;
function showTextCursor() {
- getRootNode().setAttributeNS(webodfns, links, inactive)
+ var container = getContainer();
+ runtime.assert(Boolean(container.classList), "Document container has no classList element");
+ container.classList.add(inactiveLinksCssClass);
+ }
+ function cleanupEventBindings() {
+ window.removeEventListener("focus", showTextCursor, false);
+ activeKeyBindings.forEach(function(boundShortcut) {
+ keyDownHandler.unbind(boundShortcut.keyCode, boundShortcut.modifier);
+ keyUpHandler.unbind(boundShortcut.keyCode, boundShortcut.modifier);
+ });
+ activeKeyBindings.length = 0;
+ }
+ function bindEvents(modifierKey) {
+ cleanupEventBindings();
+ if (modifierKey !== modifier.None) {
+ window.addEventListener("focus", showTextCursor, false);
+ switch(modifierKey) {
+ case modifier.Ctrl:
+ activeKeyBindings.push({keyCode:keyCode.Ctrl, modifier:modifier.None});
+ break;
+ case modifier.Meta:
+ activeKeyBindings.push({keyCode:keyCode.LeftMeta, modifier:modifier.None});
+ activeKeyBindings.push({keyCode:keyCode.RightMeta, modifier:modifier.None});
+ activeKeyBindings.push({keyCode:keyCode.MetaInMozilla, modifier:modifier.None});
+ break;
+ }
+ activeKeyBindings.forEach(function(boundShortcut) {
+ keyDownHandler.bind(boundShortcut.keyCode, boundShortcut.modifier, showPointerCursor);
+ keyUpHandler.bind(boundShortcut.keyCode, boundShortcut.modifier, showTextCursor);
+ });
+ }
}
- this.showTextCursor = showTextCursor;
this.setModifier = function(value) {
- modifier = value;
- if(modifier !== None) {
- showTextCursor()
- }else {
- showPointerCursor()
+ if (activeModifier === value) {
+ return;
}
- }
-};
-gui.HyperlinkClickHandler.Modifier = {None:0, Ctrl:1, Meta:2};
-gui.HyperlinkController = function HyperlinkController(session, inputMemberId) {
- var odfUtils = new odf.OdfUtils, odtDocument = session.getOdtDocument();
- function addHyperlink(hyperlink, insertionText) {
- var selection = odtDocument.getCursorSelection(inputMemberId), op = new ops.OpApplyHyperlink, operations = [];
- if(selection.length === 0 || insertionText) {
- insertionText = insertionText || hyperlink;
- op = new ops.OpInsertText;
- op.init({memberid:inputMemberId, position:selection.position, text:insertionText});
- selection.length = insertionText.length;
- operations.push(op)
+ runtime.assert(value === modifier.None || value === modifier.Ctrl || value === modifier.Meta, "Unsupported KeyboardHandler.Modifier value: " + value);
+ activeModifier = value;
+ if (activeModifier !== modifier.None) {
+ showTextCursor();
+ } else {
+ showPointerCursor();
}
- op = new ops.OpApplyHyperlink;
- op.init({memberid:inputMemberId, position:selection.position, length:selection.length, hyperlink:hyperlink});
- operations.push(op);
- session.enqueue(operations)
- }
- this.addHyperlink = addHyperlink;
- function removeHyperlinks() {
- var iterator = gui.SelectionMover.createPositionIterator(odtDocument.getRootNode()), selectedRange = odtDocument.getCursor(inputMemberId).getSelectedRange(), links = odfUtils.getHyperlinkElements(selectedRange), removeEntireLink = selectedRange.collapsed && links.length === 1, domRange = odtDocument.getDOMDocument().createRange(), operations = [], cursorRange, firstLink, lastLink, offset, op;
- if(links.length === 0) {
- return
+ bindEvents(activeModifier);
+ };
+ this.getModifier = function() {
+ return activeModifier;
+ };
+ this.destroy = function(callback) {
+ showTextCursor();
+ cleanupEventBindings();
+ callback();
+ };
+};
+gui.EventManager = function EventManager(odtDocument) {
+ var window = (runtime.getWindow()), bindToDirectHandler = {"beforecut":true, "beforepaste":true, "longpress":true, "drag":true, "dragstop":true}, bindToWindow = {"mousedown":true, "mouseup":true, "focus":true}, compoundEvents = {}, eventDelegates = {}, eventTrap, canvasElement = (odtDocument.getCanvas().getElement()), eventManager = this, longPressTimers = {}, LONGPRESS_DURATION = 400;
+ function EventDelegate(eventName) {
+ var self = this, recentEvents = [], subscribers = new core.EventNotifier([eventName]);
+ function listenEvent(eventTarget, eventType, eventHandler) {
+ var onVariant, bound = false;
+ onVariant = "on" + eventType;
+ if (eventTarget.attachEvent) {
+ eventTarget.attachEvent(onVariant, eventHandler);
+ bound = true;
+ }
+ if (!bound && eventTarget.addEventListener) {
+ eventTarget.addEventListener(eventType, eventHandler, false);
+ bound = true;
+ }
+ if ((!bound || bindToDirectHandler[eventType]) && eventTarget.hasOwnProperty(onVariant)) {
+ eventTarget[onVariant] = eventHandler;
+ }
}
- links.forEach(function(link) {
- domRange.selectNodeContents(link);
- cursorRange = odtDocument.convertDomToCursorRange({anchorNode:(domRange.startContainer), anchorOffset:domRange.startOffset, focusNode:(domRange.endContainer), focusOffset:domRange.endOffset});
- op = new ops.OpRemoveHyperlink;
- op.init({memberid:inputMemberId, position:cursorRange.position, length:cursorRange.length});
- operations.push(op)
- });
- if(!removeEntireLink) {
- firstLink = (links[0]);
- if(selectedRange.comparePoint(firstLink, 0) === -1) {
- domRange.setStart(firstLink, 0);
- domRange.setEnd(selectedRange.startContainer, selectedRange.startOffset);
- cursorRange = odtDocument.convertDomToCursorRange({anchorNode:(domRange.startContainer), anchorOffset:domRange.startOffset, focusNode:(domRange.endContainer), focusOffset:domRange.endOffset});
- if(cursorRange.length > 0) {
- op = new ops.OpApplyHyperlink;
- (op).init({memberid:inputMemberId, position:cursorRange.position, length:cursorRange.length, hyperlink:odfUtils.getHyperlinkTarget(firstLink)});
- operations.push(op)
- }
+ function removeEvent(eventTarget, eventType, eventHandler) {
+ var onVariant = "on" + eventType;
+ if ((eventTarget).detachEvent) {
+ (eventTarget).detachEvent(onVariant, eventHandler);
}
- lastLink = (links[links.length - 1]);
- iterator.moveToEndOfNode(lastLink);
- offset = iterator.unfilteredDomOffset();
- if(selectedRange.comparePoint(lastLink, offset) === 1) {
- domRange.setStart(selectedRange.endContainer, selectedRange.endOffset);
- domRange.setEnd(lastLink, offset);
- cursorRange = odtDocument.convertDomToCursorRange({anchorNode:(domRange.startContainer), anchorOffset:domRange.startOffset, focusNode:(domRange.endContainer), focusOffset:domRange.endOffset});
- if(cursorRange.length > 0) {
- op = new ops.OpApplyHyperlink;
- (op).init({memberid:inputMemberId, position:cursorRange.position, length:cursorRange.length, hyperlink:odfUtils.getHyperlinkTarget(lastLink)});
- operations.push(op)
- }
+ if (eventTarget.removeEventListener) {
+ eventTarget.removeEventListener(eventType, eventHandler, false);
+ }
+ if (eventTarget[onVariant] === eventHandler) {
+ eventTarget[onVariant] = null;
}
}
- session.enqueue(operations);
- domRange.detach()
- }
- this.removeHyperlinks = removeHyperlinks
-};
-gui.EventManager = function EventManager(odtDocument) {
- var window = (runtime.getWindow()), bindToDirectHandler = {"beforecut":true, "beforepaste":true, "longpress":true, "drag":true, "dragstop":true}, bindToWindow = {"mousedown":true, "mouseup":true, "focus":true}, compoundEvents = {}, eventDelegates = {}, eventTrap, canvasElement = (odtDocument.getCanvas().getElement()), eventManager = this, longPressTimers = {}, LONGPRESS_DURATION = 400;
- function EventDelegate() {
- var self = this, recentEvents = [];
- this.filters = [];
- this.handlers = [];
- this.handleEvent = function(e) {
- if(recentEvents.indexOf(e) === -1) {
+ function handleEvent(e) {
+ if (recentEvents.indexOf(e) === -1) {
recentEvents.push(e);
- if(self.filters.every(function(filter) {
- return filter(e)
+ if (self.filters.every(function(filter) {
+ return filter(e);
})) {
- self.handlers.forEach(function(handler) {
- handler(e)
- })
+ try {
+ subscribers.emit(eventName, e);
+ } catch (err) {
+ runtime.log("Error occurred while processing " + eventName + ":\n" + err.message + "\n" + err.stack);
+ }
}
runtime.setTimeout(function() {
- recentEvents.splice(recentEvents.indexOf(e), 1)
- }, 0)
+ recentEvents.splice(recentEvents.indexOf(e), 1);
+ }, 0);
+ }
+ }
+ this.filters = [];
+ this.subscribe = function(cb) {
+ subscribers.subscribe(eventName, cb);
+ };
+ this.unsubscribe = function(cb) {
+ subscribers.unsubscribe(eventName, cb);
+ };
+ this.destroy = function() {
+ removeEvent(window, eventName, handleEvent);
+ removeEvent(eventTrap, eventName, handleEvent);
+ removeEvent(canvasElement, eventName, handleEvent);
+ };
+ function init() {
+ if (bindToWindow[eventName]) {
+ listenEvent(window, eventName, handleEvent);
}
+ listenEvent(eventTrap, eventName, handleEvent);
+ listenEvent(canvasElement, eventName, handleEvent);
}
+ init();
}
function CompoundEvent(eventName, dependencies, eventProxy) {
- var cachedState = {}, events = new core.EventNotifier(["eventTriggered"]);
+ var cachedState = {}, subscribers = new core.EventNotifier([eventName]);
function subscribedProxy(event) {
eventProxy(event, cachedState, function(compoundEventInstance) {
compoundEventInstance.type = eventName;
- events.emit("eventTriggered", compoundEventInstance)
- })
+ subscribers.emit(eventName, compoundEventInstance);
+ });
}
this.subscribe = function(cb) {
- events.subscribe("eventTriggered", cb)
+ subscribers.subscribe(eventName, cb);
};
this.unsubscribe = function(cb) {
- events.unsubscribe("eventTriggered", cb)
+ subscribers.unsubscribe(eventName, cb);
};
this.destroy = function() {
dependencies.forEach(function(eventName) {
- eventManager.unsubscribe(eventName, subscribedProxy)
- })
+ eventManager.unsubscribe(eventName, subscribedProxy);
+ });
};
function init() {
dependencies.forEach(function(eventName) {
- eventManager.subscribe(eventName, subscribedProxy)
- })
+ eventManager.subscribe(eventName, subscribedProxy);
+ });
}
- init()
+ init();
}
function clearTimeout(timer) {
runtime.clearTimeout(timer);
- delete longPressTimers[timer]
+ delete longPressTimers[timer];
}
function setTimeout(fn, duration) {
var timer = runtime.setTimeout(function() {
fn();
- clearTimeout(timer)
+ clearTimeout(timer);
}, duration);
longPressTimers[timer] = true;
- return timer
+ return timer;
}
function getTarget(e) {
- return(e.target) || (e.srcElement || null)
+ return (e.target) || e.srcElement || null;
}
function emitLongPressEvent(event, cachedState, callback) {
var touchEvent = (event), fingers = (touchEvent.touches.length), touch = (touchEvent.touches[0]), timer = (cachedState).timer;
- if(event.type === "touchmove" || event.type === "touchend") {
- if(timer) {
- clearTimeout(timer)
- }
- }else {
- if(event.type === "touchstart") {
- if(fingers !== 1) {
- runtime.clearTimeout(timer)
- }else {
+ if (event.type === "touchmove" || event.type === "touchend") {
+ if (timer) {
+ clearTimeout(timer);
+ }
+ } else {
+ if (event.type === "touchstart") {
+ if (fingers !== 1) {
+ runtime.clearTimeout(timer);
+ } else {
timer = setTimeout(function() {
- callback({clientX:touch.clientX, clientY:touch.clientY, pageX:touch.pageX, pageY:touch.pageY, target:getTarget(event), detail:1})
- }, LONGPRESS_DURATION)
+ callback({clientX:touch.clientX, clientY:touch.clientY, pageX:touch.pageX, pageY:touch.pageY, target:getTarget(event), detail:1});
+ }, LONGPRESS_DURATION);
}
}
}
- cachedState.timer = timer
+ cachedState.timer = timer;
}
function emitDragEvent(event, cachedState, callback) {
var touchEvent = (event), fingers = (touchEvent.touches.length), touch = (touchEvent.touches[0]), target = (getTarget(event)), cachedTarget = (cachedState).target;
- if(fingers !== 1 || event.type === "touchend") {
- cachedTarget = null
- }else {
- if(event.type === "touchstart" && target.getAttribute("class") === "draggable") {
- cachedTarget = target
- }else {
- if(event.type === "touchmove" && cachedTarget) {
+ if (fingers !== 1 || event.type === "touchend") {
+ cachedTarget = null;
+ } else {
+ if (event.type === "touchstart" && target.getAttribute("class") === "webodf-draggable") {
+ cachedTarget = target;
+ } else {
+ if (event.type === "touchmove" && cachedTarget) {
event.preventDefault();
event.stopPropagation();
- callback({clientX:touch.clientX, clientY:touch.clientY, pageX:touch.pageX, pageY:touch.pageY, target:cachedTarget, detail:1})
+ callback({clientX:touch.clientX, clientY:touch.clientY, pageX:touch.pageX, pageY:touch.pageY, target:cachedTarget, detail:1});
}
}
}
- cachedState.target = cachedTarget
+ cachedState.target = cachedTarget;
}
function emitDragStopEvent(event, cachedState, callback) {
var touchEvent = (event), target = (getTarget(event)), touch, dragging = (cachedState).dragging;
- if(event.type === "drag") {
- dragging = true
- }else {
- if(event.type === "touchend" && dragging) {
+ if (event.type === "drag") {
+ dragging = true;
+ } else {
+ if (event.type === "touchend" && dragging) {
dragging = false;
touch = (touchEvent.changedTouches[0]);
- callback({clientX:touch.clientX, clientY:touch.clientY, pageX:touch.pageX, pageY:touch.pageY, target:target, detail:1})
+ callback({clientX:touch.clientX, clientY:touch.clientY, pageX:touch.pageX, pageY:touch.pageY, target:target, detail:1});
}
}
- cachedState.dragging = dragging
+ cachedState.dragging = dragging;
}
function declareTouchEnabled() {
canvasElement.classList.add("webodf-touchEnabled");
- eventManager.unsubscribe("touchstart", declareTouchEnabled)
+ eventManager.unsubscribe("touchstart", declareTouchEnabled);
}
function WindowScrollState(window) {
var x = window.scrollX, y = window.scrollY;
this.restore = function() {
- if(window.scrollX !== x || window.scrollY !== y) {
- window.scrollTo(x, y)
+ if (window.scrollX !== x || window.scrollY !== y) {
+ window.scrollTo(x, y);
}
- }
+ };
}
function ElementScrollState(element) {
var top = element.scrollTop, left = element.scrollLeft;
this.restore = function() {
- if(element.scrollTop !== top || element.scrollLeft !== left) {
+ if (element.scrollTop !== top || element.scrollLeft !== left) {
element.scrollTop = top;
- element.scrollLeft = left
+ element.scrollLeft = left;
}
- }
- }
- function listenEvent(eventTarget, eventType, eventHandler) {
- var onVariant, bound = false;
- if(compoundEvents.hasOwnProperty(eventType)) {
- compoundEvents[eventType].subscribe(eventHandler);
- return
- }
- onVariant = "on" + eventType;
- if(eventTarget.attachEvent) {
- eventTarget.attachEvent(onVariant, eventHandler);
- bound = true
- }
- if(!bound && eventTarget.addEventListener) {
- eventTarget.addEventListener(eventType, eventHandler, false);
- bound = true
- }
- if((!bound || bindToDirectHandler[eventType]) && eventTarget.hasOwnProperty(onVariant)) {
- eventTarget[onVariant] = eventHandler
- }
+ };
}
function getDelegateForEvent(eventName, shouldCreate) {
- var delegate = eventDelegates[eventName] || null;
- if(!delegate && shouldCreate) {
- delegate = eventDelegates[eventName] = new EventDelegate;
- if(bindToWindow[eventName]) {
- listenEvent(window, eventName, delegate.handleEvent)
- }
- listenEvent(eventTrap, eventName, delegate.handleEvent);
- listenEvent(canvasElement, eventName, delegate.handleEvent)
+ var delegate = eventDelegates[eventName] || compoundEvents[eventName] || null;
+ if (!delegate && shouldCreate) {
+ delegate = eventDelegates[eventName] = new EventDelegate(eventName);
}
- return delegate
+ return delegate;
}
this.addFilter = function(eventName, filter) {
var delegate = getDelegateForEvent(eventName, true);
- delegate.filters.push(filter)
+ delegate.filters.push(filter);
};
this.removeFilter = function(eventName, filter) {
var delegate = getDelegateForEvent(eventName, true), index = delegate.filters.indexOf(filter);
- if(index !== -1) {
- delegate.filters.splice(index, 1)
+ if (index !== -1) {
+ delegate.filters.splice(index, 1);
}
};
- this.subscribe = function(eventName, handler) {
+ function subscribe(eventName, handler) {
var delegate = getDelegateForEvent(eventName, true);
- delegate.handlers.push(handler)
- };
- this.unsubscribe = function(eventName, handler) {
- var delegate = getDelegateForEvent(eventName, false), handlerIndex = delegate && delegate.handlers.indexOf(handler);
- if(delegate && handlerIndex !== -1) {
- delegate.handlers.splice(handlerIndex, 1)
+ delegate.subscribe(handler);
+ }
+ this.subscribe = subscribe;
+ function unsubscribe(eventName, handler) {
+ var delegate = getDelegateForEvent(eventName, false);
+ if (delegate) {
+ delegate.unsubscribe(handler);
}
- };
+ }
+ this.unsubscribe = unsubscribe;
function hasFocus() {
- return odtDocument.getDOMDocument().activeElement === eventTrap
+ return odtDocument.getDOMDocument().activeElement === eventTrap;
}
this.hasFocus = hasFocus;
+ function disableTrapSelection() {
+ if (hasFocus()) {
+ eventTrap.blur();
+ }
+ eventTrap.setAttribute("disabled", "true");
+ }
+ function enableTrapSelection() {
+ eventTrap.removeAttribute("disabled");
+ }
function findScrollableParents(element) {
var scrollParents = [];
- while(element) {
- if(element.scrollWidth > element.clientWidth || element.scrollHeight > element.clientHeight) {
- scrollParents.push(new ElementScrollState(element))
+ while (element) {
+ if (element.scrollWidth > element.clientWidth || element.scrollHeight > element.clientHeight) {
+ scrollParents.push(new ElementScrollState(element));
}
- element = (element.parentNode)
+ element = (element.parentNode);
}
scrollParents.push(new WindowScrollState(window));
- return scrollParents
+ return scrollParents;
}
- this.focus = function() {
+ function focus() {
var scrollParents;
- if(!hasFocus()) {
+ if (!hasFocus()) {
scrollParents = findScrollableParents(eventTrap);
+ enableTrapSelection();
eventTrap.focus();
scrollParents.forEach(function(scrollParent) {
- scrollParent.restore()
- })
+ scrollParent.restore();
+ });
}
- };
+ }
+ this.focus = focus;
this.getEventTrap = function() {
- return eventTrap
+ return eventTrap;
};
- this.blur = function() {
- if(hasFocus()) {
- eventTrap.blur()
+ this.setEditing = function(editable) {
+ var hadFocus = hasFocus();
+ if (hadFocus) {
+ eventTrap.blur();
+ }
+ if (editable) {
+ eventTrap.removeAttribute("readOnly");
+ } else {
+ eventTrap.setAttribute("readOnly", "true");
+ }
+ if (hadFocus) {
+ focus();
}
};
this.destroy = function(callback) {
+ unsubscribe("touchstart", declareTouchEnabled);
Object.keys(longPressTimers).forEach(function(timer) {
- clearTimeout(parseInt(timer, 10))
+ clearTimeout(parseInt(timer, 10));
});
longPressTimers.length = 0;
Object.keys(compoundEvents).forEach(function(compoundEventName) {
- compoundEvents[compoundEventName].destroy()
+ compoundEvents[compoundEventName].destroy();
});
compoundEvents = {};
- eventManager.unsubscribe("touchstart", declareTouchEnabled);
+ unsubscribe("mousedown", disableTrapSelection);
+ unsubscribe("mouseup", enableTrapSelection);
+ unsubscribe("contextmenu", enableTrapSelection);
+ Object.keys(eventDelegates).forEach(function(eventName) {
+ eventDelegates[eventName].destroy();
+ });
+ eventDelegates = {};
eventTrap.parentNode.removeChild(eventTrap);
- callback()
+ callback();
};
function init() {
var sizerElement = odtDocument.getOdfCanvas().getSizer(), doc = sizerElement.ownerDocument;
runtime.assert(Boolean(window), "EventManager requires a window object to operate correctly");
- eventTrap = (doc.createElement("input"));
+ eventTrap = (doc.createElement("textarea"));
eventTrap.id = "eventTrap";
- eventTrap.setAttribute("tabindex", -1);
+ eventTrap.setAttribute("tabindex", "-1");
+ eventTrap.setAttribute("readOnly", "true");
+ eventTrap.setAttribute("rows", "1");
sizerElement.appendChild(eventTrap);
+ subscribe("mousedown", disableTrapSelection);
+ subscribe("mouseup", enableTrapSelection);
+ subscribe("contextmenu", enableTrapSelection);
compoundEvents.longpress = new CompoundEvent("longpress", ["touchstart", "touchmove", "touchend"], emitLongPressEvent);
compoundEvents.drag = new CompoundEvent("drag", ["touchstart", "touchmove", "touchend"], emitDragEvent);
compoundEvents.dragstop = new CompoundEvent("dragstop", ["drag", "touchend"], emitDragStopEvent);
- eventManager.subscribe("touchstart", declareTouchEnabled)
+ subscribe("touchstart", declareTouchEnabled);
}
- init()
+ init();
};
-/*
-
- Copyright (C) 2014 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- This file is part of WebODF.
-
- WebODF is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License (GNU AGPL)
- as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- WebODF is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with WebODF. If not, see <http://www.gnu.org/licenses/>.
- @licend
-
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
gui.IOSSafariSupport = function(eventManager) {
var window = runtime.getWindow(), eventTrap = eventManager.getEventTrap();
function suppressFocusScrollIfKeyboardOpen() {
- if(window.innerHeight !== window.outerHeight) {
+ if (window.innerHeight !== window.outerHeight) {
eventTrap.style.display = "none";
runtime.requestAnimationFrame(function() {
- eventTrap.style.display = "block"
- })
+ eventTrap.style.display = "block";
+ });
}
}
this.destroy = function(callback) {
eventManager.unsubscribe("focus", suppressFocusScrollIfKeyboardOpen);
eventTrap.removeAttribute("autocapitalize");
eventTrap.style.WebkitTransform = "";
- callback()
+ callback();
};
function init() {
eventManager.subscribe("focus", suppressFocusScrollIfKeyboardOpen);
eventTrap.setAttribute("autocapitalize", "off");
- eventTrap.style.WebkitTransform = "translateX(-10000px)"
+ eventTrap.style.WebkitTransform = "translateX(-10000px)";
}
- init()
+ init();
};
-gui.ImageController = function ImageController(session, inputMemberId, objectNameGenerator) {
- var cmPerPixel = 0.0264583333333334, fileExtensionByMimetype = {"image/gif":".gif", "image/jpeg":".jpg", "image/png":".png"}, textns = odf.Namespaces.textns, odtDocument = session.getOdtDocument(), formatting = odtDocument.getFormatting(), paragraphStyleToPageContentSizeMap = {};
+gui.HyperlinkController = function HyperlinkController(session, sessionConstraints, sessionContext, inputMemberId) {
+ var odfUtils = odf.OdfUtils, odtDocument = session.getOdtDocument(), eventNotifier = new core.EventNotifier([gui.HyperlinkController.enabledChanged]), isEnabled = false;
+ function updateEnabledState() {
+ var newIsEnabled = true;
+ if (sessionConstraints.getState(gui.CommonConstraints.EDIT.REVIEW_MODE) === true) {
+ newIsEnabled = (sessionContext.isLocalCursorWithinOwnAnnotation());
+ }
+ if (newIsEnabled !== isEnabled) {
+ isEnabled = newIsEnabled;
+ eventNotifier.emit(gui.HyperlinkController.enabledChanged, isEnabled);
+ }
+ }
+ function onCursorEvent(cursor) {
+ if (cursor.getMemberId() === inputMemberId) {
+ updateEnabledState();
+ }
+ }
+ this.isEnabled = function() {
+ return isEnabled;
+ };
+ this.subscribe = function(eventid, cb) {
+ eventNotifier.subscribe(eventid, cb);
+ };
+ this.unsubscribe = function(eventid, cb) {
+ eventNotifier.unsubscribe(eventid, cb);
+ };
+ function addHyperlink(hyperlink, insertionText) {
+ if (!isEnabled) {
+ return;
+ }
+ var selection = odtDocument.getCursorSelection(inputMemberId), op = new ops.OpApplyHyperlink, operations = [];
+ if (selection.length === 0 || insertionText) {
+ insertionText = insertionText || hyperlink;
+ op = new ops.OpInsertText;
+ op.init({memberid:inputMemberId, position:selection.position, text:insertionText});
+ selection.length = insertionText.length;
+ operations.push(op);
+ }
+ op = new ops.OpApplyHyperlink;
+ op.init({memberid:inputMemberId, position:selection.position, length:selection.length, hyperlink:hyperlink});
+ operations.push(op);
+ session.enqueue(operations);
+ }
+ this.addHyperlink = addHyperlink;
+ function removeHyperlinks() {
+ if (!isEnabled) {
+ return;
+ }
+ var iterator = odtDocument.createPositionIterator(odtDocument.getRootNode()), selectedRange = odtDocument.getCursor(inputMemberId).getSelectedRange(), links = odfUtils.getHyperlinkElements(selectedRange), removeEntireLink = selectedRange.collapsed && links.length === 1, domRange = odtDocument.getDOMDocument().createRange(), operations = [], cursorRange, firstLink, lastLink, offset, op;
+ if (links.length === 0) {
+ return;
+ }
+ links.forEach(function(link) {
+ domRange.selectNodeContents(link);
+ cursorRange = odtDocument.convertDomToCursorRange({anchorNode:(domRange.startContainer), anchorOffset:domRange.startOffset, focusNode:(domRange.endContainer), focusOffset:domRange.endOffset});
+ op = new ops.OpRemoveHyperlink;
+ op.init({memberid:inputMemberId, position:cursorRange.position, length:cursorRange.length});
+ operations.push(op);
+ });
+ if (!removeEntireLink) {
+ firstLink = (links[0]);
+ if (selectedRange.comparePoint(firstLink, 0) === -1) {
+ domRange.setStart(firstLink, 0);
+ domRange.setEnd(selectedRange.startContainer, selectedRange.startOffset);
+ cursorRange = odtDocument.convertDomToCursorRange({anchorNode:(domRange.startContainer), anchorOffset:domRange.startOffset, focusNode:(domRange.endContainer), focusOffset:domRange.endOffset});
+ if (cursorRange.length > 0) {
+ op = new ops.OpApplyHyperlink;
+ (op).init({memberid:inputMemberId, position:cursorRange.position, length:cursorRange.length, hyperlink:odfUtils.getHyperlinkTarget(firstLink)});
+ operations.push(op);
+ }
+ }
+ lastLink = (links[links.length - 1]);
+ iterator.moveToEndOfNode(lastLink);
+ offset = iterator.unfilteredDomOffset();
+ if (selectedRange.comparePoint(lastLink, offset) === 1) {
+ domRange.setStart(selectedRange.endContainer, selectedRange.endOffset);
+ domRange.setEnd(lastLink, offset);
+ cursorRange = odtDocument.convertDomToCursorRange({anchorNode:(domRange.startContainer), anchorOffset:domRange.startOffset, focusNode:(domRange.endContainer), focusOffset:domRange.endOffset});
+ if (cursorRange.length > 0) {
+ op = new ops.OpApplyHyperlink;
+ (op).init({memberid:inputMemberId, position:cursorRange.position, length:cursorRange.length, hyperlink:odfUtils.getHyperlinkTarget(lastLink)});
+ operations.push(op);
+ }
+ }
+ }
+ session.enqueue(operations);
+ domRange.detach();
+ }
+ this.removeHyperlinks = removeHyperlinks;
+ this.destroy = function(callback) {
+ odtDocument.unsubscribe(ops.Document.signalCursorMoved, onCursorEvent);
+ sessionConstraints.unsubscribe(gui.CommonConstraints.EDIT.REVIEW_MODE, updateEnabledState);
+ callback();
+ };
+ function init() {
+ odtDocument.subscribe(ops.Document.signalCursorMoved, onCursorEvent);
+ sessionConstraints.subscribe(gui.CommonConstraints.EDIT.REVIEW_MODE, updateEnabledState);
+ updateEnabledState();
+ }
+ init();
+};
+gui.HyperlinkController.enabledChanged = "enabled/changed";
+gui.ImageController = function ImageController(session, sessionConstraints, sessionContext, inputMemberId, objectNameGenerator) {
+ var fileExtensionByMimetype = {"image/gif":".gif", "image/jpeg":".jpg", "image/png":".png"}, textns = odf.Namespaces.textns, odtDocument = session.getOdtDocument(), odfUtils = odf.OdfUtils, formatting = odtDocument.getFormatting(), eventNotifier = new core.EventNotifier([gui.HyperlinkController.enabledChanged]), isEnabled = false;
+ function updateEnabledState() {
+ var newIsEnabled = true;
+ if (sessionConstraints.getState(gui.CommonConstraints.EDIT.REVIEW_MODE) === true) {
+ newIsEnabled = (sessionContext.isLocalCursorWithinOwnAnnotation());
+ }
+ if (newIsEnabled !== isEnabled) {
+ isEnabled = newIsEnabled;
+ eventNotifier.emit(gui.ImageController.enabledChanged, isEnabled);
+ }
+ }
+ function onCursorEvent(cursor) {
+ if (cursor.getMemberId() === inputMemberId) {
+ updateEnabledState();
+ }
+ }
+ this.isEnabled = function() {
+ return isEnabled;
+ };
+ this.subscribe = function(eventid, cb) {
+ eventNotifier.subscribe(eventid, cb);
+ };
+ this.unsubscribe = function(eventid, cb) {
+ eventNotifier.unsubscribe(eventid, cb);
+ };
function createAddGraphicsStyleOp(name) {
var op = new ops.OpAddStyle;
op.init({memberid:inputMemberId, styleName:name, styleFamily:"graphic", isAutomaticStyle:false, setProperties:{"style:graphic-properties":{"text:anchor-type":"paragraph", "svg:x":"0cm", "svg:y":"0cm", "style:wrap":"dynamic", "style:number-wrapped-paragraphs":"no-limit", "style:wrap-contour":"false", "style:vertical-pos":"top", "style:vertical-rel":"paragraph", "style:horizontal-pos":"center", "style:horizontal-rel":"paragraph"}}});
- return op
+ return op;
}
function createAddFrameStyleOp(styleName, parentStyleName) {
var op = new ops.OpAddStyle;
op.init({memberid:inputMemberId, styleName:styleName, styleFamily:"graphic", isAutomaticStyle:true, setProperties:{"style:parent-style-name":parentStyleName, "style:graphic-properties":{"style:vertical-pos":"top", "style:vertical-rel":"baseline", "style:horizontal-pos":"center", "style:horizontal-rel":"paragraph", "fo:background-color":"transparent", "style:background-transparency":"100%", "style:shadow":"none", "style:mirror":"none", "fo:clip":"rect(0cm, 0cm, 0cm, 0cm)", "draw:luminance":"0%",
"draw:contrast":"0%", "draw:red":"0%", "draw:green":"0%", "draw:blue":"0%", "draw:gamma":"100%", "draw:color-inversion":"false", "draw:image-opacity":"100%", "draw:color-mode":"standard"}}});
- return op
+ return op;
}
function getFileExtension(mimetype) {
mimetype = mimetype.toLowerCase();
- return fileExtensionByMimetype.hasOwnProperty(mimetype) ? fileExtensionByMimetype[mimetype] : null
+ return fileExtensionByMimetype.hasOwnProperty(mimetype) ? fileExtensionByMimetype[mimetype] : null;
}
- function insertImageInternal(mimetype, content, widthInCm, heightInCm) {
+ function insertImageInternal(mimetype, content, widthMeasure, heightMeasure) {
var graphicsStyleName = "Graphics", stylesElement = odtDocument.getOdfCanvas().odfContainer().rootElement.styles, fileExtension = getFileExtension(mimetype), fileName, graphicsStyleElement, frameStyleName, op, operations = [];
runtime.assert(fileExtension !== null, "Image type is not supported: " + mimetype);
fileName = "Pictures/" + objectNameGenerator.generateImageName() + fileExtension;
@@ -13955,43 +14012,57 @@ gui.ImageController = function ImageController(session, inputMemberId, objectNam
op.init({memberid:inputMemberId, filename:fileName, mimetype:mimetype, content:content});
operations.push(op);
graphicsStyleElement = formatting.getStyleElement(graphicsStyleName, "graphic", [stylesElement]);
- if(!graphicsStyleElement) {
+ if (!graphicsStyleElement) {
op = createAddGraphicsStyleOp(graphicsStyleName);
- operations.push(op)
+ operations.push(op);
}
frameStyleName = objectNameGenerator.generateStyleName();
op = createAddFrameStyleOp(frameStyleName, graphicsStyleName);
operations.push(op);
op = new ops.OpInsertImage;
- op.init({memberid:inputMemberId, position:odtDocument.getCursorPosition(inputMemberId), filename:fileName, frameWidth:widthInCm + "cm", frameHeight:heightInCm + "cm", frameStyleName:frameStyleName, frameName:objectNameGenerator.generateFrameName()});
+ op.init({memberid:inputMemberId, position:odtDocument.getCursorPosition(inputMemberId), filename:fileName, frameWidth:widthMeasure, frameHeight:heightMeasure, frameStyleName:frameStyleName, frameName:objectNameGenerator.generateFrameName()});
operations.push(op);
- session.enqueue(operations)
+ session.enqueue(operations);
}
- function trimmedSize(originalSize, pageContentSize) {
+ function scaleToAvailableContentSize(originalSize, pageContentSize) {
var widthRatio = 1, heightRatio = 1, ratio;
- if(originalSize.width > pageContentSize.width) {
- widthRatio = pageContentSize.width / originalSize.width
+ if (originalSize.width > pageContentSize.width) {
+ widthRatio = pageContentSize.width / originalSize.width;
}
- if(originalSize.height > pageContentSize.height) {
- heightRatio = pageContentSize.height / originalSize.height
+ if (originalSize.height > pageContentSize.height) {
+ heightRatio = pageContentSize.height / originalSize.height;
}
ratio = Math.min(widthRatio, heightRatio);
- return{width:originalSize.width * ratio, height:originalSize.height * ratio}
+ return {width:originalSize.width * ratio, height:originalSize.height * ratio};
}
this.insertImage = function(mimetype, content, widthInPx, heightInPx) {
- var paragraphElement, styleName, pageContentSize, originalSize, newSize;
+ if (!isEnabled) {
+ return;
+ }
+ var paragraphElement, styleName, pageContentSize, imageSize;
runtime.assert(widthInPx > 0 && heightInPx > 0, "Both width and height of the image should be greater than 0px.");
- paragraphElement = odtDocument.getParagraphElement(odtDocument.getCursor(inputMemberId).getNode());
+ imageSize = {width:widthInPx, height:heightInPx};
+ paragraphElement = odfUtils.getParagraphElement(odtDocument.getCursor(inputMemberId).getNode());
styleName = paragraphElement.getAttributeNS(textns, "style-name");
- if(!paragraphStyleToPageContentSizeMap.hasOwnProperty(styleName)) {
- paragraphStyleToPageContentSizeMap[styleName] = formatting.getContentSize(styleName, "paragraph")
+ if (styleName) {
+ pageContentSize = formatting.getContentSize(styleName, "paragraph");
+ imageSize = scaleToAvailableContentSize(imageSize, pageContentSize);
}
- pageContentSize = paragraphStyleToPageContentSizeMap[styleName];
- originalSize = {width:widthInPx * cmPerPixel, height:heightInPx * cmPerPixel};
- newSize = trimmedSize(originalSize, pageContentSize);
- insertImageInternal(mimetype, content, newSize.width, newSize.height)
+ insertImageInternal(mimetype, content, imageSize.width + "px", imageSize.height + "px");
+ };
+ this.destroy = function(callback) {
+ odtDocument.unsubscribe(ops.Document.signalCursorMoved, onCursorEvent);
+ sessionConstraints.unsubscribe(gui.CommonConstraints.EDIT.REVIEW_MODE, updateEnabledState);
+ callback();
+ };
+ function init() {
+ odtDocument.subscribe(ops.Document.signalCursorMoved, onCursorEvent);
+ sessionConstraints.subscribe(gui.CommonConstraints.EDIT.REVIEW_MODE, updateEnabledState);
+ updateEnabledState();
}
+ init();
};
+gui.ImageController.enabledChanged = "enabled/changed";
gui.ImageSelector = function ImageSelector(odfCanvas) {
var svgns = odf.Namespaces.svgns, imageSelectorId = "imageSelector", selectorBorderWidth = 1, squareClassNames = ["topLeft", "topRight", "bottomRight", "bottomLeft", "topMiddle", "rightMiddle", "bottomMiddle", "leftMiddle"], document = odfCanvas.getElement().ownerDocument, hasSelection = false;
function createSelectorElement() {
@@ -14002,19 +14073,19 @@ gui.ImageSelector = function ImageSelector(odfCanvas) {
function createDiv(className) {
var squareElement = document.createElement("div");
squareElement.className = className;
- selectorElement.appendChild(squareElement)
+ selectorElement.appendChild(squareElement);
}
squareClassNames.forEach(createDiv);
- return selectorElement
+ return selectorElement;
}
function getPosition(element, referenceElement) {
var rect = element.getBoundingClientRect(), refRect = referenceElement.getBoundingClientRect(), zoomLevel = odfCanvas.getZoomLevel();
- return{left:(rect.left - refRect.left) / zoomLevel - selectorBorderWidth, top:(rect.top - refRect.top) / zoomLevel - selectorBorderWidth}
+ return {left:(rect.left - refRect.left) / zoomLevel - selectorBorderWidth, top:(rect.top - refRect.top) / zoomLevel - selectorBorderWidth};
}
this.select = function(frameElement) {
var selectorElement = document.getElementById(imageSelectorId), position;
- if(!selectorElement) {
- selectorElement = createSelectorElement()
+ if (!selectorElement) {
+ selectorElement = createSelectorElement();
}
hasSelection = true;
position = getPosition(frameElement, (selectorElement.parentNode));
@@ -14022,25 +14093,25 @@ gui.ImageSelector = function ImageSelector(odfCanvas) {
selectorElement.style.left = position.left + "px";
selectorElement.style.top = position.top + "px";
selectorElement.style.width = frameElement.getAttributeNS(svgns, "width");
- selectorElement.style.height = frameElement.getAttributeNS(svgns, "height")
+ selectorElement.style.height = frameElement.getAttributeNS(svgns, "height");
};
this.clearSelection = function() {
var selectorElement;
- if(hasSelection) {
+ if (hasSelection) {
selectorElement = document.getElementById(imageSelectorId);
- if(selectorElement) {
- selectorElement.style.display = "none"
+ if (selectorElement) {
+ selectorElement.style.display = "none";
}
}
- hasSelection = false
+ hasSelection = false;
};
this.isSelectorElement = function(node) {
var selectorElement = document.getElementById(imageSelectorId);
- if(!selectorElement) {
- return false
+ if (!selectorElement) {
+ return false;
}
- return node === selectorElement || node.parentNode === selectorElement
- }
+ return node === selectorElement || node.parentNode === selectorElement;
+ };
};
(function() {
function DetectSafariCompositionError(eventManager) {
@@ -14048,930 +14119,932 @@ gui.ImageSelector = function ImageSelector(odfCanvas) {
function suppressIncorrectKeyPress(e) {
suppressedKeyPress = e.which && String.fromCharCode(e.which) === lastCompositionValue;
lastCompositionValue = undefined;
- return suppressedKeyPress === false
+ return suppressedKeyPress === false;
}
function clearSuppression() {
- suppressedKeyPress = false
+ suppressedKeyPress = false;
}
function trapComposedValue(e) {
lastCompositionValue = e.data;
- suppressedKeyPress = false
+ suppressedKeyPress = false;
}
function init() {
eventManager.subscribe("textInput", clearSuppression);
eventManager.subscribe("compositionend", trapComposedValue);
- eventManager.addFilter("keypress", suppressIncorrectKeyPress)
+ eventManager.addFilter("keypress", suppressIncorrectKeyPress);
}
this.destroy = function(callback) {
eventManager.unsubscribe("textInput", clearSuppression);
eventManager.unsubscribe("compositionend", trapComposedValue);
eventManager.removeFilter("keypress", suppressIncorrectKeyPress);
- callback()
+ callback();
};
- init()
+ init();
}
gui.InputMethodEditor = function InputMethodEditor(inputMemberId, eventManager) {
- var cursorns = "urn:webodf:names:cursor", localCursor = null, eventTrap = eventManager.getEventTrap(), doc = (eventTrap.ownerDocument), compositionElement, async = new core.Async, FAKE_CONTENT = "b", processUpdates, pendingEvent = false, pendingData = "", events = new core.EventNotifier([gui.InputMethodEditor.signalCompositionStart, gui.InputMethodEditor.signalCompositionEnd]), lastCompositionData, filters = [], cleanup, isEditable = false;
+ var cursorns = "urn:webodf:names:cursor", localCursor = null, eventTrap = eventManager.getEventTrap(), doc = (eventTrap.ownerDocument), compositionElement, processUpdates, pendingEvent = false, pendingData = "", events = new core.EventNotifier([gui.InputMethodEditor.signalCompositionStart, gui.InputMethodEditor.signalCompositionEnd]), lastCompositionData, textSerializer, filters = [], cleanup, processingFocusEvent = false;
this.subscribe = events.subscribe;
this.unsubscribe = events.unsubscribe;
function setCursorComposing(state) {
- if(localCursor) {
- if(state) {
- localCursor.getNode().setAttributeNS(cursorns, "composing", "true")
- }else {
+ if (localCursor) {
+ if (state) {
+ localCursor.getNode().setAttributeNS(cursorns, "composing", "true");
+ } else {
localCursor.getNode().removeAttributeNS(cursorns, "composing");
- compositionElement.textContent = ""
+ compositionElement.textContent = "";
}
}
}
function flushEvent() {
- if(pendingEvent) {
+ if (pendingEvent) {
pendingEvent = false;
setCursorComposing(false);
events.emit(gui.InputMethodEditor.signalCompositionEnd, {data:pendingData});
- pendingData = ""
+ pendingData = "";
}
}
function addCompositionData(data) {
pendingEvent = true;
pendingData += data;
- processUpdates.trigger()
+ processUpdates.trigger();
}
- function resetWindowSelection() {
+ function synchronizeWindowSelection() {
+ if (processingFocusEvent) {
+ return;
+ }
+ processingFocusEvent = true;
flushEvent();
- if(localCursor && localCursor.getSelectedRange().collapsed) {
- eventTrap.value = ""
- }else {
- eventTrap.value = FAKE_CONTENT
+ if (localCursor && localCursor.getSelectedRange().collapsed) {
+ eventTrap.value = "";
+ } else {
+ eventTrap.value = textSerializer.writeToString(localCursor.getSelectedRange().cloneContents());
+ }
+ eventTrap.setSelectionRange(0, eventTrap.value.length);
+ processingFocusEvent = false;
+ }
+ function handleCursorUpdated() {
+ if (eventManager.hasFocus()) {
+ processUpdates.trigger();
}
- eventTrap.setSelectionRange(0, eventTrap.value.length)
}
function compositionStart() {
lastCompositionData = undefined;
processUpdates.cancel();
setCursorComposing(true);
- if(!pendingEvent) {
- events.emit(gui.InputMethodEditor.signalCompositionStart, {data:""})
+ if (!pendingEvent) {
+ events.emit(gui.InputMethodEditor.signalCompositionStart, {data:""});
}
}
function compositionEnd(e) {
lastCompositionData = e.data;
- addCompositionData(e.data)
+ addCompositionData(e.data);
}
function textInput(e) {
- if(e.data !== lastCompositionData) {
- addCompositionData(e.data)
+ if (e.data !== lastCompositionData) {
+ addCompositionData(e.data);
}
- lastCompositionData = undefined
+ lastCompositionData = undefined;
}
function synchronizeCompositionText() {
- compositionElement.textContent = eventTrap.value
+ compositionElement.textContent = eventTrap.value;
}
this.registerCursor = function(cursor) {
- if(cursor.getMemberId() === inputMemberId) {
+ if (cursor.getMemberId() === inputMemberId) {
localCursor = cursor;
localCursor.getNode().appendChild(compositionElement);
+ cursor.subscribe(ops.OdtCursor.signalCursorUpdated, handleCursorUpdated);
eventManager.subscribe("input", synchronizeCompositionText);
- eventManager.subscribe("compositionupdate", synchronizeCompositionText)
+ eventManager.subscribe("compositionupdate", synchronizeCompositionText);
}
};
this.removeCursor = function(memberid) {
- if(localCursor && memberid === inputMemberId) {
+ if (localCursor && memberid === inputMemberId) {
localCursor.getNode().removeChild(compositionElement);
+ localCursor.unsubscribe(ops.OdtCursor.signalCursorUpdated, handleCursorUpdated);
eventManager.unsubscribe("input", synchronizeCompositionText);
eventManager.unsubscribe("compositionupdate", synchronizeCompositionText);
- localCursor = null
- }
- };
- function suppressFocus() {
- eventManager.blur();
- eventTrap.setAttribute("disabled", true)
- }
- function synchronizeEventStatus() {
- var hasFocus = eventManager.hasFocus();
- if(hasFocus) {
- eventManager.blur()
- }
- if(isEditable) {
- eventTrap.removeAttribute("disabled")
- }else {
- eventTrap.setAttribute("disabled", true)
- }
- if(hasFocus) {
- eventManager.focus()
+ localCursor = null;
}
- }
- this.setEditing = function(editable) {
- isEditable = editable;
- synchronizeEventStatus()
};
this.destroy = function(callback) {
eventManager.unsubscribe("compositionstart", compositionStart);
eventManager.unsubscribe("compositionend", compositionEnd);
eventManager.unsubscribe("textInput", textInput);
eventManager.unsubscribe("keypress", flushEvent);
- eventManager.unsubscribe("mousedown", suppressFocus);
- eventManager.unsubscribe("mouseup", synchronizeEventStatus);
- eventManager.unsubscribe("focus", resetWindowSelection);
- async.destroyAll(cleanup, callback)
+ eventManager.unsubscribe("focus", synchronizeWindowSelection);
+ core.Async.destroyAll(cleanup, callback);
};
function init() {
+ textSerializer = new odf.TextSerializer;
+ textSerializer.filter = new odf.OdfNodeFilter;
eventManager.subscribe("compositionstart", compositionStart);
eventManager.subscribe("compositionend", compositionEnd);
eventManager.subscribe("textInput", textInput);
eventManager.subscribe("keypress", flushEvent);
- eventManager.subscribe("mousedown", suppressFocus);
- eventManager.subscribe("mouseup", synchronizeEventStatus);
- eventManager.subscribe("focus", resetWindowSelection);
+ eventManager.subscribe("focus", synchronizeWindowSelection);
filters.push(new DetectSafariCompositionError(eventManager));
function getDestroy(filter) {
- return filter.destroy
+ return filter.destroy;
}
cleanup = filters.map(getDestroy);
compositionElement = doc.createElement("span");
compositionElement.setAttribute("id", "composer");
- processUpdates = new core.ScheduledTask(resetWindowSelection, 1);
- cleanup.push(processUpdates.destroy)
+ processUpdates = core.Task.createTimeoutTask(synchronizeWindowSelection, 1);
+ cleanup.push(processUpdates.destroy);
}
- init()
+ init();
};
gui.InputMethodEditor.signalCompositionStart = "input/compositionstart";
gui.InputMethodEditor.signalCompositionEnd = "input/compositionend";
- return gui.InputMethodEditor
})();
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.KeyboardHandler = function KeyboardHandler() {
- var modifier = gui.KeyboardHandler.Modifier, defaultBinding = null, bindings = {};
- function getModifiers(e) {
- var modifiers = modifier.None;
- if(e.metaKey) {
- modifiers |= modifier.Meta
+gui.MetadataController = function MetadataController(session, inputMemberId) {
+ var odtDocument = session.getOdtDocument(), eventNotifier = new core.EventNotifier([gui.MetadataController.signalMetadataChanged]), readonlyProperties = ["dc:creator", "dc:date", "meta:editing-cycles", "meta:editing-duration", "meta:document-statistic"];
+ function onMetadataUpdated(changes) {
+ eventNotifier.emit(gui.MetadataController.signalMetadataChanged, changes);
+ }
+ function isWriteableMetadata(property) {
+ var isWriteable = readonlyProperties.indexOf(property) === -1;
+ if (!isWriteable) {
+ runtime.log("Setting " + property + " is restricted.");
+ }
+ return isWriteable;
+ }
+ this.setMetadata = function(setProperties, removedProperties) {
+ var filteredSetProperties = {}, filteredRemovedProperties = "", op;
+ if (setProperties) {
+ Object.keys(setProperties).filter(isWriteableMetadata).forEach(function(property) {
+ filteredSetProperties[property] = setProperties[property];
+ });
}
- if(e.ctrlKey) {
- modifiers |= modifier.Ctrl
+ if (removedProperties) {
+ filteredRemovedProperties = removedProperties.filter(isWriteableMetadata).join(",");
}
- if(e.altKey) {
- modifiers |= modifier.Alt
+ if (filteredRemovedProperties.length > 0 || Object.keys(filteredSetProperties).length > 0) {
+ op = new ops.OpUpdateMetadata;
+ op.init({memberid:inputMemberId, setProperties:filteredSetProperties, removedProperties:filteredRemovedProperties.length > 0 ? {attributes:filteredRemovedProperties} : null});
+ session.enqueue([op]);
}
- if(e.shiftKey) {
- modifiers |= modifier.Shift
+ };
+ this.getMetadata = function(property) {
+ var namespaceUri, parts;
+ runtime.assert(typeof property === "string", "Property must be a string");
+ parts = property.split(":");
+ runtime.assert(parts.length === 2, "Property must be a namespace-prefixed string");
+ namespaceUri = odf.Namespaces.lookupNamespaceURI(parts[0]);
+ runtime.assert(Boolean(namespaceUri), "Prefix must be for an ODF namespace.");
+ return odtDocument.getOdfCanvas().odfContainer().getMetadata((namespaceUri), parts[1]);
+ };
+ this.subscribe = function(eventid, cb) {
+ eventNotifier.subscribe(eventid, cb);
+ };
+ this.unsubscribe = function(eventid, cb) {
+ eventNotifier.unsubscribe(eventid, cb);
+ };
+ this.destroy = function(callback) {
+ odtDocument.unsubscribe(ops.OdtDocument.signalMetadataUpdated, onMetadataUpdated);
+ callback();
+ };
+ function init() {
+ odtDocument.subscribe(ops.OdtDocument.signalMetadataUpdated, onMetadataUpdated);
+ }
+ init();
+};
+gui.MetadataController.signalMetadataChanged = "metadata/changed";
+gui.PasteController = function PasteController(session, sessionConstraints, sessionContext, inputMemberId) {
+ var odtDocument = session.getOdtDocument(), isEnabled = false, textns = odf.Namespaces.textns, NEXT = core.StepDirection.NEXT, odfUtils = odf.OdfUtils;
+ function updateEnabledState() {
+ if (sessionConstraints.getState(gui.CommonConstraints.EDIT.REVIEW_MODE) === true) {
+ isEnabled = (sessionContext.isLocalCursorWithinOwnAnnotation());
+ } else {
+ isEnabled = true;
}
- return modifiers
}
- function getKeyCombo(keyCode, modifiers) {
- if(!modifiers) {
- modifiers = modifier.None
+ function onCursorEvent(cursor) {
+ if (cursor.getMemberId() === inputMemberId) {
+ updateEnabledState();
}
- return keyCode + ":" + modifiers
}
- this.setDefault = function(callback) {
- defaultBinding = callback
- };
- this.bind = function(keyCode, modifiers, callback, overwrite) {
- var keyCombo = getKeyCombo(keyCode, modifiers);
- runtime.assert(overwrite || bindings.hasOwnProperty(keyCombo) === false, "tried to overwrite the callback handler of key combo: " + keyCombo);
- bindings[keyCombo] = callback
+ this.isEnabled = function() {
+ return isEnabled;
};
- this.unbind = function(keyCode, modifiers) {
- var keyCombo = getKeyCombo(keyCode, modifiers);
- delete bindings[keyCombo]
+ this.paste = function(data) {
+ if (!isEnabled) {
+ return;
+ }
+ var originalCursorPosition = odtDocument.getCursorPosition(inputMemberId), cursorNode = odtDocument.getCursor(inputMemberId).getNode(), originalParagraph = (odfUtils.getParagraphElement(cursorNode)), paragraphStyle = originalParagraph.getAttributeNS(textns, "style-name") || "", cursorPosition = originalCursorPosition, operations = [], currentParagraphStartPosition = odtDocument.convertDomPointToCursorStep(originalParagraph, 0, NEXT), paragraphs;
+ paragraphs = data.replace(/\r/g, "").split("\n");
+ paragraphs.forEach(function(text) {
+ var insertTextOp = new ops.OpInsertText, splitParagraphOp = new ops.OpSplitParagraph;
+ insertTextOp.init({memberid:inputMemberId, position:cursorPosition, text:text, moveCursor:true});
+ operations.push(insertTextOp);
+ cursorPosition += text.length;
+ splitParagraphOp.init({memberid:inputMemberId, position:cursorPosition, paragraphStyleName:paragraphStyle, sourceParagraphPosition:currentParagraphStartPosition, moveCursor:true});
+ operations.push(splitParagraphOp);
+ cursorPosition += 1;
+ currentParagraphStartPosition = cursorPosition;
+ });
+ operations.pop();
+ session.enqueue(operations);
};
- this.reset = function() {
- defaultBinding = null;
- bindings = {}
+ this.destroy = function(callback) {
+ odtDocument.unsubscribe(ops.Document.signalCursorMoved, onCursorEvent);
+ sessionConstraints.unsubscribe(gui.CommonConstraints.EDIT.REVIEW_MODE, updateEnabledState);
+ callback();
};
- this.handleEvent = function(e) {
- var keyCombo = getKeyCombo(e.keyCode, getModifiers(e)), callback = bindings[keyCombo], handled = false;
- if(callback) {
- handled = callback()
- }else {
- if(defaultBinding !== null) {
- handled = defaultBinding(e)
- }
+ function init() {
+ odtDocument.subscribe(ops.Document.signalCursorMoved, onCursorEvent);
+ sessionConstraints.subscribe(gui.CommonConstraints.EDIT.REVIEW_MODE, updateEnabledState);
+ updateEnabledState();
+ }
+ init();
+};
+gui.ClosestXOffsetScanner = function(offset) {
+ var self = this, closestDiff, LEFT_TO_RIGHT = gui.StepInfo.VisualDirection.LEFT_TO_RIGHT;
+ this.token = undefined;
+ function isFurtherFromOffset(edgeOffset) {
+ if (edgeOffset !== null && closestDiff !== undefined) {
+ return Math.abs(edgeOffset - offset) > closestDiff;
}
- if(handled) {
- if(e.preventDefault) {
- e.preventDefault()
- }else {
- e.returnValue = false
- }
+ return false;
+ }
+ function updateDiffIfSmaller(edge) {
+ if (edge !== null && isFurtherFromOffset(edge) === false) {
+ closestDiff = Math.abs(edge - offset);
}
}
+ this.process = function(stepInfo, previousRect, nextRect) {
+ var edge1, edge2;
+ if (stepInfo.visualDirection === LEFT_TO_RIGHT) {
+ edge1 = previousRect && previousRect.right;
+ edge2 = nextRect && nextRect.left;
+ } else {
+ edge1 = previousRect && previousRect.left;
+ edge2 = nextRect && nextRect.right;
+ }
+ if (isFurtherFromOffset(edge1) || isFurtherFromOffset(edge2)) {
+ return true;
+ }
+ if (previousRect || nextRect) {
+ updateDiffIfSmaller(edge1);
+ updateDiffIfSmaller(edge2);
+ self.token = stepInfo.token;
+ }
+ return false;
+ };
};
-gui.KeyboardHandler.Modifier = {None:0, Meta:1, Ctrl:2, Alt:4, CtrlAlt:6, Shift:8, MetaShift:9, CtrlShift:10, AltShift:12};
-gui.KeyboardHandler.KeyCode = {Backspace:8, Tab:9, Clear:12, Enter:13, Ctrl:17, End:35, Home:36, Left:37, Up:38, Right:39, Down:40, Delete:46, A:65, B:66, C:67, D:68, E:69, F:70, G:71, H:72, I:73, J:74, K:75, L:76, M:77, N:78, O:79, P:80, Q:81, R:82, S:83, T:84, U:85, V:86, W:87, X:88, Y:89, Z:90, LeftMeta:91, MetaInMozilla:224};
-(function() {
- return gui.KeyboardHandler
-})();
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.PlainTextPasteboard = function PlainTextPasteboard(odtDocument, inputMemberId) {
- function createOp(op, data) {
- op.init(data);
- return op
+gui.LineBoundaryScanner = function() {
+ var self = this, lineRect = null, MIN_OVERLAP_THRESHOLD = .4;
+ function verticalOverlapPercent(rect1, rect2) {
+ var rect1Height = rect1.bottom - rect1.top, rect2Height = rect2.bottom - rect2.top, minRectHeight = Math.min(rect1Height, rect2Height), intersectTop = Math.max(rect1.top, rect2.top), intersectBottom = Math.min(rect1.bottom, rect2.bottom), overlapHeight = intersectBottom - intersectTop;
+ return minRectHeight > 0 ? overlapHeight / minRectHeight : 0;
}
- this.createPasteOps = function(data) {
- var originalCursorPosition = odtDocument.getCursorPosition(inputMemberId), cursorPosition = originalCursorPosition, operations = [], paragraphs;
- paragraphs = data.replace(/\r/g, "").split("\n");
- paragraphs.forEach(function(text) {
- operations.push(createOp(new ops.OpSplitParagraph, {memberid:inputMemberId, position:cursorPosition, moveCursor:true}));
- cursorPosition += 1;
- operations.push(createOp(new ops.OpInsertText, {memberid:inputMemberId, position:cursorPosition, text:text, moveCursor:true}));
- cursorPosition += text.length
- });
- operations.push(createOp(new ops.OpRemoveText, {memberid:inputMemberId, position:originalCursorPosition, length:1}));
- return operations
+ function isLineBoundary(nextRect) {
+ if (lineRect) {
+ return verticalOverlapPercent((lineRect), nextRect) <= MIN_OVERLAP_THRESHOLD;
+ }
+ return false;
+ }
+ function combineRects(rect1, rect2) {
+ return {left:Math.min(rect1.left, rect2.left), right:Math.max(rect1.right, rect2.right), top:Math.min(rect1.top, rect2.top), bottom:Math.min(rect1.bottom, rect2.bottom)};
+ }
+ function growRect(originalRect, newRect) {
+ if (originalRect && newRect) {
+ return combineRects((originalRect), (newRect));
+ }
+ return originalRect || newRect;
}
+ this.token = undefined;
+ this.process = function(stepInfo, previousRect, nextRect) {
+ var isOverLineBoundary = nextRect && isLineBoundary((nextRect));
+ if (previousRect && (!nextRect || isOverLineBoundary)) {
+ self.token = stepInfo.token;
+ }
+ if (isOverLineBoundary) {
+ return true;
+ }
+ lineRect = growRect(lineRect, previousRect);
+ return false;
+ };
+};
+gui.ParagraphBoundaryScanner = function() {
+ var self = this, isInitialised = false, lastParagraph, odfUtils = odf.OdfUtils;
+ this.token = undefined;
+ this.process = function(stepInfo) {
+ var currentParagraph = odfUtils.getParagraphElement(stepInfo.container());
+ if (!isInitialised) {
+ lastParagraph = currentParagraph;
+ isInitialised = true;
+ }
+ if (lastParagraph !== currentParagraph) {
+ return true;
+ }
+ self.token = stepInfo.token;
+ return false;
+ };
};
-/*
-
- Copyright (C) 2014 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
odf.WordBoundaryFilter = function WordBoundaryFilter(odtDocument, includeWhitespace) {
- var TEXT_NODE = Node.TEXT_NODE, ELEMENT_NODE = Node.ELEMENT_NODE, odfUtils = new odf.OdfUtils, punctuation = /[!-#%-*,-\/:-;?-@\[-\]_{}\u00a1\u00ab\u00b7\u00bb\u00bf;\u00b7\u055a-\u055f\u0589-\u058a\u05be\u05c0\u05c3\u05c6\u05f3-\u05f4\u0609-\u060a\u060c-\u060d\u061b\u061e-\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0964-\u0965\u0970\u0df4\u0e4f\u0e5a-\u0e5b\u0f04-\u0f12\u0f3a-\u0f3d\u0f85\u0fd0-\u0fd4\u104a-\u104f\u10fb\u1361-\u1368\u166d-\u166e\u169b-\u169c\u16eb-\u16ed\u1735-\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u180a\u1944-\u1945\u19de-\u19df\u1a1e-\u1a1f\u1b5a-\u1b60\u1c3b-\u1c3f\u1c7e-\u1c7f\u2000-\u206e\u207d-\u207e\u208d-\u208e\u3008-\u3009\u2768-\u2775\u27c5-\u27c6\u27e6-\u27ef\u2983-\u2998\u29d8-\u29db\u29fc-\u29fd\u2cf9-\u2cfc\u2cfe-\u2cff\u2e00-\u2e7e\u3000-\u303f\u30a0\u30fb\ua60d-\ua60f\ua673\ua67e\ua874-\ua877\ua8ce-\ua8cf\ua92e-\ua92f\ua95f\uaa5c-\uaa5f\ufd3e-\ufd3f\ufe10-\ufe19\ufe30-\ufe52\ufe54-\ufe61\ufe63\ufe68\ufe6a-\ufe6b\uff01-\uff03\uff05-\uff0a\uff0c-\uff0f\uff1a-\uff1b\uff1f-\uff20\uff3b-\uff3d\uff3f\uff5b\uff5d\uff5f-\uff65]|\ud800[\udd00-\udd01\udf9f\udfd0]|\ud802[\udd1f\udd3f\ude50-\ude58]|\ud809[\udc00-\udc7e]/,
+ var TEXT_NODE = Node.TEXT_NODE, ELEMENT_NODE = Node.ELEMENT_NODE, odfUtils = odf.OdfUtils, punctuation = /[!-#%-*,-\/:-;?-@\[-\]_{}\u00a1\u00ab\u00b7\u00bb\u00bf;\u00b7\u055a-\u055f\u0589-\u058a\u05be\u05c0\u05c3\u05c6\u05f3-\u05f4\u0609-\u060a\u060c-\u060d\u061b\u061e-\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0964-\u0965\u0970\u0df4\u0e4f\u0e5a-\u0e5b\u0f04-\u0f12\u0f3a-\u0f3d\u0f85\u0fd0-\u0fd4\u104a-\u104f\u10fb\u1361-\u1368\u166d-\u166e\u169b-\u169c\u16eb-\u16ed\u1735-\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u180a\u1944-\u1945\u19de-\u19df\u1a1e-\u1a1f\u1b5a-\u1b60\u1c3b-\u1c3f\u1c7e-\u1c7f\u2000-\u206e\u207d-\u207e\u208d-\u208e\u3008-\u3009\u2768-\u2775\u27c5-\u27c6\u27e6-\u27ef\u2983-\u2998\u29d8-\u29db\u29fc-\u29fd\u2cf9-\u2cfc\u2cfe-\u2cff\u2e00-\u2e7e\u3000-\u303f\u30a0\u30fb\ua60d-\ua60f\ua673\ua67e\ua874-\ua877\ua8ce-\ua8cf\ua92e-\ua92f\ua95f\uaa5c-\uaa5f\ufd3e-\ufd3f\ufe10-\ufe19\ufe30-\ufe52\ufe54-\ufe61\ufe63\ufe68\ufe6a-\ufe6b\uff01-\uff03\uff05-\uff0a\uff0c-\uff0f\uff1a-\uff1b\uff1f-\uff20\uff3b-\uff3d\uff3f\uff5b\uff5d\uff5f-\uff65]|\ud800[\udd00-\udd01\udf9f\udfd0]|\ud802[\udd1f\udd3f\ude50-\ude58]|\ud809[\udc00-\udc7e]/,
spacing = /\s/, FILTER_ACCEPT = core.PositionFilter.FilterResult.FILTER_ACCEPT, FILTER_REJECT = core.PositionFilter.FilterResult.FILTER_REJECT, TRAILING = odf.WordBoundaryFilter.IncludeWhitespace.TRAILING, LEADING = odf.WordBoundaryFilter.IncludeWhitespace.LEADING, NeighborType = {NO_NEIGHBOUR:0, SPACE_CHAR:1, PUNCTUATION_CHAR:2, WORD_CHAR:3, OTHER:4};
function findHigherNeighborNode(node, direction, nodeFilter) {
var neighboringNode = null, rootNode = odtDocument.getRootNode(), unfilteredCandidate;
- while(node !== rootNode && (node !== null && neighboringNode === null)) {
+ while (node !== rootNode && node !== null && neighboringNode === null) {
unfilteredCandidate = direction < 0 ? node.previousSibling : node.nextSibling;
- if(nodeFilter(unfilteredCandidate) === NodeFilter.FILTER_ACCEPT) {
- neighboringNode = unfilteredCandidate
+ if (nodeFilter(unfilteredCandidate) === NodeFilter.FILTER_ACCEPT) {
+ neighboringNode = unfilteredCandidate;
}
- node = node.parentNode
+ node = node.parentNode;
}
- return neighboringNode
+ return neighboringNode;
}
function typeOfNeighbor(node, getOffset) {
var neighboringChar;
- if(node === null) {
- return NeighborType.NO_NEIGHBOUR
+ if (node === null) {
+ return NeighborType.NO_NEIGHBOUR;
}
- if(odfUtils.isCharacterElement(node)) {
- return NeighborType.SPACE_CHAR
+ if (odfUtils.isCharacterElement(node)) {
+ return NeighborType.SPACE_CHAR;
}
- if(node.nodeType === TEXT_NODE || (odfUtils.isTextSpan(node) || odfUtils.isHyperlink(node))) {
+ if (node.nodeType === TEXT_NODE || odfUtils.isTextSpan(node) || odfUtils.isHyperlink(node)) {
neighboringChar = node.textContent.charAt(getOffset());
- if(spacing.test(neighboringChar)) {
- return NeighborType.SPACE_CHAR
+ if (spacing.test(neighboringChar)) {
+ return NeighborType.SPACE_CHAR;
}
- if(punctuation.test(neighboringChar)) {
- return NeighborType.PUNCTUATION_CHAR
+ if (punctuation.test(neighboringChar)) {
+ return NeighborType.PUNCTUATION_CHAR;
}
- return NeighborType.WORD_CHAR
+ return NeighborType.WORD_CHAR;
}
- return NeighborType.OTHER
+ return NeighborType.OTHER;
}
this.acceptPosition = function(iterator) {
var container = iterator.container(), leftNode = iterator.leftNode(), rightNode = iterator.rightNode(), getRightCharOffset = iterator.unfilteredDomOffset, getLeftCharOffset = function() {
- return iterator.unfilteredDomOffset() - 1
+ return iterator.unfilteredDomOffset() - 1;
}, leftNeighborType, rightNeighborType;
- if(container.nodeType === ELEMENT_NODE) {
- if(rightNode === null) {
- rightNode = findHigherNeighborNode(container, 1, iterator.getNodeFilter())
+ if (container.nodeType === ELEMENT_NODE) {
+ if (rightNode === null) {
+ rightNode = findHigherNeighborNode(container, 1, iterator.getNodeFilter());
}
- if(leftNode === null) {
- leftNode = findHigherNeighborNode(container, -1, iterator.getNodeFilter())
+ if (leftNode === null) {
+ leftNode = findHigherNeighborNode(container, -1, iterator.getNodeFilter());
}
}
- if(container !== rightNode) {
+ if (container !== rightNode) {
getRightCharOffset = function() {
- return 0
- }
+ return 0;
+ };
}
- if(container !== leftNode && leftNode !== null) {
+ if (container !== leftNode && leftNode !== null) {
getLeftCharOffset = function() {
- return leftNode.textContent.length - 1
- }
+ return leftNode.textContent.length - 1;
+ };
}
leftNeighborType = typeOfNeighbor(leftNode, getLeftCharOffset);
rightNeighborType = typeOfNeighbor(rightNode, getRightCharOffset);
- if(leftNeighborType === NeighborType.WORD_CHAR && rightNeighborType === NeighborType.WORD_CHAR || (leftNeighborType === NeighborType.PUNCTUATION_CHAR && rightNeighborType === NeighborType.PUNCTUATION_CHAR || (includeWhitespace === TRAILING && (leftNeighborType !== NeighborType.NO_NEIGHBOUR && rightNeighborType === NeighborType.SPACE_CHAR) || includeWhitespace === LEADING && (leftNeighborType === NeighborType.SPACE_CHAR && rightNeighborType !== NeighborType.NO_NEIGHBOUR)))) {
- return FILTER_REJECT
+ if (leftNeighborType === NeighborType.WORD_CHAR && rightNeighborType === NeighborType.WORD_CHAR || leftNeighborType === NeighborType.PUNCTUATION_CHAR && rightNeighborType === NeighborType.PUNCTUATION_CHAR || includeWhitespace === TRAILING && leftNeighborType !== NeighborType.NO_NEIGHBOUR && rightNeighborType === NeighborType.SPACE_CHAR || includeWhitespace === LEADING && leftNeighborType === NeighborType.SPACE_CHAR && rightNeighborType !== NeighborType.NO_NEIGHBOUR) {
+ return FILTER_REJECT;
}
- return FILTER_ACCEPT
- }
+ return FILTER_ACCEPT;
+ };
};
odf.WordBoundaryFilter.IncludeWhitespace = {None:0, TRAILING:1, LEADING:2};
-(function() {
- return odf.WordBoundaryFilter
-})();
gui.SelectionController = function SelectionController(session, inputMemberId) {
- var odtDocument = session.getOdtDocument(), domUtils = new core.DomUtils, odfUtils = new odf.OdfUtils, baseFilter = odtDocument.getPositionFilter(), keyboardMovementsFilter = new core.PositionFilterChain, rootFilter = odtDocument.createRootFilter(inputMemberId), TRAILING_SPACE = odf.WordBoundaryFilter.IncludeWhitespace.TRAILING, LEADING_SPACE = odf.WordBoundaryFilter.IncludeWhitespace.LEADING;
+ var odtDocument = session.getOdtDocument(), domUtils = core.DomUtils, odfUtils = odf.OdfUtils, baseFilter = odtDocument.getPositionFilter(), guiStepUtils = new gui.GuiStepUtils, rootFilter = odtDocument.createRootFilter(inputMemberId), caretXPositionLocator = null, lastXPosition, resetLastXPositionTask, TRAILING_SPACE = odf.WordBoundaryFilter.IncludeWhitespace.TRAILING, LEADING_SPACE = odf.WordBoundaryFilter.IncludeWhitespace.LEADING, PREVIOUS = core.StepDirection.PREVIOUS, NEXT = core.StepDirection.NEXT,
+ UPDOWN_NAVIGATION_RESET_DELAY_MS = 2E3;
+ function resetLastXPosition(op) {
+ var opspec = op.spec();
+ if (op.isEdit || opspec.memberid === inputMemberId) {
+ lastXPosition = undefined;
+ resetLastXPositionTask.cancel();
+ }
+ }
function createKeyboardStepIterator() {
var cursor = odtDocument.getCursor(inputMemberId), node = cursor.getNode();
- return odtDocument.createStepIterator(node, 0, [baseFilter, rootFilter], odtDocument.getRootElement(node))
+ return odtDocument.createStepIterator(node, 0, [baseFilter, rootFilter], odtDocument.getRootElement(node));
}
function createWordBoundaryStepIterator(node, offset, includeWhitespace) {
- var wordBoundaryFilter = new odf.WordBoundaryFilter(odtDocument, includeWhitespace);
- return odtDocument.createStepIterator(node, offset, [baseFilter, rootFilter, wordBoundaryFilter], odtDocument.getRootElement(node))
- }
- function constrain(lookup) {
- return function(originalNode) {
- var originalContainer = lookup(originalNode);
- return function(step, node) {
- return lookup(node) === originalContainer
- }
- }
+ var wordBoundaryFilter = new odf.WordBoundaryFilter(odtDocument, includeWhitespace), nodeRoot = odtDocument.getRootElement(node) || odtDocument.getRootNode(), nodeRootFilter = odtDocument.createRootFilter(nodeRoot);
+ return odtDocument.createStepIterator(node, offset, [baseFilter, nodeRootFilter, wordBoundaryFilter], nodeRoot);
}
function selectionToRange(selection) {
var hasForwardSelection = domUtils.comparePoints((selection.anchorNode), selection.anchorOffset, (selection.focusNode), selection.focusOffset) >= 0, range = selection.focusNode.ownerDocument.createRange();
- if(hasForwardSelection) {
+ if (hasForwardSelection) {
range.setStart(selection.anchorNode, selection.anchorOffset);
- range.setEnd(selection.focusNode, selection.focusOffset)
- }else {
+ range.setEnd(selection.focusNode, selection.focusOffset);
+ } else {
range.setStart(selection.focusNode, selection.focusOffset);
- range.setEnd(selection.anchorNode, selection.anchorOffset)
+ range.setEnd(selection.anchorNode, selection.anchorOffset);
}
- return{range:range, hasForwardSelection:hasForwardSelection}
+ return {range:range, hasForwardSelection:hasForwardSelection};
}
this.selectionToRange = selectionToRange;
function rangeToSelection(range, hasForwardSelection) {
- if(hasForwardSelection) {
- return{anchorNode:(range.startContainer), anchorOffset:range.startOffset, focusNode:(range.endContainer), focusOffset:range.endOffset}
+ if (hasForwardSelection) {
+ return {anchorNode:(range.startContainer), anchorOffset:range.startOffset, focusNode:(range.endContainer), focusOffset:range.endOffset};
}
- return{anchorNode:(range.endContainer), anchorOffset:range.endOffset, focusNode:(range.startContainer), focusOffset:range.startOffset}
+ return {anchorNode:(range.endContainer), anchorOffset:range.endOffset, focusNode:(range.startContainer), focusOffset:range.startOffset};
}
this.rangeToSelection = rangeToSelection;
function createOpMoveCursor(position, length, selectionType) {
var op = new ops.OpMoveCursor;
op.init({memberid:inputMemberId, position:position, length:length || 0, selectionType:selectionType});
- return op
+ return op;
+ }
+ function moveCursorFocusPoint(focusNode, focusOffset, extend) {
+ var cursor, newSelection, newCursorSelection;
+ cursor = odtDocument.getCursor(inputMemberId);
+ newSelection = rangeToSelection(cursor.getSelectedRange(), cursor.hasForwardSelection());
+ newSelection.focusNode = focusNode;
+ newSelection.focusOffset = focusOffset;
+ if (!extend) {
+ newSelection.anchorNode = newSelection.focusNode;
+ newSelection.anchorOffset = newSelection.focusOffset;
+ }
+ newCursorSelection = odtDocument.convertDomToCursorRange(newSelection);
+ session.enqueue([createOpMoveCursor(newCursorSelection.position, newCursorSelection.length)]);
}
function selectImage(frameNode) {
var frameRoot = odtDocument.getRootElement(frameNode), frameRootFilter = odtDocument.createRootFilter(frameRoot), stepIterator = odtDocument.createStepIterator(frameNode, 0, [frameRootFilter, odtDocument.getPositionFilter()], frameRoot), anchorNode, anchorOffset, newSelection, op;
- if(!stepIterator.roundToPreviousStep()) {
- runtime.assert(false, "No walkable position before frame")
+ if (!stepIterator.roundToPreviousStep()) {
+ runtime.assert(false, "No walkable position before frame");
}
anchorNode = stepIterator.container();
anchorOffset = stepIterator.offset();
stepIterator.setPosition(frameNode, frameNode.childNodes.length);
- if(!stepIterator.roundToNextStep()) {
- runtime.assert(false, "No walkable position after frame")
+ if (!stepIterator.roundToNextStep()) {
+ runtime.assert(false, "No walkable position after frame");
}
newSelection = odtDocument.convertDomToCursorRange({anchorNode:anchorNode, anchorOffset:anchorOffset, focusNode:stepIterator.container(), focusOffset:stepIterator.offset()});
op = createOpMoveCursor(newSelection.position, newSelection.length, ops.OdtCursor.RegionSelection);
- session.enqueue([op])
+ session.enqueue([op]);
}
this.selectImage = selectImage;
function expandToWordBoundaries(range) {
var stepIterator;
stepIterator = createWordBoundaryStepIterator((range.startContainer), range.startOffset, TRAILING_SPACE);
- if(stepIterator.roundToPreviousStep()) {
- range.setStart(stepIterator.container(), stepIterator.offset())
+ if (stepIterator.roundToPreviousStep()) {
+ range.setStart(stepIterator.container(), stepIterator.offset());
}
stepIterator = createWordBoundaryStepIterator((range.endContainer), range.endOffset, LEADING_SPACE);
- if(stepIterator.roundToNextStep()) {
- range.setEnd(stepIterator.container(), stepIterator.offset())
+ if (stepIterator.roundToNextStep()) {
+ range.setEnd(stepIterator.container(), stepIterator.offset());
}
}
this.expandToWordBoundaries = expandToWordBoundaries;
function expandToParagraphBoundaries(range) {
var paragraphs = odfUtils.getParagraphElements(range), startParagraph = paragraphs[0], endParagraph = paragraphs[paragraphs.length - 1];
- if(startParagraph) {
- range.setStart(startParagraph, 0)
+ if (startParagraph) {
+ range.setStart(startParagraph, 0);
}
- if(endParagraph) {
- if(odfUtils.isParagraph(range.endContainer) && range.endOffset === 0) {
- range.setEndBefore(endParagraph)
- }else {
- range.setEnd(endParagraph, endParagraph.childNodes.length)
+ if (endParagraph) {
+ if (odfUtils.isParagraph(range.endContainer) && range.endOffset === 0) {
+ range.setEndBefore(endParagraph);
+ } else {
+ range.setEnd(endParagraph, endParagraph.childNodes.length);
}
}
}
this.expandToParagraphBoundaries = expandToParagraphBoundaries;
+ function roundToClosestStep(root, filters, range, modifyStart) {
+ var stepIterator, node, offset;
+ if (modifyStart) {
+ node = (range.startContainer);
+ offset = range.startOffset;
+ } else {
+ node = (range.endContainer);
+ offset = range.endOffset;
+ }
+ if (!domUtils.containsNode(root, node)) {
+ if (domUtils.comparePoints(root, 0, node, offset) < 0) {
+ offset = 0;
+ } else {
+ offset = root.childNodes.length;
+ }
+ node = root;
+ }
+ stepIterator = odtDocument.createStepIterator(node, offset, filters, odfUtils.getParagraphElement(node) || root);
+ if (!stepIterator.roundToClosestStep()) {
+ runtime.assert(false, "No step found in requested range");
+ }
+ if (modifyStart) {
+ range.setStart(stepIterator.container(), stepIterator.offset());
+ } else {
+ range.setEnd(stepIterator.container(), stepIterator.offset());
+ }
+ }
function selectRange(range, hasForwardSelection, clickCount) {
- var canvasElement = odtDocument.getOdfCanvas().getElement(), validSelection, startInsideCanvas, endInsideCanvas, existingSelection, newSelection, op;
+ var canvasElement = odtDocument.getOdfCanvas().getElement(), validSelection, startInsideCanvas, endInsideCanvas, existingSelection, newSelection, anchorRoot, filters = [baseFilter], op;
startInsideCanvas = domUtils.containsNode(canvasElement, range.startContainer);
endInsideCanvas = domUtils.containsNode(canvasElement, range.endContainer);
- if(!startInsideCanvas && !endInsideCanvas) {
- return
+ if (!startInsideCanvas && !endInsideCanvas) {
+ return;
}
- if(startInsideCanvas && endInsideCanvas) {
- if(clickCount === 2) {
- expandToWordBoundaries(range)
- }else {
- if(clickCount >= 3) {
- expandToParagraphBoundaries(range)
+ if (startInsideCanvas && endInsideCanvas) {
+ if (clickCount === 2) {
+ expandToWordBoundaries(range);
+ } else {
+ if (clickCount >= 3) {
+ expandToParagraphBoundaries(range);
}
}
}
+ if (hasForwardSelection) {
+ anchorRoot = odtDocument.getRootElement((range.startContainer));
+ } else {
+ anchorRoot = odtDocument.getRootElement((range.endContainer));
+ }
+ if (!anchorRoot) {
+ anchorRoot = odtDocument.getRootNode();
+ }
+ filters.push(odtDocument.createRootFilter(anchorRoot));
+ roundToClosestStep(anchorRoot, filters, range, true);
+ roundToClosestStep(anchorRoot, filters, range, false);
validSelection = rangeToSelection(range, hasForwardSelection);
- newSelection = odtDocument.convertDomToCursorRange(validSelection, constrain(odfUtils.getParagraphElement));
+ newSelection = odtDocument.convertDomToCursorRange(validSelection);
existingSelection = odtDocument.getCursorSelection(inputMemberId);
- if(newSelection.position !== existingSelection.position || newSelection.length !== existingSelection.length) {
+ if (newSelection.position !== existingSelection.position || newSelection.length !== existingSelection.length) {
op = createOpMoveCursor(newSelection.position, newSelection.length, ops.OdtCursor.RangeSelection);
- session.enqueue([op])
+ session.enqueue([op]);
}
}
this.selectRange = selectRange;
- function extendCursorByAdjustment(lengthAdjust) {
- var selection = odtDocument.getCursorSelection(inputMemberId), stepCounter = odtDocument.getCursor(inputMemberId).getStepCounter(), newLength;
- if(lengthAdjust !== 0) {
- if(lengthAdjust > 0) {
- lengthAdjust = stepCounter.convertForwardStepsBetweenFilters(lengthAdjust, keyboardMovementsFilter, baseFilter)
- }else {
- lengthAdjust = -stepCounter.convertBackwardStepsBetweenFilters(-lengthAdjust, keyboardMovementsFilter, baseFilter)
- }
- newLength = selection.length + lengthAdjust;
- session.enqueue([createOpMoveCursor(selection.position, newLength)])
- }
- }
- function extendSelection(advanceIterator) {
- var stepIterator = createKeyboardStepIterator(), anchorNode = odtDocument.getCursor(inputMemberId).getAnchorNode(), newSelection;
- if(advanceIterator(stepIterator)) {
- newSelection = odtDocument.convertDomToCursorRange({anchorNode:anchorNode, anchorOffset:0, focusNode:stepIterator.container(), focusOffset:stepIterator.offset()});
- session.enqueue([createOpMoveCursor(newSelection.position, newSelection.length)])
- }
- }
- function moveCursorByAdjustment(positionAdjust) {
- var position = odtDocument.getCursorPosition(inputMemberId), stepCounter = odtDocument.getCursor(inputMemberId).getStepCounter();
- if(positionAdjust !== 0) {
- positionAdjust = positionAdjust > 0 ? stepCounter.convertForwardStepsBetweenFilters(positionAdjust, keyboardMovementsFilter, baseFilter) : -stepCounter.convertBackwardStepsBetweenFilters(-positionAdjust, keyboardMovementsFilter, baseFilter);
- position = position + positionAdjust;
- session.enqueue([createOpMoveCursor(position, 0)])
- }
- }
- function moveCursor(advanceIterator) {
- var stepIterator = createKeyboardStepIterator(), position;
- if(advanceIterator(stepIterator)) {
- position = odtDocument.convertDomPointToCursorStep(stepIterator.container(), stepIterator.offset());
- session.enqueue([createOpMoveCursor(position, 0)])
+ function moveCursor(direction, extend) {
+ var stepIterator = createKeyboardStepIterator();
+ if (stepIterator.advanceStep(direction)) {
+ moveCursorFocusPoint(stepIterator.container(), stepIterator.offset(), extend);
}
}
function moveCursorToLeft() {
- moveCursor(function(iterator) {
- return iterator.previousStep()
- });
- return true
+ moveCursor(PREVIOUS, false);
+ return true;
}
this.moveCursorToLeft = moveCursorToLeft;
function moveCursorToRight() {
- moveCursor(function(iterator) {
- return iterator.nextStep()
- });
- return true
+ moveCursor(NEXT, false);
+ return true;
}
this.moveCursorToRight = moveCursorToRight;
function extendSelectionToLeft() {
- extendSelection(function(iterator) {
- return iterator.previousStep()
- });
- return true
+ moveCursor(PREVIOUS, true);
+ return true;
}
this.extendSelectionToLeft = extendSelectionToLeft;
function extendSelectionToRight() {
- extendSelection(function(iterator) {
- return iterator.nextStep()
- });
- return true
+ moveCursor(NEXT, true);
+ return true;
}
this.extendSelectionToRight = extendSelectionToRight;
+ this.setCaretXPositionLocator = function(locator) {
+ caretXPositionLocator = locator;
+ };
function moveCursorByLine(direction, extend) {
- var paragraphNode = odtDocument.getParagraphElement(odtDocument.getCursor(inputMemberId).getNode()), steps;
- runtime.assert(Boolean(paragraphNode), "SelectionController: Cursor outside paragraph");
- steps = odtDocument.getCursor(inputMemberId).getStepCounter().countLinesSteps(direction, keyboardMovementsFilter);
- if(extend) {
- extendCursorByAdjustment(steps)
- }else {
- moveCursorByAdjustment(steps)
+ var stepIterator, currentX = lastXPosition, stepScanners = [new gui.LineBoundaryScanner, new gui.ParagraphBoundaryScanner];
+ if (currentX === undefined && caretXPositionLocator) {
+ currentX = caretXPositionLocator();
+ }
+ if (isNaN(currentX)) {
+ return;
+ }
+ stepIterator = createKeyboardStepIterator();
+ if (!guiStepUtils.moveToFilteredStep(stepIterator, direction, stepScanners)) {
+ return;
+ }
+ if (!stepIterator.advanceStep(direction)) {
+ return;
+ }
+ stepScanners = [new gui.ClosestXOffsetScanner((currentX)), new gui.LineBoundaryScanner, new gui.ParagraphBoundaryScanner];
+ if (guiStepUtils.moveToFilteredStep(stepIterator, direction, stepScanners)) {
+ moveCursorFocusPoint(stepIterator.container(), stepIterator.offset(), extend);
+ lastXPosition = currentX;
+ resetLastXPositionTask.restart();
}
}
function moveCursorUp() {
- moveCursorByLine(-1, false);
- return true
+ moveCursorByLine(PREVIOUS, false);
+ return true;
}
this.moveCursorUp = moveCursorUp;
function moveCursorDown() {
- moveCursorByLine(1, false);
- return true
+ moveCursorByLine(NEXT, false);
+ return true;
}
this.moveCursorDown = moveCursorDown;
function extendSelectionUp() {
- moveCursorByLine(-1, true);
- return true
+ moveCursorByLine(PREVIOUS, true);
+ return true;
}
this.extendSelectionUp = extendSelectionUp;
function extendSelectionDown() {
- moveCursorByLine(1, true);
- return true
+ moveCursorByLine(NEXT, true);
+ return true;
}
this.extendSelectionDown = extendSelectionDown;
function moveCursorToLineBoundary(direction, extend) {
- var steps = odtDocument.getCursor(inputMemberId).getStepCounter().countStepsToLineBoundary(direction, keyboardMovementsFilter);
- if(extend) {
- extendCursorByAdjustment(steps)
- }else {
- moveCursorByAdjustment(steps)
+ var stepIterator = createKeyboardStepIterator(), stepScanners = [new gui.LineBoundaryScanner, new gui.ParagraphBoundaryScanner];
+ if (guiStepUtils.moveToFilteredStep(stepIterator, direction, stepScanners)) {
+ moveCursorFocusPoint(stepIterator.container(), stepIterator.offset(), extend);
}
}
function moveCursorByWord(direction, extend) {
- var cursor = odtDocument.getCursor(inputMemberId), newSelection = rangeToSelection(cursor.getSelectedRange(), cursor.hasForwardSelection()), newCursorSelection, selectionUpdated, stepIterator = createWordBoundaryStepIterator(newSelection.focusNode, newSelection.focusOffset, TRAILING_SPACE);
- if(direction >= 0) {
- selectionUpdated = stepIterator.nextStep()
- }else {
- selectionUpdated = stepIterator.previousStep()
- }
- if(selectionUpdated) {
- newSelection.focusNode = stepIterator.container();
- newSelection.focusOffset = stepIterator.offset();
- if(!extend) {
- newSelection.anchorNode = newSelection.focusNode;
- newSelection.anchorOffset = newSelection.focusOffset
- }
- newCursorSelection = odtDocument.convertDomToCursorRange(newSelection);
- session.enqueue([createOpMoveCursor(newCursorSelection.position, newCursorSelection.length)])
+ var cursor = odtDocument.getCursor(inputMemberId), newSelection = rangeToSelection(cursor.getSelectedRange(), cursor.hasForwardSelection()), stepIterator = createWordBoundaryStepIterator(newSelection.focusNode, newSelection.focusOffset, TRAILING_SPACE);
+ if (stepIterator.advanceStep(direction)) {
+ moveCursorFocusPoint(stepIterator.container(), stepIterator.offset(), extend);
}
}
function moveCursorBeforeWord() {
- moveCursorByWord(-1, false);
- return true
+ moveCursorByWord(PREVIOUS, false);
+ return true;
}
this.moveCursorBeforeWord = moveCursorBeforeWord;
function moveCursorPastWord() {
- moveCursorByWord(1, false);
- return true
+ moveCursorByWord(NEXT, false);
+ return true;
}
this.moveCursorPastWord = moveCursorPastWord;
function extendSelectionBeforeWord() {
- moveCursorByWord(-1, true);
- return true
+ moveCursorByWord(PREVIOUS, true);
+ return true;
}
this.extendSelectionBeforeWord = extendSelectionBeforeWord;
function extendSelectionPastWord() {
- moveCursorByWord(1, true);
- return true
+ moveCursorByWord(NEXT, true);
+ return true;
}
this.extendSelectionPastWord = extendSelectionPastWord;
function moveCursorToLineStart() {
- moveCursorToLineBoundary(-1, false);
- return true
+ moveCursorToLineBoundary(PREVIOUS, false);
+ return true;
}
this.moveCursorToLineStart = moveCursorToLineStart;
function moveCursorToLineEnd() {
- moveCursorToLineBoundary(1, false);
- return true
+ moveCursorToLineBoundary(NEXT, false);
+ return true;
}
this.moveCursorToLineEnd = moveCursorToLineEnd;
function extendSelectionToLineStart() {
- moveCursorToLineBoundary(-1, true);
- return true
+ moveCursorToLineBoundary(PREVIOUS, true);
+ return true;
}
this.extendSelectionToLineStart = extendSelectionToLineStart;
function extendSelectionToLineEnd() {
- moveCursorToLineBoundary(1, true);
- return true
+ moveCursorToLineBoundary(NEXT, true);
+ return true;
}
this.extendSelectionToLineEnd = extendSelectionToLineEnd;
- function extendCursorToNodeBoundary(direction, getContainmentNode) {
- var cursor = odtDocument.getCursor(inputMemberId), node = getContainmentNode(cursor.getNode()), selection = rangeToSelection(cursor.getSelectedRange(), cursor.hasForwardSelection()), newCursorSelection;
- runtime.assert(Boolean(node), "SelectionController: Cursor outside root");
- if(direction < 0) {
- selection.focusNode = (node);
- selection.focusOffset = 0
- }else {
- selection.focusNode = (node);
- selection.focusOffset = node.childNodes.length
- }
- newCursorSelection = odtDocument.convertDomToCursorRange(selection, constrain(getContainmentNode));
- session.enqueue([createOpMoveCursor(newCursorSelection.position, newCursorSelection.length)])
- }
- function extendSelectionToParagraphStart() {
- extendCursorToNodeBoundary(-1, odtDocument.getParagraphElement);
- return true
- }
- this.extendSelectionToParagraphStart = extendSelectionToParagraphStart;
- function extendSelectionToParagraphEnd() {
- extendCursorToNodeBoundary(1, odtDocument.getParagraphElement);
- return true
- }
- this.extendSelectionToParagraphEnd = extendSelectionToParagraphEnd;
- function moveCursorToRootBoundary(direction) {
- var cursor = odtDocument.getCursor(inputMemberId), root = odtDocument.getRootElement(cursor.getNode()), newPosition;
- runtime.assert(Boolean(root), "SelectionController: Cursor outside root");
- if(direction < 0) {
- newPosition = odtDocument.convertDomPointToCursorStep(root, 0, function(step) {
- return step === ops.StepsTranslator.NEXT_STEP
- })
- }else {
- newPosition = odtDocument.convertDomPointToCursorStep(root, root.childNodes.length)
- }
- session.enqueue([createOpMoveCursor(newPosition, 0)]);
- return true
- }
- function moveCursorToDocumentStart() {
- moveCursorToRootBoundary(-1);
- return true
- }
- this.moveCursorToDocumentStart = moveCursorToDocumentStart;
- function moveCursorToDocumentEnd() {
- moveCursorToRootBoundary(1);
- return true
- }
- this.moveCursorToDocumentEnd = moveCursorToDocumentEnd;
- function extendSelectionToDocumentStart() {
- extendCursorToNodeBoundary(-1, odtDocument.getRootElement);
- return true
- }
- this.extendSelectionToDocumentStart = extendSelectionToDocumentStart;
- function extendSelectionToDocumentEnd() {
- extendCursorToNodeBoundary(1, odtDocument.getRootElement);
- return true
- }
- this.extendSelectionToDocumentEnd = extendSelectionToDocumentEnd;
+ function adjustSelectionByNode(direction, extend, getContainmentNode) {
+ var validStepFound = false, cursor = odtDocument.getCursor(inputMemberId), containmentNode, selection = rangeToSelection(cursor.getSelectedRange(), cursor.hasForwardSelection()), rootElement = odtDocument.getRootElement(selection.focusNode), stepIterator;
+ runtime.assert(Boolean(rootElement), "SelectionController: Cursor outside root");
+ stepIterator = odtDocument.createStepIterator(selection.focusNode, selection.focusOffset, [baseFilter, rootFilter], rootElement);
+ stepIterator.roundToClosestStep();
+ if (!stepIterator.advanceStep(direction)) {
+ return;
+ }
+ containmentNode = getContainmentNode(stepIterator.container());
+ if (!containmentNode) {
+ return;
+ }
+ if (direction === PREVIOUS) {
+ stepIterator.setPosition((containmentNode), 0);
+ validStepFound = stepIterator.roundToNextStep();
+ } else {
+ stepIterator.setPosition((containmentNode), containmentNode.childNodes.length);
+ validStepFound = stepIterator.roundToPreviousStep();
+ }
+ if (validStepFound) {
+ moveCursorFocusPoint(stepIterator.container(), stepIterator.offset(), extend);
+ }
+ }
+ this.extendSelectionToParagraphStart = function() {
+ adjustSelectionByNode(PREVIOUS, true, odfUtils.getParagraphElement);
+ return true;
+ };
+ this.extendSelectionToParagraphEnd = function() {
+ adjustSelectionByNode(NEXT, true, odfUtils.getParagraphElement);
+ return true;
+ };
+ this.moveCursorToParagraphStart = function() {
+ adjustSelectionByNode(PREVIOUS, false, odfUtils.getParagraphElement);
+ return true;
+ };
+ this.moveCursorToParagraphEnd = function() {
+ adjustSelectionByNode(NEXT, false, odfUtils.getParagraphElement);
+ return true;
+ };
+ this.moveCursorToDocumentStart = function() {
+ adjustSelectionByNode(PREVIOUS, false, odtDocument.getRootElement);
+ return true;
+ };
+ this.moveCursorToDocumentEnd = function() {
+ adjustSelectionByNode(NEXT, false, odtDocument.getRootElement);
+ return true;
+ };
+ this.extendSelectionToDocumentStart = function() {
+ adjustSelectionByNode(PREVIOUS, true, odtDocument.getRootElement);
+ return true;
+ };
+ this.extendSelectionToDocumentEnd = function() {
+ adjustSelectionByNode(NEXT, true, odtDocument.getRootElement);
+ return true;
+ };
function extendSelectionToEntireDocument() {
- var cursor = odtDocument.getCursor(inputMemberId), root = odtDocument.getRootElement(cursor.getNode()), newSelection, newCursorSelection;
- runtime.assert(Boolean(root), "SelectionController: Cursor outside root");
- newSelection = {anchorNode:root, anchorOffset:0, focusNode:root, focusOffset:root.childNodes.length};
- newCursorSelection = odtDocument.convertDomToCursorRange(newSelection, constrain(odtDocument.getRootElement));
+ var cursor = odtDocument.getCursor(inputMemberId), rootElement = odtDocument.getRootElement(cursor.getNode()), anchorNode, anchorOffset, stepIterator, newCursorSelection;
+ runtime.assert(Boolean(rootElement), "SelectionController: Cursor outside root");
+ stepIterator = odtDocument.createStepIterator(rootElement, 0, [baseFilter, rootFilter], rootElement);
+ stepIterator.roundToClosestStep();
+ anchorNode = stepIterator.container();
+ anchorOffset = stepIterator.offset();
+ stepIterator.setPosition(rootElement, rootElement.childNodes.length);
+ stepIterator.roundToClosestStep();
+ newCursorSelection = odtDocument.convertDomToCursorRange({anchorNode:anchorNode, anchorOffset:anchorOffset, focusNode:stepIterator.container(), focusOffset:stepIterator.offset()});
session.enqueue([createOpMoveCursor(newCursorSelection.position, newCursorSelection.length)]);
- return true
+ return true;
}
this.extendSelectionToEntireDocument = extendSelectionToEntireDocument;
+ this.destroy = function(callback) {
+ odtDocument.unsubscribe(ops.OdtDocument.signalOperationStart, resetLastXPosition);
+ core.Async.destroyAll([resetLastXPositionTask.destroy], callback);
+ };
function init() {
- keyboardMovementsFilter.addFilter(baseFilter);
- keyboardMovementsFilter.addFilter(odtDocument.createRootFilter(inputMemberId))
+ resetLastXPositionTask = core.Task.createTimeoutTask(function() {
+ lastXPosition = undefined;
+ }, UPDOWN_NAVIGATION_RESET_DELAY_MS);
+ odtDocument.subscribe(ops.OdtDocument.signalOperationStart, resetLastXPosition);
}
- init()
+ init();
};
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.TextController = function TextController(session, inputMemberId, directStyleOp, paragraphStyleOps) {
- var odtDocument = session.getOdtDocument(), FILTER_ACCEPT = core.PositionFilter.FilterResult.FILTER_ACCEPT;
- function createOpRemoveSelection(selection) {
- var op = new ops.OpRemoveText;
- op.init({memberid:inputMemberId, position:selection.position, length:selection.length});
- return op
+gui.TextController = function TextController(session, sessionConstraints, sessionContext, inputMemberId, directStyleOp, paragraphStyleOps) {
+ var odtDocument = session.getOdtDocument(), odfUtils = odf.OdfUtils, domUtils = core.DomUtils, BACKWARD = false, FORWARD = true, isEnabled = false, textns = odf.Namespaces.textns, NEXT = core.StepDirection.NEXT;
+ function updateEnabledState() {
+ if (sessionConstraints.getState(gui.CommonConstraints.EDIT.REVIEW_MODE) === true) {
+ isEnabled = (sessionContext.isLocalCursorWithinOwnAnnotation());
+ } else {
+ isEnabled = true;
+ }
+ }
+ function onCursorEvent(cursor) {
+ if (cursor.getMemberId() === inputMemberId) {
+ updateEnabledState();
+ }
+ }
+ this.isEnabled = function() {
+ return isEnabled;
+ };
+ function domToCursorRange(range, subTree, withRootFilter) {
+ var filters = [odtDocument.getPositionFilter()], startStep, endStep, stepIterator;
+ if (withRootFilter) {
+ filters.push(odtDocument.createRootFilter((range.startContainer)));
+ }
+ stepIterator = odtDocument.createStepIterator((range.startContainer), range.startOffset, filters, subTree);
+ if (!stepIterator.roundToClosestStep()) {
+ runtime.assert(false, "No walkable step found in paragraph element at range start");
+ }
+ startStep = odtDocument.convertDomPointToCursorStep(stepIterator.container(), stepIterator.offset());
+ if (range.collapsed) {
+ endStep = startStep;
+ } else {
+ stepIterator.setPosition((range.endContainer), range.endOffset);
+ if (!stepIterator.roundToClosestStep()) {
+ runtime.assert(false, "No walkable step found in paragraph element at range end");
+ }
+ endStep = odtDocument.convertDomPointToCursorStep(stepIterator.container(), stepIterator.offset());
+ }
+ return {position:(startStep), length:(endStep - startStep)};
+ }
+ function createRemoveSelectionOps(range) {
+ var firstParagraph, lastParagraph, mergedParagraphStyleName, previousParagraphStart, paragraphs = odfUtils.getParagraphElements(range), paragraphRange = (range.cloneRange()), operations = [];
+ firstParagraph = paragraphs[0];
+ if (paragraphs.length > 1) {
+ if (odfUtils.hasNoODFContent(firstParagraph)) {
+ lastParagraph = paragraphs[paragraphs.length - 1];
+ mergedParagraphStyleName = lastParagraph.getAttributeNS(odf.Namespaces.textns, "style-name") || "";
+ } else {
+ mergedParagraphStyleName = firstParagraph.getAttributeNS(odf.Namespaces.textns, "style-name") || "";
+ }
+ }
+ paragraphs.forEach(function(paragraph, index) {
+ var paragraphStart, removeLimits, intersectionRange, removeOp, mergeOp;
+ paragraphRange.setStart(paragraph, 0);
+ paragraphRange.collapse(true);
+ paragraphStart = domToCursorRange(paragraphRange, paragraph, false).position;
+ if (index > 0) {
+ mergeOp = new ops.OpMergeParagraph;
+ mergeOp.init({memberid:inputMemberId, paragraphStyleName:mergedParagraphStyleName, destinationStartPosition:previousParagraphStart, sourceStartPosition:paragraphStart, moveCursor:index === 1});
+ operations.unshift(mergeOp);
+ }
+ previousParagraphStart = paragraphStart;
+ paragraphRange.selectNodeContents(paragraph);
+ intersectionRange = domUtils.rangeIntersection(paragraphRange, range);
+ if (intersectionRange) {
+ removeLimits = domToCursorRange(intersectionRange, paragraph, true);
+ if (removeLimits.length > 0) {
+ removeOp = new ops.OpRemoveText;
+ removeOp.init({memberid:inputMemberId, position:removeLimits.position, length:removeLimits.length});
+ operations.unshift(removeOp);
+ }
+ }
+ });
+ return operations;
}
function toForwardSelection(selection) {
- if(selection.length < 0) {
+ if (selection.length < 0) {
selection.position += selection.length;
- selection.length = -selection.length
+ selection.length = -selection.length;
}
- return selection
+ return selection;
}
this.enqueueParagraphSplittingOps = function() {
- var selection = toForwardSelection(odtDocument.getCursorSelection(inputMemberId)), op, operations = [], styleOps;
- if(selection.length > 0) {
- op = createOpRemoveSelection(selection);
- operations.push(op)
+ if (!isEnabled) {
+ return false;
+ }
+ var cursor = odtDocument.getCursor(inputMemberId), range = cursor.getSelectedRange(), selection = toForwardSelection(odtDocument.getCursorSelection(inputMemberId)), op, operations = [], styleOps, originalParagraph = (odfUtils.getParagraphElement(cursor.getNode())), paragraphStyle = originalParagraph.getAttributeNS(textns, "style-name") || "";
+ if (selection.length > 0) {
+ operations = operations.concat(createRemoveSelectionOps(range));
}
op = new ops.OpSplitParagraph;
- op.init({memberid:inputMemberId, position:selection.position, moveCursor:true});
+ op.init({memberid:inputMemberId, position:selection.position, paragraphStyleName:paragraphStyle, sourceParagraphPosition:odtDocument.convertDomPointToCursorStep(originalParagraph, 0, NEXT), moveCursor:true});
operations.push(op);
- if(paragraphStyleOps) {
+ if (paragraphStyleOps) {
styleOps = paragraphStyleOps(selection.position + 1);
- operations = operations.concat(styleOps)
+ operations = operations.concat(styleOps);
}
session.enqueue(operations);
- return true
+ return true;
};
- function hasPositionInDirection(cursorNode, forward) {
- var rootConstrainedFilter = new core.PositionFilterChain, iterator = gui.SelectionMover.createPositionIterator(odtDocument.getRootElement(cursorNode)), nextPosition = (forward ? iterator.nextPosition : iterator.previousPosition);
- rootConstrainedFilter.addFilter(odtDocument.getPositionFilter());
- rootConstrainedFilter.addFilter(odtDocument.createRootFilter(inputMemberId));
- iterator.setUnfilteredPosition(cursorNode, 0);
- while(nextPosition()) {
- if(rootConstrainedFilter.acceptPosition(iterator) === FILTER_ACCEPT) {
- return true
+ function createStepIterator(cursorNode) {
+ var cursorRoot = odtDocument.getRootElement(cursorNode), filters = [odtDocument.getPositionFilter(), odtDocument.createRootFilter(cursorRoot)];
+ return odtDocument.createStepIterator(cursorNode, 0, filters, cursorRoot);
+ }
+ function removeTextInDirection(isForward) {
+ if (!isEnabled) {
+ return false;
+ }
+ var cursorNode, range = (odtDocument.getCursor(inputMemberId).getSelectedRange().cloneRange()), selection = toForwardSelection(odtDocument.getCursorSelection(inputMemberId)), stepIterator;
+ if (selection.length === 0) {
+ selection = undefined;
+ cursorNode = odtDocument.getCursor(inputMemberId).getNode();
+ stepIterator = createStepIterator(cursorNode);
+ if (stepIterator.roundToClosestStep() && (isForward ? stepIterator.nextStep() : stepIterator.previousStep())) {
+ selection = toForwardSelection(odtDocument.convertDomToCursorRange({anchorNode:cursorNode, anchorOffset:0, focusNode:stepIterator.container(), focusOffset:stepIterator.offset()}));
+ if (isForward) {
+ range.setStart(cursorNode, 0);
+ range.setEnd(stepIterator.container(), stepIterator.offset());
+ } else {
+ range.setStart(stepIterator.container(), stepIterator.offset());
+ range.setEnd(cursorNode, 0);
+ }
}
}
- return false
+ if (selection) {
+ session.enqueue(createRemoveSelectionOps(range));
+ }
+ return selection !== undefined;
}
this.removeTextByBackspaceKey = function() {
- var cursor = odtDocument.getCursor(inputMemberId), selection = toForwardSelection(odtDocument.getCursorSelection(inputMemberId)), op = null;
- if(selection.length === 0) {
- if(hasPositionInDirection(cursor.getNode(), false)) {
- op = new ops.OpRemoveText;
- op.init({memberid:inputMemberId, position:selection.position - 1, length:1});
- session.enqueue([op])
- }
- }else {
- op = createOpRemoveSelection(selection);
- session.enqueue([op])
- }
- return op !== null
+ return removeTextInDirection(BACKWARD);
};
this.removeTextByDeleteKey = function() {
- var cursor = odtDocument.getCursor(inputMemberId), selection = toForwardSelection(odtDocument.getCursorSelection(inputMemberId)), op = null;
- if(selection.length === 0) {
- if(hasPositionInDirection(cursor.getNode(), true)) {
- op = new ops.OpRemoveText;
- op.init({memberid:inputMemberId, position:selection.position, length:1});
- session.enqueue([op])
- }
- }else {
- op = createOpRemoveSelection(selection);
- session.enqueue([op])
- }
- return op !== null
+ return removeTextInDirection(FORWARD);
};
this.removeCurrentSelection = function() {
- var selection = toForwardSelection(odtDocument.getCursorSelection(inputMemberId)), op;
- if(selection.length !== 0) {
- op = createOpRemoveSelection(selection);
- session.enqueue([op])
+ if (!isEnabled) {
+ return false;
}
- return true
+ var range = odtDocument.getCursor(inputMemberId).getSelectedRange();
+ session.enqueue(createRemoveSelectionOps(range));
+ return true;
};
function insertText(text) {
- var selection = toForwardSelection(odtDocument.getCursorSelection(inputMemberId)), op, stylingOp, operations = [], useCachedStyle = false;
- if(selection.length > 0) {
- op = createOpRemoveSelection(selection);
- operations.push(op);
- useCachedStyle = true
+ if (!isEnabled) {
+ return;
+ }
+ var range = odtDocument.getCursor(inputMemberId).getSelectedRange(), selection = toForwardSelection(odtDocument.getCursorSelection(inputMemberId)), op, stylingOp, operations = [], useCachedStyle = false;
+ if (selection.length > 0) {
+ operations = operations.concat(createRemoveSelectionOps(range));
+ useCachedStyle = true;
}
op = new ops.OpInsertText;
op.init({memberid:inputMemberId, position:selection.position, text:text, moveCursor:true});
operations.push(op);
- if(directStyleOp) {
+ if (directStyleOp) {
stylingOp = directStyleOp(selection.position, text.length, useCachedStyle);
- if(stylingOp) {
- operations.push(stylingOp)
+ if (stylingOp) {
+ operations.push(stylingOp);
}
}
- session.enqueue(operations)
+ session.enqueue(operations);
}
- this.insertText = insertText
+ this.insertText = insertText;
+ this.destroy = function(callback) {
+ odtDocument.unsubscribe(ops.Document.signalCursorMoved, onCursorEvent);
+ sessionConstraints.unsubscribe(gui.CommonConstraints.EDIT.REVIEW_MODE, updateEnabledState);
+ callback();
+ };
+ function init() {
+ odtDocument.subscribe(ops.Document.signalCursorMoved, onCursorEvent);
+ sessionConstraints.subscribe(gui.CommonConstraints.EDIT.REVIEW_MODE, updateEnabledState);
+ updateEnabledState();
+ }
+ init();
};
-(function() {
- return gui.TextController
-})();
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
gui.UndoManager = function UndoManager() {
};
gui.UndoManager.prototype.subscribe = function(signal, callback) {
@@ -14998,389 +15071,408 @@ gui.UndoManager.prototype.moveBackward = function(states) {
};
gui.UndoManager.prototype.onOperationExecuted = function(op) {
};
+gui.UndoManager.prototype.isDocumentModified = function() {
+};
+gui.UndoManager.prototype.setDocumentModified = function(modified) {
+};
gui.UndoManager.signalUndoStackChanged = "undoStackChanged";
gui.UndoManager.signalUndoStateCreated = "undoStateCreated";
gui.UndoManager.signalUndoStateModified = "undoStateModified";
-(function() {
- return gui.UndoManager
-})();
+gui.UndoManager.signalDocumentModifiedChanged = "documentModifiedChanged";
+gui.SessionControllerOptions = function() {
+ this.directTextStylingEnabled = false;
+ this.directParagraphStylingEnabled = false;
+ this.annotationsEnabled = false;
+};
(function() {
var FILTER_ACCEPT = core.PositionFilter.FilterResult.FILTER_ACCEPT;
gui.SessionController = function SessionController(session, inputMemberId, shadowCursor, args) {
- var window = (runtime.getWindow()), odtDocument = session.getOdtDocument(), async = new core.Async, domUtils = new core.DomUtils, odfUtils = new odf.OdfUtils, mimeDataExporter = new gui.MimeDataExporter, clipboard = new gui.Clipboard(mimeDataExporter), keyDownHandler = new gui.KeyboardHandler, keyPressHandler = new gui.KeyboardHandler, keyUpHandler = new gui.KeyboardHandler, clickStartedWithinCanvas = false, objectNameGenerator = new odf.ObjectNameGenerator(odtDocument.getOdfCanvas().odfContainer(),
- inputMemberId), isMouseMoved = false, mouseDownRootFilter = null, handleMouseClickTimeoutId, undoManager = null, eventManager = new gui.EventManager(odtDocument), annotationController = new gui.AnnotationController(session, inputMemberId), directFormattingController = new gui.DirectFormattingController(session, inputMemberId, objectNameGenerator, args.directParagraphStylingEnabled), createCursorStyleOp = (directFormattingController.createCursorStyleOp), createParagraphStyleOps = (directFormattingController.createParagraphStyleOps),
- textController = new gui.TextController(session, inputMemberId, createCursorStyleOp, createParagraphStyleOps), imageController = new gui.ImageController(session, inputMemberId, objectNameGenerator), imageSelector = new gui.ImageSelector(odtDocument.getOdfCanvas()), shadowCursorIterator = gui.SelectionMover.createPositionIterator(odtDocument.getRootNode()), drawShadowCursorTask, redrawRegionSelectionTask, pasteHandler = new gui.PlainTextPasteboard(odtDocument, inputMemberId), inputMethodEditor =
- new gui.InputMethodEditor(inputMemberId, eventManager), clickCount = 0, hyperlinkClickHandler = new gui.HyperlinkClickHandler(odtDocument.getRootNode), hyperlinkController = new gui.HyperlinkController(session, inputMemberId), selectionController = new gui.SelectionController(session, inputMemberId), modifier = gui.KeyboardHandler.Modifier, keyCode = gui.KeyboardHandler.KeyCode, isMacOS = window.navigator.appVersion.toLowerCase().indexOf("mac") !== -1, isIOS = ["iPad", "iPod", "iPhone"].indexOf(window.navigator.platform) !==
+ var window = (runtime.getWindow()), odtDocument = session.getOdtDocument(), sessionConstraints = new gui.SessionConstraints, sessionContext = new gui.SessionContext(session, inputMemberId), domUtils = core.DomUtils, odfUtils = odf.OdfUtils, mimeDataExporter = new gui.MimeDataExporter, clipboard = new gui.Clipboard(mimeDataExporter), keyDownHandler = new gui.KeyboardHandler, keyPressHandler = new gui.KeyboardHandler, keyUpHandler = new gui.KeyboardHandler, clickStartedWithinCanvas = false, objectNameGenerator =
+ new odf.ObjectNameGenerator(odtDocument.getOdfCanvas().odfContainer(), inputMemberId), isMouseMoved = false, mouseDownRootFilter = null, handleMouseClickTimeoutId, undoManager = null, eventManager = new gui.EventManager(odtDocument), annotationsEnabled = args.annotationsEnabled, annotationController = new gui.AnnotationController(session, sessionConstraints, inputMemberId), directFormattingController = new gui.DirectFormattingController(session, sessionConstraints, sessionContext, inputMemberId,
+ objectNameGenerator, args.directTextStylingEnabled, args.directParagraphStylingEnabled), createCursorStyleOp = (directFormattingController.createCursorStyleOp), createParagraphStyleOps = (directFormattingController.createParagraphStyleOps), textController = new gui.TextController(session, sessionConstraints, sessionContext, inputMemberId, createCursorStyleOp, createParagraphStyleOps), imageController = new gui.ImageController(session, sessionConstraints, sessionContext, inputMemberId, objectNameGenerator),
+ imageSelector = new gui.ImageSelector(odtDocument.getOdfCanvas()), shadowCursorIterator = odtDocument.createPositionIterator(odtDocument.getRootNode()), drawShadowCursorTask, redrawRegionSelectionTask, pasteController = new gui.PasteController(session, sessionConstraints, sessionContext, inputMemberId), inputMethodEditor = new gui.InputMethodEditor(inputMemberId, eventManager), clickCount = 0, hyperlinkClickHandler = new gui.HyperlinkClickHandler(odtDocument.getOdfCanvas().getElement, keyDownHandler,
+ keyUpHandler), hyperlinkController = new gui.HyperlinkController(session, sessionConstraints, sessionContext, inputMemberId), selectionController = new gui.SelectionController(session, inputMemberId), metadataController = new gui.MetadataController(session, inputMemberId), modifier = gui.KeyboardHandler.Modifier, keyCode = gui.KeyboardHandler.KeyCode, isMacOS = window.navigator.appVersion.toLowerCase().indexOf("mac") !== -1, isIOS = ["iPad", "iPod", "iPhone"].indexOf(window.navigator.platform) !==
-1, iOSSafariSupport;
runtime.assert(window !== null, "Expected to be run in an environment which has a global window, like a browser.");
function getTarget(e) {
- return(e.target) || (e.srcElement || null)
+ return (e.target) || e.srcElement || null;
}
function cancelEvent(event) {
- if(event.preventDefault) {
- event.preventDefault()
- }else {
- event.returnValue = false
+ if (event.preventDefault) {
+ event.preventDefault();
+ } else {
+ event.returnValue = false;
}
}
function caretPositionFromPoint(x, y) {
var doc = odtDocument.getDOMDocument(), c, result = null;
- if(doc.caretRangeFromPoint) {
+ if (doc.caretRangeFromPoint) {
c = doc.caretRangeFromPoint(x, y);
- result = {container:(c.startContainer), offset:c.startOffset}
- }else {
- if(doc.caretPositionFromPoint) {
+ result = {container:(c.startContainer), offset:c.startOffset};
+ } else {
+ if (doc.caretPositionFromPoint) {
c = doc.caretPositionFromPoint(x, y);
- if(c && c.offsetNode) {
- result = {container:c.offsetNode, offset:c.offset}
+ if (c && c.offsetNode) {
+ result = {container:c.offsetNode, offset:c.offset};
}
}
}
- return result
+ return result;
}
function redrawRegionSelection() {
var cursor = odtDocument.getCursor(inputMemberId), imageElement;
- if(cursor && cursor.getSelectionType() === ops.OdtCursor.RegionSelection) {
+ if (cursor && cursor.getSelectionType() === ops.OdtCursor.RegionSelection) {
imageElement = odfUtils.getImageElements(cursor.getSelectedRange())[0];
- if(imageElement) {
+ if (imageElement) {
imageSelector.select((imageElement.parentNode));
- return
+ return;
}
}
- imageSelector.clearSelection()
+ imageSelector.clearSelection();
}
function stringFromKeyPress(event) {
- if(event.which === null || event.which === undefined) {
- return String.fromCharCode(event.keyCode)
+ if (event.which === null || event.which === undefined) {
+ return String.fromCharCode(event.keyCode);
}
- if(event.which !== 0 && event.charCode !== 0) {
- return String.fromCharCode(event.which)
+ if (event.which !== 0 && event.charCode !== 0) {
+ return String.fromCharCode(event.which);
}
- return null
+ return null;
}
function handleCut(e) {
var cursor = odtDocument.getCursor(inputMemberId), selectedRange = cursor.getSelectedRange();
- if(selectedRange.collapsed) {
+ if (selectedRange.collapsed) {
e.preventDefault();
- return
+ return;
}
- if(clipboard.setDataFromRange(e, selectedRange)) {
- textController.removeCurrentSelection()
- }else {
- runtime.log("Cut operation failed")
+ if (clipboard.setDataFromRange(e, selectedRange)) {
+ textController.removeCurrentSelection();
+ } else {
+ runtime.log("Cut operation failed");
}
}
function handleBeforeCut() {
var cursor = odtDocument.getCursor(inputMemberId), selectedRange = cursor.getSelectedRange();
- return selectedRange.collapsed !== false
+ return selectedRange.collapsed !== false;
}
function handleCopy(e) {
var cursor = odtDocument.getCursor(inputMemberId), selectedRange = cursor.getSelectedRange();
- if(selectedRange.collapsed) {
+ if (selectedRange.collapsed) {
e.preventDefault();
- return
+ return;
}
- if(!clipboard.setDataFromRange(e, selectedRange)) {
- runtime.log("Copy operation failed")
+ if (!clipboard.setDataFromRange(e, selectedRange)) {
+ runtime.log("Copy operation failed");
}
}
function handlePaste(e) {
var plainText;
- if(window.clipboardData && window.clipboardData.getData) {
- plainText = window.clipboardData.getData("Text")
- }else {
- if(e.clipboardData && e.clipboardData.getData) {
- plainText = e.clipboardData.getData("text/plain")
+ if (window.clipboardData && window.clipboardData.getData) {
+ plainText = window.clipboardData.getData("Text");
+ } else {
+ if (e.clipboardData && e.clipboardData.getData) {
+ plainText = e.clipboardData.getData("text/plain");
}
}
- if(plainText) {
+ if (plainText) {
textController.removeCurrentSelection();
- session.enqueue(pasteHandler.createPasteOps(plainText))
+ pasteController.paste(plainText);
}
- cancelEvent(e)
+ cancelEvent(e);
}
function handleBeforePaste() {
- return false
+ return false;
}
function updateUndoStack(op) {
- if(undoManager) {
- undoManager.onOperationExecuted(op)
+ if (undoManager) {
+ undoManager.onOperationExecuted(op);
}
}
function forwardUndoStackChange(e) {
- odtDocument.emit(ops.OdtDocument.signalUndoStackChanged, e)
+ odtDocument.emit(ops.OdtDocument.signalUndoStackChanged, e);
}
function undo() {
- var eventTrap = eventManager.getEventTrap(), sizer, hadFocusBefore;
- if(undoManager) {
+ var hadFocusBefore;
+ if (undoManager) {
hadFocusBefore = eventManager.hasFocus();
undoManager.moveBackward(1);
- sizer = odtDocument.getOdfCanvas().getSizer();
- if(!domUtils.containsNode(sizer, eventTrap)) {
- sizer.appendChild(eventTrap);
- if(hadFocusBefore) {
- eventManager.focus()
- }
+ if (hadFocusBefore) {
+ eventManager.focus();
}
- return true
+ return true;
}
- return false
+ return false;
}
this.undo = undo;
function redo() {
var hadFocusBefore;
- if(undoManager) {
+ if (undoManager) {
hadFocusBefore = eventManager.hasFocus();
undoManager.moveForward(1);
- if(hadFocusBefore) {
- eventManager.focus()
+ if (hadFocusBefore) {
+ eventManager.focus();
}
- return true
+ return true;
}
- return false
+ return false;
}
this.redo = redo;
function extendSelectionByDrag(event) {
var position, cursor = odtDocument.getCursor(inputMemberId), selectedRange = cursor.getSelectedRange(), newSelectionRange, handleEnd = (getTarget(event)).getAttribute("end");
- if(selectedRange && handleEnd) {
+ if (selectedRange && handleEnd) {
position = caretPositionFromPoint(event.clientX, event.clientY);
- if(position) {
+ if (position) {
shadowCursorIterator.setUnfilteredPosition(position.container, position.offset);
- if(mouseDownRootFilter.acceptPosition(shadowCursorIterator) === FILTER_ACCEPT) {
+ if (mouseDownRootFilter.acceptPosition(shadowCursorIterator) === FILTER_ACCEPT) {
newSelectionRange = (selectedRange.cloneRange());
- if(handleEnd === "left") {
- newSelectionRange.setStart(shadowCursorIterator.container(), shadowCursorIterator.unfilteredDomOffset())
- }else {
- newSelectionRange.setEnd(shadowCursorIterator.container(), shadowCursorIterator.unfilteredDomOffset())
+ if (handleEnd === "left") {
+ newSelectionRange.setStart(shadowCursorIterator.container(), shadowCursorIterator.unfilteredDomOffset());
+ } else {
+ newSelectionRange.setEnd(shadowCursorIterator.container(), shadowCursorIterator.unfilteredDomOffset());
}
shadowCursor.setSelectedRange(newSelectionRange, handleEnd === "right");
- odtDocument.emit(ops.Document.signalCursorMoved, shadowCursor)
+ odtDocument.emit(ops.Document.signalCursorMoved, shadowCursor);
}
}
}
}
function updateCursorSelection() {
- selectionController.selectRange(shadowCursor.getSelectedRange(), shadowCursor.hasForwardSelection(), 1)
+ selectionController.selectRange(shadowCursor.getSelectedRange(), shadowCursor.hasForwardSelection(), 1);
}
function updateShadowCursor() {
var selection = window.getSelection(), selectionRange = selection.rangeCount > 0 && selectionController.selectionToRange(selection);
- if(clickStartedWithinCanvas && selectionRange) {
+ if (clickStartedWithinCanvas && selectionRange) {
isMouseMoved = true;
imageSelector.clearSelection();
shadowCursorIterator.setUnfilteredPosition((selection.focusNode), selection.focusOffset);
- if(mouseDownRootFilter.acceptPosition(shadowCursorIterator) === FILTER_ACCEPT) {
- if(clickCount === 2) {
- selectionController.expandToWordBoundaries(selectionRange.range)
- }else {
- if(clickCount >= 3) {
- selectionController.expandToParagraphBoundaries(selectionRange.range)
+ if (mouseDownRootFilter.acceptPosition(shadowCursorIterator) === FILTER_ACCEPT) {
+ if (clickCount === 2) {
+ selectionController.expandToWordBoundaries(selectionRange.range);
+ } else {
+ if (clickCount >= 3) {
+ selectionController.expandToParagraphBoundaries(selectionRange.range);
}
}
shadowCursor.setSelectedRange(selectionRange.range, selectionRange.hasForwardSelection);
- odtDocument.emit(ops.Document.signalCursorMoved, shadowCursor)
+ odtDocument.emit(ops.Document.signalCursorMoved, shadowCursor);
}
}
}
function synchronizeWindowSelection(cursor) {
var selection = window.getSelection(), range = cursor.getSelectedRange();
- if(selection.extend) {
- if(cursor.hasForwardSelection()) {
+ if (selection.extend) {
+ if (cursor.hasForwardSelection()) {
selection.collapse(range.startContainer, range.startOffset);
- selection.extend(range.endContainer, range.endOffset)
- }else {
+ selection.extend(range.endContainer, range.endOffset);
+ } else {
selection.collapse(range.endContainer, range.endOffset);
- selection.extend(range.startContainer, range.startOffset)
+ selection.extend(range.startContainer, range.startOffset);
}
- }else {
+ } else {
selection.removeAllRanges();
- selection.addRange(range.cloneRange())
+ selection.addRange(range.cloneRange());
}
}
+ function computeClickCount(event) {
+ return event.button === 0 ? event.detail : 0;
+ }
function handleMouseDown(e) {
- var target = getTarget(e), cursor = odtDocument.getCursor(inputMemberId);
+ var target = getTarget(e), cursor = odtDocument.getCursor(inputMemberId), rootNode;
clickStartedWithinCanvas = target !== null && domUtils.containsNode(odtDocument.getOdfCanvas().getElement(), target);
- if(clickStartedWithinCanvas) {
+ if (clickStartedWithinCanvas) {
isMouseMoved = false;
- mouseDownRootFilter = odtDocument.createRootFilter((target));
- clickCount = e.detail;
- if(cursor && e.shiftKey) {
- window.getSelection().collapse(cursor.getAnchorNode(), 0)
- }else {
- synchronizeWindowSelection(cursor)
+ rootNode = odtDocument.getRootElement((target)) || odtDocument.getRootNode();
+ mouseDownRootFilter = odtDocument.createRootFilter(rootNode);
+ clickCount = computeClickCount(e);
+ if (cursor && e.shiftKey) {
+ window.getSelection().collapse(cursor.getAnchorNode(), 0);
+ } else {
+ synchronizeWindowSelection(cursor);
}
- if(clickCount > 1) {
- updateShadowCursor()
+ if (clickCount > 1) {
+ updateShadowCursor();
}
}
}
function mutableSelection(selection) {
- if(selection) {
- return{anchorNode:selection.anchorNode, anchorOffset:selection.anchorOffset, focusNode:selection.focusNode, focusOffset:selection.focusOffset}
+ if (selection) {
+ return {anchorNode:selection.anchorNode, anchorOffset:selection.anchorOffset, focusNode:selection.focusNode, focusOffset:selection.focusOffset};
}
- return null
+ return null;
}
function getNextWalkablePosition(node) {
var root = odtDocument.getRootElement(node), rootFilter = odtDocument.createRootFilter(root), stepIterator = odtDocument.createStepIterator(node, 0, [rootFilter, odtDocument.getPositionFilter()], root);
stepIterator.setPosition(node, node.childNodes.length);
- if(!stepIterator.roundToNextStep()) {
- return null
+ if (!stepIterator.roundToNextStep()) {
+ return null;
}
- return{container:stepIterator.container(), offset:stepIterator.offset()}
+ return {container:stepIterator.container(), offset:stepIterator.offset()};
}
function moveByMouseClickEvent(event) {
- var selection = mutableSelection(window.getSelection()), position, selectionRange, rect, frameNode;
- if(!selection.anchorNode && !selection.focusNode) {
+ var selection = mutableSelection(window.getSelection()), isCollapsed = window.getSelection().isCollapsed, position, selectionRange, rect, frameNode;
+ if (!selection.anchorNode && !selection.focusNode) {
position = caretPositionFromPoint(event.clientX, event.clientY);
- if(position) {
+ if (position) {
selection.anchorNode = (position.container);
selection.anchorOffset = position.offset;
selection.focusNode = selection.anchorNode;
- selection.focusOffset = selection.anchorOffset
+ selection.focusOffset = selection.anchorOffset;
}
}
- if(odfUtils.isImage(selection.focusNode) && (selection.focusOffset === 0 && odfUtils.isCharacterFrame(selection.focusNode.parentNode))) {
+ if (odfUtils.isImage(selection.focusNode) && selection.focusOffset === 0 && odfUtils.isCharacterFrame(selection.focusNode.parentNode)) {
frameNode = (selection.focusNode.parentNode);
rect = frameNode.getBoundingClientRect();
- if(event.clientX > rect.right) {
+ if (event.clientX > rect.left) {
position = getNextWalkablePosition(frameNode);
- if(position) {
- selection.anchorNode = selection.focusNode = position.container;
- selection.anchorOffset = selection.focusOffset = position.offset
+ if (position) {
+ selection.focusNode = position.container;
+ selection.focusOffset = position.offset;
+ if (isCollapsed) {
+ selection.anchorNode = selection.focusNode;
+ selection.anchorOffset = selection.focusOffset;
+ }
}
}
- }else {
- if(odfUtils.isImage(selection.focusNode.firstChild) && (selection.focusOffset === 1 && odfUtils.isCharacterFrame(selection.focusNode))) {
+ } else {
+ if (odfUtils.isImage(selection.focusNode.firstChild) && selection.focusOffset === 1 && odfUtils.isCharacterFrame(selection.focusNode)) {
position = getNextWalkablePosition(selection.focusNode);
- if(position) {
+ if (position) {
selection.anchorNode = selection.focusNode = position.container;
- selection.anchorOffset = selection.focusOffset = position.offset
+ selection.anchorOffset = selection.focusOffset = position.offset;
}
}
}
- if(selection.anchorNode && selection.focusNode) {
+ if (selection.anchorNode && selection.focusNode) {
selectionRange = selectionController.selectionToRange(selection);
- selectionController.selectRange(selectionRange.range, selectionRange.hasForwardSelection, event.detail)
+ selectionController.selectRange(selectionRange.range, selectionRange.hasForwardSelection, computeClickCount(event));
}
- eventManager.focus()
+ eventManager.focus();
}
function selectWordByLongPress(event) {
var selection, position, selectionRange, container, offset;
position = caretPositionFromPoint(event.clientX, event.clientY);
- if(position) {
+ if (position) {
container = (position.container);
offset = position.offset;
selection = {anchorNode:container, anchorOffset:offset, focusNode:container, focusOffset:offset};
selectionRange = selectionController.selectionToRange(selection);
selectionController.selectRange(selectionRange.range, selectionRange.hasForwardSelection, 2);
- eventManager.focus()
+ eventManager.focus();
}
}
function handleMouseClickEvent(event) {
- var target = getTarget(event), range, wasCollapsed, frameNode, pos;
+ var target = getTarget(event), clickEvent, range, wasCollapsed, frameNode, pos;
drawShadowCursorTask.processRequests();
- if(odfUtils.isImage(target) && (odfUtils.isCharacterFrame(target.parentNode) && window.getSelection().isCollapsed)) {
- selectionController.selectImage((target.parentNode));
- eventManager.focus()
- }else {
- if(imageSelector.isSelectorElement(target)) {
- eventManager.focus()
- }else {
- if(clickStartedWithinCanvas) {
- if(isMouseMoved) {
+ if (clickStartedWithinCanvas) {
+ if (odfUtils.isImage(target) && odfUtils.isCharacterFrame(target.parentNode) && window.getSelection().isCollapsed) {
+ selectionController.selectImage((target.parentNode));
+ eventManager.focus();
+ } else {
+ if (imageSelector.isSelectorElement(target)) {
+ eventManager.focus();
+ } else {
+ if (isMouseMoved) {
range = shadowCursor.getSelectedRange();
wasCollapsed = range.collapsed;
- if(odfUtils.isImage(range.endContainer) && (range.endOffset === 0 && odfUtils.isCharacterFrame(range.endContainer.parentNode))) {
+ if (odfUtils.isImage(range.endContainer) && range.endOffset === 0 && odfUtils.isCharacterFrame(range.endContainer.parentNode)) {
frameNode = (range.endContainer.parentNode);
pos = getNextWalkablePosition(frameNode);
- if(pos) {
+ if (pos) {
range.setEnd(pos.container, pos.offset);
- if(wasCollapsed) {
- range.collapse(false)
+ if (wasCollapsed) {
+ range.collapse(false);
}
}
}
- selectionController.selectRange(range, shadowCursor.hasForwardSelection(), event.detail);
- eventManager.focus()
- }else {
- if(isIOS) {
- moveByMouseClickEvent(event)
- }else {
+ selectionController.selectRange(range, shadowCursor.hasForwardSelection(), computeClickCount(event));
+ eventManager.focus();
+ } else {
+ if (isIOS) {
+ moveByMouseClickEvent(event);
+ } else {
+ clickEvent = (domUtils.cloneEvent(event));
handleMouseClickTimeoutId = runtime.setTimeout(function() {
- moveByMouseClickEvent(event)
- }, 0)
+ moveByMouseClickEvent(clickEvent);
+ }, 0);
}
}
}
}
+ clickCount = 0;
+ clickStartedWithinCanvas = false;
+ isMouseMoved = false;
}
- clickCount = 0;
- clickStartedWithinCanvas = false;
- isMouseMoved = false
}
function handleDragStart(e) {
var cursor = odtDocument.getCursor(inputMemberId), selectedRange = cursor.getSelectedRange();
- if(selectedRange.collapsed) {
- return
+ if (selectedRange.collapsed) {
+ return;
}
- mimeDataExporter.exportRangeToDataTransfer((e.dataTransfer), selectedRange)
+ mimeDataExporter.exportRangeToDataTransfer((e.dataTransfer), selectedRange);
}
function handleDragEnd() {
- if(clickStartedWithinCanvas) {
- eventManager.focus()
+ if (clickStartedWithinCanvas) {
+ eventManager.focus();
}
clickCount = 0;
clickStartedWithinCanvas = false;
- isMouseMoved = false
+ isMouseMoved = false;
}
function handleContextMenu(e) {
- handleMouseClickEvent(e)
+ handleMouseClickEvent(e);
}
function handleMouseUp(event) {
var target = (getTarget(event)), annotationNode = null;
- if(target.className === "annotationRemoveButton") {
- annotationNode = domUtils.getElementsByTagNameNS((target.parentNode), odf.Namespaces.officens, "annotation")[0];
- annotationController.removeAnnotation(annotationNode);
- eventManager.focus()
- }else {
- if(target.getAttribute("class") !== "draggable") {
- handleMouseClickEvent(event)
+ if (target.className === "annotationRemoveButton") {
+ runtime.assert(annotationsEnabled, "Remove buttons are displayed on annotations while annotation editing is disabled in the controller.");
+ annotationNode = (target.parentNode).getElementsByTagNameNS(odf.Namespaces.officens, "annotation").item(0);
+ annotationController.removeAnnotation((annotationNode));
+ eventManager.focus();
+ } else {
+ if (target.getAttribute("class") !== "webodf-draggable") {
+ handleMouseClickEvent(event);
}
}
}
function insertNonEmptyData(e) {
var input = e.data;
- if(input) {
- textController.insertText(input)
+ if (input) {
+ if (input.indexOf("\n") === -1) {
+ textController.insertText(input);
+ } else {
+ pasteController.paste(input);
+ }
}
}
function returnTrue(fn) {
return function() {
fn();
- return true
- }
+ return true;
+ };
}
function rangeSelectionOnly(fn) {
- return function(e) {
+ function f(e) {
var selectionType = odtDocument.getCursor(inputMemberId).getSelectionType();
- if(selectionType === ops.OdtCursor.RangeSelection) {
- return fn(e)
+ if (selectionType === ops.OdtCursor.RangeSelection) {
+ return fn(e);
}
- return true
+ return true;
}
+ return f;
}
function insertLocalCursor() {
runtime.assert(session.getOdtDocument().getCursor(inputMemberId) === undefined, "Inserting local cursor a second time.");
var op = new ops.OpAddCursor;
op.init({memberid:inputMemberId});
session.enqueue([op]);
- eventManager.focus()
+ eventManager.focus();
}
this.insertLocalCursor = insertLocalCursor;
function removeLocalCursor() {
runtime.assert(session.getOdtDocument().getCursor(inputMemberId) !== undefined, "Removing local cursor without inserting before.");
var op = new ops.OpRemoveCursor;
op.init({memberid:inputMemberId});
- session.enqueue([op])
+ session.enqueue([op]);
}
this.removeLocalCursor = removeLocalCursor;
this.startEditing = function() {
@@ -15390,19 +15482,18 @@ gui.UndoManager.signalUndoStateModified = "undoStateModified";
eventManager.subscribe("cut", handleCut);
eventManager.subscribe("beforepaste", handleBeforePaste);
eventManager.subscribe("paste", handlePaste);
- window.addEventListener("focus", hyperlinkClickHandler.showTextCursor, false);
- if(undoManager) {
- undoManager.initialize()
+ if (undoManager) {
+ undoManager.initialize();
}
- inputMethodEditor.setEditing(true);
- hyperlinkClickHandler.setModifier(isMacOS ? gui.HyperlinkClickHandler.Modifier.Meta : gui.HyperlinkClickHandler.Modifier.Ctrl);
+ eventManager.setEditing(true);
+ hyperlinkClickHandler.setModifier(isMacOS ? modifier.Meta : modifier.Ctrl);
keyDownHandler.bind(keyCode.Backspace, modifier.None, returnTrue(textController.removeTextByBackspaceKey), true);
keyDownHandler.bind(keyCode.Delete, modifier.None, textController.removeTextByDeleteKey);
keyDownHandler.bind(keyCode.Tab, modifier.None, rangeSelectionOnly(function() {
textController.insertText("\t");
- return true
+ return true;
}));
- if(isMacOS) {
+ if (isMacOS) {
keyDownHandler.bind(keyCode.Clear, modifier.None, textController.removeCurrentSelection);
keyDownHandler.bind(keyCode.B, modifier.Meta, rangeSelectionOnly(directFormattingController.toggleBold));
keyDownHandler.bind(keyCode.I, modifier.Meta, rangeSelectionOnly(directFormattingController.toggleItalic));
@@ -15411,14 +15502,12 @@ gui.UndoManager.signalUndoStateModified = "undoStateModified";
keyDownHandler.bind(keyCode.E, modifier.MetaShift, rangeSelectionOnly(directFormattingController.alignParagraphCenter));
keyDownHandler.bind(keyCode.R, modifier.MetaShift, rangeSelectionOnly(directFormattingController.alignParagraphRight));
keyDownHandler.bind(keyCode.J, modifier.MetaShift, rangeSelectionOnly(directFormattingController.alignParagraphJustified));
- keyDownHandler.bind(keyCode.C, modifier.MetaShift, annotationController.addAnnotation);
+ if (annotationsEnabled) {
+ keyDownHandler.bind(keyCode.C, modifier.MetaShift, annotationController.addAnnotation);
+ }
keyDownHandler.bind(keyCode.Z, modifier.Meta, undo);
keyDownHandler.bind(keyCode.Z, modifier.MetaShift, redo);
- keyDownHandler.bind(keyCode.LeftMeta, modifier.Meta, hyperlinkClickHandler.showPointerCursor);
- keyDownHandler.bind(keyCode.MetaInMozilla, modifier.Meta, hyperlinkClickHandler.showPointerCursor);
- keyUpHandler.bind(keyCode.LeftMeta, modifier.None, hyperlinkClickHandler.showTextCursor);
- keyUpHandler.bind(keyCode.MetaInMozilla, modifier.None, hyperlinkClickHandler.showTextCursor)
- }else {
+ } else {
keyDownHandler.bind(keyCode.B, modifier.Ctrl, rangeSelectionOnly(directFormattingController.toggleBold));
keyDownHandler.bind(keyCode.I, modifier.Ctrl, rangeSelectionOnly(directFormattingController.toggleItalic));
keyDownHandler.bind(keyCode.U, modifier.Ctrl, rangeSelectionOnly(directFormattingController.toggleUnderline));
@@ -15426,22 +15515,22 @@ gui.UndoManager.signalUndoStateModified = "undoStateModified";
keyDownHandler.bind(keyCode.E, modifier.CtrlShift, rangeSelectionOnly(directFormattingController.alignParagraphCenter));
keyDownHandler.bind(keyCode.R, modifier.CtrlShift, rangeSelectionOnly(directFormattingController.alignParagraphRight));
keyDownHandler.bind(keyCode.J, modifier.CtrlShift, rangeSelectionOnly(directFormattingController.alignParagraphJustified));
- keyDownHandler.bind(keyCode.C, modifier.CtrlAlt, annotationController.addAnnotation);
+ if (annotationsEnabled) {
+ keyDownHandler.bind(keyCode.C, modifier.CtrlAlt, annotationController.addAnnotation);
+ }
keyDownHandler.bind(keyCode.Z, modifier.Ctrl, undo);
keyDownHandler.bind(keyCode.Z, modifier.CtrlShift, redo);
- keyDownHandler.bind(keyCode.Ctrl, modifier.Ctrl, hyperlinkClickHandler.showPointerCursor);
- keyUpHandler.bind(keyCode.Ctrl, modifier.None, hyperlinkClickHandler.showTextCursor)
}
function handler(e) {
var text = stringFromKeyPress(e);
- if(text && !(e.altKey || (e.ctrlKey || e.metaKey))) {
+ if (text && !(e.altKey || e.ctrlKey || e.metaKey)) {
textController.insertText(text);
- return true
+ return true;
}
- return false
+ return false;
}
keyPressHandler.setDefault(rangeSelectionOnly(handler));
- keyPressHandler.bind(keyCode.Enter, modifier.None, rangeSelectionOnly(textController.enqueueParagraphSplittingOps))
+ keyPressHandler.bind(keyCode.Enter, modifier.None, rangeSelectionOnly(textController.enqueueParagraphSplittingOps));
};
this.endEditing = function() {
inputMethodEditor.unsubscribe(gui.InputMethodEditor.signalCompositionStart, textController.removeCurrentSelection);
@@ -15450,15 +15539,14 @@ gui.UndoManager.signalUndoStateModified = "undoStateModified";
eventManager.unsubscribe("beforecut", handleBeforeCut);
eventManager.unsubscribe("paste", handlePaste);
eventManager.unsubscribe("beforepaste", handleBeforePaste);
- window.removeEventListener("focus", hyperlinkClickHandler.showTextCursor, false);
- inputMethodEditor.setEditing(false);
- hyperlinkClickHandler.setModifier(gui.HyperlinkClickHandler.Modifier.None);
+ eventManager.setEditing(false);
+ hyperlinkClickHandler.setModifier(modifier.None);
keyDownHandler.bind(keyCode.Backspace, modifier.None, function() {
- return true
+ return true;
}, true);
keyDownHandler.unbind(keyCode.Delete, modifier.None);
keyDownHandler.unbind(keyCode.Tab, modifier.None);
- if(isMacOS) {
+ if (isMacOS) {
keyDownHandler.unbind(keyCode.Clear, modifier.None);
keyDownHandler.unbind(keyCode.B, modifier.Meta);
keyDownHandler.unbind(keyCode.I, modifier.Meta);
@@ -15467,14 +15555,12 @@ gui.UndoManager.signalUndoStateModified = "undoStateModified";
keyDownHandler.unbind(keyCode.E, modifier.MetaShift);
keyDownHandler.unbind(keyCode.R, modifier.MetaShift);
keyDownHandler.unbind(keyCode.J, modifier.MetaShift);
- keyDownHandler.unbind(keyCode.C, modifier.MetaShift);
+ if (annotationsEnabled) {
+ keyDownHandler.unbind(keyCode.C, modifier.MetaShift);
+ }
keyDownHandler.unbind(keyCode.Z, modifier.Meta);
keyDownHandler.unbind(keyCode.Z, modifier.MetaShift);
- keyDownHandler.unbind(keyCode.LeftMeta, modifier.Meta);
- keyDownHandler.unbind(keyCode.MetaInMozilla, modifier.Meta);
- keyUpHandler.unbind(keyCode.LeftMeta, modifier.None);
- keyUpHandler.unbind(keyCode.MetaInMozilla, modifier.None)
- }else {
+ } else {
keyDownHandler.unbind(keyCode.B, modifier.Ctrl);
keyDownHandler.unbind(keyCode.I, modifier.Ctrl);
keyDownHandler.unbind(keyCode.U, modifier.Ctrl);
@@ -15482,58 +15568,67 @@ gui.UndoManager.signalUndoStateModified = "undoStateModified";
keyDownHandler.unbind(keyCode.E, modifier.CtrlShift);
keyDownHandler.unbind(keyCode.R, modifier.CtrlShift);
keyDownHandler.unbind(keyCode.J, modifier.CtrlShift);
- keyDownHandler.unbind(keyCode.C, modifier.CtrlAlt);
+ if (annotationsEnabled) {
+ keyDownHandler.unbind(keyCode.C, modifier.CtrlAlt);
+ }
keyDownHandler.unbind(keyCode.Z, modifier.Ctrl);
keyDownHandler.unbind(keyCode.Z, modifier.CtrlShift);
- keyDownHandler.unbind(keyCode.Ctrl, modifier.Ctrl);
- keyUpHandler.unbind(keyCode.Ctrl, modifier.None)
}
keyPressHandler.setDefault(null);
- keyPressHandler.unbind(keyCode.Enter, modifier.None)
+ keyPressHandler.unbind(keyCode.Enter, modifier.None);
};
this.getInputMemberId = function() {
- return inputMemberId
+ return inputMemberId;
};
this.getSession = function() {
- return session
+ return session;
+ };
+ this.getSessionConstraints = function() {
+ return sessionConstraints;
};
this.setUndoManager = function(manager) {
- if(undoManager) {
- undoManager.unsubscribe(gui.UndoManager.signalUndoStackChanged, forwardUndoStackChange)
+ if (undoManager) {
+ undoManager.unsubscribe(gui.UndoManager.signalUndoStackChanged, forwardUndoStackChange);
}
undoManager = manager;
- if(undoManager) {
+ if (undoManager) {
undoManager.setDocument(odtDocument);
undoManager.setPlaybackFunction(session.enqueue);
- undoManager.subscribe(gui.UndoManager.signalUndoStackChanged, forwardUndoStackChange)
+ undoManager.subscribe(gui.UndoManager.signalUndoStackChanged, forwardUndoStackChange);
}
};
this.getUndoManager = function() {
- return undoManager
+ return undoManager;
+ };
+ this.getMetadataController = function() {
+ return metadataController;
};
this.getAnnotationController = function() {
- return annotationController
+ return annotationController;
};
this.getDirectFormattingController = function() {
- return directFormattingController
+ return directFormattingController;
+ };
+ this.getHyperlinkClickHandler = function() {
+ return hyperlinkClickHandler;
};
this.getHyperlinkController = function() {
- return hyperlinkController
+ return hyperlinkController;
};
this.getImageController = function() {
- return imageController
+ return imageController;
};
this.getSelectionController = function() {
- return selectionController
+ return selectionController;
};
this.getTextController = function() {
- return textController
+ return textController;
};
this.getEventManager = function() {
- return eventManager
+ return eventManager;
};
this.getKeyboardHandlers = function() {
- return{keydown:keyDownHandler, keypress:keyPressHandler}
+ return {keydown:keyDownHandler, keypress:keyPressHandler};
};
function destroy(callback) {
eventManager.unsubscribe("keydown", keyDownHandler.handleEvent);
@@ -15554,20 +15649,19 @@ gui.UndoManager.signalUndoStateModified = "undoStateModified";
odtDocument.unsubscribe(ops.Document.signalCursorAdded, inputMethodEditor.registerCursor);
odtDocument.unsubscribe(ops.Document.signalCursorRemoved, inputMethodEditor.removeCursor);
odtDocument.unsubscribe(ops.OdtDocument.signalOperationEnd, updateUndoStack);
- callback()
+ callback();
}
this.destroy = function(callback) {
- var destroyCallbacks = [];
- if(iOSSafariSupport) {
- destroyCallbacks.push(iOSSafariSupport.destroy)
+ var destroyCallbacks = [drawShadowCursorTask.destroy, redrawRegionSelectionTask.destroy, directFormattingController.destroy, inputMethodEditor.destroy, eventManager.destroy, hyperlinkClickHandler.destroy, hyperlinkController.destroy, metadataController.destroy, selectionController.destroy, textController.destroy, destroy];
+ if (iOSSafariSupport) {
+ destroyCallbacks.unshift(iOSSafariSupport.destroy);
}
- destroyCallbacks = destroyCallbacks.concat([drawShadowCursorTask.destroy, redrawRegionSelectionTask.destroy, directFormattingController.destroy, inputMethodEditor.destroy, eventManager.destroy, destroy]);
runtime.clearTimeout(handleMouseClickTimeoutId);
- async.destroyAll(destroyCallbacks, callback)
+ core.Async.destroyAll(destroyCallbacks, callback);
};
function init() {
- drawShadowCursorTask = new core.ScheduledTask(updateShadowCursor, 0);
- redrawRegionSelectionTask = new core.ScheduledTask(redrawRegionSelection, 0);
+ drawShadowCursorTask = core.Task.createRedrawTask(updateShadowCursor);
+ redrawRegionSelectionTask = core.Task.createRedrawTask(redrawRegionSelection);
keyDownHandler.bind(keyCode.Left, modifier.None, rangeSelectionOnly(selectionController.moveCursorToLeft));
keyDownHandler.bind(keyCode.Right, modifier.None, rangeSelectionOnly(selectionController.moveCursorToRight));
keyDownHandler.bind(keyCode.Up, modifier.None, rangeSelectionOnly(selectionController.moveCursorUp));
@@ -15586,7 +15680,7 @@ gui.UndoManager.signalUndoStateModified = "undoStateModified";
keyDownHandler.bind(keyCode.Down, modifier.CtrlShift, rangeSelectionOnly(selectionController.extendSelectionToParagraphEnd));
keyDownHandler.bind(keyCode.Home, modifier.CtrlShift, rangeSelectionOnly(selectionController.extendSelectionToDocumentStart));
keyDownHandler.bind(keyCode.End, modifier.CtrlShift, rangeSelectionOnly(selectionController.extendSelectionToDocumentEnd));
- if(isMacOS) {
+ if (isMacOS) {
keyDownHandler.bind(keyCode.Left, modifier.Alt, rangeSelectionOnly(selectionController.moveCursorBeforeWord));
keyDownHandler.bind(keyCode.Right, modifier.Alt, rangeSelectionOnly(selectionController.moveCursorPastWord));
keyDownHandler.bind(keyCode.Left, modifier.Meta, rangeSelectionOnly(selectionController.moveCursorToLineStart));
@@ -15601,16 +15695,16 @@ gui.UndoManager.signalUndoStateModified = "undoStateModified";
keyDownHandler.bind(keyCode.Down, modifier.AltShift, rangeSelectionOnly(selectionController.extendSelectionToParagraphEnd));
keyDownHandler.bind(keyCode.Up, modifier.MetaShift, rangeSelectionOnly(selectionController.extendSelectionToDocumentStart));
keyDownHandler.bind(keyCode.Down, modifier.MetaShift, rangeSelectionOnly(selectionController.extendSelectionToDocumentEnd));
- keyDownHandler.bind(keyCode.A, modifier.Meta, rangeSelectionOnly(selectionController.extendSelectionToEntireDocument))
- }else {
+ keyDownHandler.bind(keyCode.A, modifier.Meta, rangeSelectionOnly(selectionController.extendSelectionToEntireDocument));
+ } else {
keyDownHandler.bind(keyCode.Left, modifier.Ctrl, rangeSelectionOnly(selectionController.moveCursorBeforeWord));
keyDownHandler.bind(keyCode.Right, modifier.Ctrl, rangeSelectionOnly(selectionController.moveCursorPastWord));
keyDownHandler.bind(keyCode.Left, modifier.CtrlShift, rangeSelectionOnly(selectionController.extendSelectionBeforeWord));
keyDownHandler.bind(keyCode.Right, modifier.CtrlShift, rangeSelectionOnly(selectionController.extendSelectionPastWord));
- keyDownHandler.bind(keyCode.A, modifier.Ctrl, rangeSelectionOnly(selectionController.extendSelectionToEntireDocument))
+ keyDownHandler.bind(keyCode.A, modifier.Ctrl, rangeSelectionOnly(selectionController.extendSelectionToEntireDocument));
}
- if(isIOS) {
- iOSSafariSupport = new gui.IOSSafariSupport(eventManager)
+ if (isIOS) {
+ iOSSafariSupport = new gui.IOSSafariSupport(eventManager);
}
eventManager.subscribe("keydown", keyDownHandler.handleEvent);
eventManager.subscribe("keypress", keyPressHandler.handleEvent);
@@ -15629,169 +15723,90 @@ gui.UndoManager.signalUndoStateModified = "undoStateModified";
odtDocument.subscribe(ops.OdtDocument.signalOperationEnd, redrawRegionSelectionTask.trigger);
odtDocument.subscribe(ops.Document.signalCursorAdded, inputMethodEditor.registerCursor);
odtDocument.subscribe(ops.Document.signalCursorRemoved, inputMethodEditor.removeCursor);
- odtDocument.subscribe(ops.OdtDocument.signalOperationEnd, updateUndoStack)
+ odtDocument.subscribe(ops.OdtDocument.signalOperationEnd, updateUndoStack);
}
- init()
+ init();
};
- return gui.SessionController
})();
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.CaretManager = function CaretManager(sessionController) {
- var carets = {}, async = new core.Async, window = runtime.getWindow(), ensureCaretVisibleTimeoutId, scrollIntoViewScheduled = false;
+gui.CaretManager = function CaretManager(sessionController, viewport) {
+ var carets = {}, window = runtime.getWindow(), odtDocument = sessionController.getSession().getOdtDocument(), eventManager = sessionController.getEventManager();
function getCaret(memberId) {
- return carets.hasOwnProperty(memberId) ? carets[memberId] : null
+ return carets.hasOwnProperty(memberId) ? carets[memberId] : null;
+ }
+ function getLocalCaretXOffsetPx() {
+ var localCaret = getCaret(sessionController.getInputMemberId()), lastRect;
+ if (localCaret) {
+ lastRect = localCaret.getBoundingClientRect();
+ }
+ return lastRect ? lastRect.right : undefined;
}
function getCarets() {
return Object.keys(carets).map(function(memberid) {
- return carets[memberid]
- })
+ return carets[memberid];
+ });
}
function removeCaret(memberId) {
var caret = carets[memberId];
- if(caret) {
+ if (caret) {
+ delete carets[memberId];
+ if (memberId === sessionController.getInputMemberId()) {
+ odtDocument.unsubscribe(ops.OdtDocument.signalProcessingBatchEnd, caret.ensureVisible);
+ odtDocument.unsubscribe(ops.Document.signalCursorMoved, caret.refreshCursorBlinking);
+ eventManager.unsubscribe("compositionupdate", caret.handleUpdate);
+ eventManager.unsubscribe("compositionend", caret.handleUpdate);
+ eventManager.unsubscribe("focus", caret.setFocus);
+ eventManager.unsubscribe("blur", caret.removeFocus);
+ window.removeEventListener("focus", caret.show, false);
+ window.removeEventListener("blur", caret.hide, false);
+ } else {
+ odtDocument.unsubscribe(ops.OdtDocument.signalProcessingBatchEnd, caret.handleUpdate);
+ }
caret.destroy(function() {
});
- delete carets[memberId]
- }
- }
- function refreshLocalCaretBlinking(cursor) {
- var caret, memberId = cursor.getMemberId();
- if(memberId === sessionController.getInputMemberId()) {
- caret = getCaret(memberId);
- if(caret) {
- caret.refreshCursorBlinking()
- }
- }
- }
- function executeEnsureCaretVisible() {
- var caret = getCaret(sessionController.getInputMemberId());
- scrollIntoViewScheduled = false;
- if(caret) {
- caret.ensureVisible()
- }
- }
- function scheduleCaretVisibilityCheck() {
- var caret = getCaret(sessionController.getInputMemberId());
- if(caret) {
- caret.handleUpdate();
- if(!scrollIntoViewScheduled) {
- scrollIntoViewScheduled = true;
- ensureCaretVisibleTimeoutId = runtime.setTimeout(executeEnsureCaretVisible, 50)
- }
- }
- }
- function ensureLocalCaretVisible(info) {
- if(info.memberId === sessionController.getInputMemberId()) {
- scheduleCaretVisibilityCheck()
- }
- }
- function focusLocalCaret() {
- var caret = getCaret(sessionController.getInputMemberId());
- if(caret) {
- caret.setFocus()
- }
- }
- function blurLocalCaret() {
- var caret = getCaret(sessionController.getInputMemberId());
- if(caret) {
- caret.removeFocus()
- }
- }
- function showLocalCaret() {
- var caret = getCaret(sessionController.getInputMemberId());
- if(caret) {
- caret.show()
- }
- }
- function hideLocalCaret() {
- var caret = getCaret(sessionController.getInputMemberId());
- if(caret) {
- caret.hide()
}
}
this.registerCursor = function(cursor, caretAvatarInitiallyVisible, blinkOnRangeSelect) {
- var memberid = cursor.getMemberId(), caret = new gui.Caret(cursor, caretAvatarInitiallyVisible, blinkOnRangeSelect), eventManager = sessionController.getEventManager();
+ var memberid = cursor.getMemberId(), caret = new gui.Caret(cursor, viewport, caretAvatarInitiallyVisible, blinkOnRangeSelect);
carets[memberid] = caret;
- if(memberid === sessionController.getInputMemberId()) {
+ if (memberid === sessionController.getInputMemberId()) {
runtime.log("Starting to track input on new cursor of " + memberid);
- cursor.subscribe(ops.OdtCursor.signalCursorUpdated, scheduleCaretVisibilityCheck);
- caret.setOverlayElement(eventManager.getEventTrap())
- }else {
- cursor.subscribe(ops.OdtCursor.signalCursorUpdated, caret.handleUpdate)
- }
- return caret
+ odtDocument.subscribe(ops.OdtDocument.signalProcessingBatchEnd, caret.ensureVisible);
+ odtDocument.subscribe(ops.Document.signalCursorMoved, caret.refreshCursorBlinking);
+ eventManager.subscribe("compositionupdate", caret.handleUpdate);
+ eventManager.subscribe("compositionend", caret.handleUpdate);
+ eventManager.subscribe("focus", caret.setFocus);
+ eventManager.subscribe("blur", caret.removeFocus);
+ window.addEventListener("focus", caret.show, false);
+ window.addEventListener("blur", caret.hide, false);
+ caret.setOverlayElement(eventManager.getEventTrap());
+ } else {
+ odtDocument.subscribe(ops.OdtDocument.signalProcessingBatchEnd, caret.handleUpdate);
+ }
+ return caret;
};
this.getCaret = getCaret;
this.getCarets = getCarets;
this.destroy = function(callback) {
- var odtDocument = sessionController.getSession().getOdtDocument(), eventManager = sessionController.getEventManager(), caretCleanup = getCarets().map(function(caret) {
- return caret.destroy
+ var caretCleanup = getCarets().map(function(caret) {
+ return caret.destroy;
});
- runtime.clearTimeout(ensureCaretVisibleTimeoutId);
- odtDocument.unsubscribe(ops.OdtDocument.signalParagraphChanged, ensureLocalCaretVisible);
- odtDocument.unsubscribe(ops.Document.signalCursorMoved, refreshLocalCaretBlinking);
+ sessionController.getSelectionController().setCaretXPositionLocator(null);
odtDocument.unsubscribe(ops.Document.signalCursorRemoved, removeCaret);
- eventManager.unsubscribe("focus", focusLocalCaret);
- eventManager.unsubscribe("blur", blurLocalCaret);
- window.removeEventListener("focus", showLocalCaret, false);
- window.removeEventListener("blur", hideLocalCaret, false);
carets = {};
- async.destroyAll(caretCleanup, callback)
+ core.Async.destroyAll(caretCleanup, callback);
};
function init() {
- var odtDocument = sessionController.getSession().getOdtDocument(), eventManager = sessionController.getEventManager();
- odtDocument.subscribe(ops.OdtDocument.signalParagraphChanged, ensureLocalCaretVisible);
- odtDocument.subscribe(ops.Document.signalCursorMoved, refreshLocalCaretBlinking);
+ sessionController.getSelectionController().setCaretXPositionLocator(getLocalCaretXOffsetPx);
odtDocument.subscribe(ops.Document.signalCursorRemoved, removeCaret);
- eventManager.subscribe("focus", focusLocalCaret);
- eventManager.subscribe("blur", blurLocalCaret);
- window.addEventListener("focus", showLocalCaret, false);
- window.addEventListener("blur", hideLocalCaret, false)
}
- init()
+ init();
};
gui.EditInfoHandle = function EditInfoHandle(parentElement) {
var edits = [], handle, document = (parentElement.ownerDocument), htmlns = document.documentElement.namespaceURI, editinfons = "urn:webodf:names:editinfo";
function renderEdits() {
var i, infoDiv, colorSpan, authorSpan, timeSpan;
- handle.innerHTML = "";
- for(i = 0;i < edits.length;i += 1) {
+ core.DomUtils.removeAllChildNodes(handle);
+ for (i = 0;i < edits.length;i += 1) {
infoDiv = document.createElementNS(htmlns, "div");
infoDiv.className = "editInfo";
colorSpan = document.createElementNS(htmlns, "span");
@@ -15803,166 +15818,92 @@ gui.EditInfoHandle = function EditInfoHandle(parentElement) {
timeSpan = document.createElementNS(htmlns, "span");
timeSpan.className = "editInfoTime";
timeSpan.setAttributeNS(editinfons, "editinfo:memberid", edits[i].memberid);
- timeSpan.innerHTML = edits[i].time;
+ timeSpan.appendChild(document.createTextNode(edits[i].time.toString()));
infoDiv.appendChild(colorSpan);
infoDiv.appendChild(authorSpan);
infoDiv.appendChild(timeSpan);
- handle.appendChild(infoDiv)
+ handle.appendChild(infoDiv);
}
}
this.setEdits = function(editArray) {
edits = editArray;
- renderEdits()
+ renderEdits();
};
this.show = function() {
- handle.style.display = "block"
+ handle.style.display = "block";
};
this.hide = function() {
- handle.style.display = "none"
+ handle.style.display = "none";
};
this.destroy = function(callback) {
parentElement.removeChild(handle);
- callback()
+ callback();
};
function init() {
handle = (document.createElementNS(htmlns, "div"));
handle.setAttribute("class", "editInfoHandle");
handle.style.display = "none";
- parentElement.appendChild(handle)
+ parentElement.appendChild(handle);
}
- init()
+ init();
};
-/*
-
- Copyright (C) 2012 KO GmbH <aditya.bhatt@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.EditInfo = function EditInfo(container, odtDocument) {
var editInfoNode, editHistory = {};
function sortEdits() {
var arr = [], memberid;
- for(memberid in editHistory) {
- if(editHistory.hasOwnProperty(memberid)) {
- arr.push({"memberid":memberid, "time":editHistory[memberid].time})
+ for (memberid in editHistory) {
+ if (editHistory.hasOwnProperty(memberid)) {
+ arr.push({"memberid":memberid, "time":editHistory[memberid].time});
}
}
arr.sort(function(a, b) {
- return a.time - b.time
+ return a.time - b.time;
});
- return arr
+ return arr;
}
this.getNode = function() {
- return editInfoNode
+ return editInfoNode;
};
this.getOdtDocument = function() {
- return odtDocument
+ return odtDocument;
};
this.getEdits = function() {
- return editHistory
+ return editHistory;
};
this.getSortedEdits = function() {
- return sortEdits()
+ return sortEdits();
};
this.addEdit = function(memberid, timestamp) {
- editHistory[memberid] = {time:timestamp}
+ editHistory[memberid] = {time:timestamp};
};
this.clearEdits = function() {
- editHistory = {}
+ editHistory = {};
};
this.destroy = function(callback) {
- if(container.parentNode) {
- container.removeChild(editInfoNode)
+ if (container.parentNode) {
+ container.removeChild(editInfoNode);
}
- callback()
+ callback();
};
function init() {
var editInfons = "urn:webodf:names:editinfo", dom = odtDocument.getDOMDocument();
editInfoNode = dom.createElementNS(editInfons, "editinfo");
- container.insertBefore(editInfoNode, container.firstChild)
+ container.insertBefore(editInfoNode, container.firstChild);
}
- init()
+ init();
};
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
gui.EditInfoMarker = function EditInfoMarker(editInfo, initialVisibility) {
var self = this, editInfoNode, handle, marker, editinfons = "urn:webodf:names:editinfo", decayTimer0, decayTimer1, decayTimer2, decayTimeStep = 1E4;
function applyDecay(opacity, delay) {
return runtime.setTimeout(function() {
- marker.style.opacity = opacity
- }, delay)
+ marker.style.opacity = opacity;
+ }, delay);
}
function deleteDecay(timerId) {
- runtime.clearTimeout(timerId)
+ runtime.clearTimeout(timerId);
}
function setLastAuthor(memberid) {
- marker.setAttributeNS(editinfons, "editinfo:memberid", memberid)
+ marker.setAttributeNS(editinfons, "editinfo:memberid", memberid);
}
this.addEdit = function(memberid, timestamp) {
var age = Date.now() - timestamp;
@@ -15971,44 +15912,44 @@ gui.EditInfoMarker = function EditInfoMarker(editInfo, initialVisibility) {
setLastAuthor(memberid);
deleteDecay(decayTimer1);
deleteDecay(decayTimer2);
- if(age < decayTimeStep) {
+ if (age < decayTimeStep) {
decayTimer0 = applyDecay(1, 0);
- decayTimer1 = applyDecay(0.5, decayTimeStep - age);
- decayTimer2 = applyDecay(0.2, decayTimeStep * 2 - age)
- }else {
- if(age >= decayTimeStep && age < decayTimeStep * 2) {
- decayTimer0 = applyDecay(0.5, 0);
- decayTimer2 = applyDecay(0.2, decayTimeStep * 2 - age)
- }else {
- decayTimer0 = applyDecay(0.2, 0)
+ decayTimer1 = applyDecay(.5, decayTimeStep - age);
+ decayTimer2 = applyDecay(.2, decayTimeStep * 2 - age);
+ } else {
+ if (age >= decayTimeStep && age < decayTimeStep * 2) {
+ decayTimer0 = applyDecay(.5, 0);
+ decayTimer2 = applyDecay(.2, decayTimeStep * 2 - age);
+ } else {
+ decayTimer0 = applyDecay(.2, 0);
}
}
};
this.getEdits = function() {
- return editInfo.getEdits()
+ return editInfo.getEdits();
};
this.clearEdits = function() {
editInfo.clearEdits();
handle.setEdits([]);
- if(marker.hasAttributeNS(editinfons, "editinfo:memberid")) {
- marker.removeAttributeNS(editinfons, "editinfo:memberid")
+ if (marker.hasAttributeNS(editinfons, "editinfo:memberid")) {
+ marker.removeAttributeNS(editinfons, "editinfo:memberid");
}
};
this.getEditInfo = function() {
- return editInfo
+ return editInfo;
};
this.show = function() {
- marker.style.display = "block"
+ marker.style.display = "block";
};
this.hide = function() {
self.hideHandle();
- marker.style.display = "none"
+ marker.style.display = "none";
};
this.showHandle = function() {
- handle.show()
+ handle.show();
};
this.hideHandle = function() {
- handle.hide()
+ handle.hide();
};
this.destroy = function(callback) {
deleteDecay(decayTimer0);
@@ -16016,64 +15957,183 @@ gui.EditInfoMarker = function EditInfoMarker(editInfo, initialVisibility) {
deleteDecay(decayTimer2);
editInfoNode.removeChild(marker);
handle.destroy(function(err) {
- if(err) {
- callback(err)
- }else {
- editInfo.destroy(callback)
+ if (err) {
+ callback(err);
+ } else {
+ editInfo.destroy(callback);
}
- })
+ });
};
function init() {
var dom = editInfo.getOdtDocument().getDOMDocument(), htmlns = dom.documentElement.namespaceURI;
marker = (dom.createElementNS(htmlns, "div"));
marker.setAttribute("class", "editInfoMarker");
marker.onmouseover = function() {
- self.showHandle()
+ self.showHandle();
};
marker.onmouseout = function() {
- self.hideHandle()
+ self.hideHandle();
};
editInfoNode = editInfo.getNode();
editInfoNode.appendChild(marker);
handle = new gui.EditInfoHandle(editInfoNode);
- if(!initialVisibility) {
- self.hide()
+ if (!initialVisibility) {
+ self.hide();
}
}
- init()
+ init();
+};
+gui.HyperlinkTooltipView = function HyperlinkTooltipView(odfCanvas, getActiveModifier) {
+ var domUtils = core.DomUtils, odfUtils = odf.OdfUtils, window = (runtime.getWindow()), linkSpan, textSpan, tooltipElement, offsetXPx = 15, offsetYPx = 10;
+ runtime.assert(window !== null, "Expected to be run in an environment which has a global window, like a browser.");
+ function getHyperlinkElement(node) {
+ while (node) {
+ if (odfUtils.isHyperlink(node)) {
+ return (node);
+ }
+ if (odfUtils.isParagraph(node) || odfUtils.isInlineRoot(node)) {
+ break;
+ }
+ node = node.parentNode;
+ }
+ return null;
+ }
+ function getHint() {
+ var modifierKey = getActiveModifier(), hint;
+ switch(modifierKey) {
+ case gui.KeyboardHandler.Modifier.Ctrl:
+ hint = runtime.tr("Ctrl-click to follow link");
+ break;
+ case gui.KeyboardHandler.Modifier.Meta:
+ hint = runtime.tr("\u2318-click to follow link");
+ break;
+ default:
+ hint = "";
+ break;
+ }
+ return hint;
+ }
+ this.showTooltip = function(e) {
+ var target = e.target || e.srcElement, sizerElement = (odfCanvas.getSizer()), zoomLevel = odfCanvas.getZoomLevel(), referenceRect, linkElement, left, top, max;
+ linkElement = getHyperlinkElement((target));
+ if (!linkElement) {
+ return;
+ }
+ if (!domUtils.containsNode(sizerElement, tooltipElement)) {
+ sizerElement.appendChild(tooltipElement);
+ }
+ textSpan.textContent = getHint();
+ linkSpan.textContent = odfUtils.getHyperlinkTarget(linkElement);
+ tooltipElement.style.display = "block";
+ max = window.innerWidth - tooltipElement.offsetWidth - offsetXPx;
+ left = e.clientX > max ? max : e.clientX + offsetXPx;
+ max = window.innerHeight - tooltipElement.offsetHeight - offsetYPx;
+ top = e.clientY > max ? max : e.clientY + offsetYPx;
+ referenceRect = sizerElement.getBoundingClientRect();
+ left = (left - referenceRect.left) / zoomLevel;
+ top = (top - referenceRect.top) / zoomLevel;
+ tooltipElement.style.left = left + "px";
+ tooltipElement.style.top = top + "px";
+ };
+ this.hideTooltip = function() {
+ tooltipElement.style.display = "none";
+ };
+ this.destroy = function(callback) {
+ if (tooltipElement.parentNode) {
+ tooltipElement.parentNode.removeChild(tooltipElement);
+ }
+ callback();
+ };
+ function init() {
+ var document = odfCanvas.getElement().ownerDocument;
+ linkSpan = document.createElement("span");
+ textSpan = document.createElement("span");
+ linkSpan.className = "webodf-hyperlinkTooltipLink";
+ textSpan.className = "webodf-hyperlinkTooltipText";
+ tooltipElement = (document.createElement("div"));
+ tooltipElement.className = "webodf-hyperlinkTooltip";
+ tooltipElement.appendChild(linkSpan);
+ tooltipElement.appendChild(textSpan);
+ odfCanvas.getElement().appendChild(tooltipElement);
+ }
+ init();
+};
+gui.OdfFieldView = function(odfCanvas) {
+ var style, document = odfCanvas.getElement().ownerDocument;
+ function newStyleSheet() {
+ var head = document.getElementsByTagName("head").item(0), sheet = (document.createElement("style")), text = "";
+ sheet.type = "text/css";
+ sheet.media = "screen, print, handheld, projection";
+ odf.Namespaces.forEachPrefix(function(prefix, ns) {
+ text += "@namespace " + prefix + " url(" + ns + ");\n";
+ });
+ sheet.appendChild(document.createTextNode(text));
+ head.appendChild(sheet);
+ return sheet;
+ }
+ function clearCSSStyleSheet(style) {
+ var stylesheet = (style.sheet), cssRules = stylesheet.cssRules;
+ while (cssRules.length) {
+ stylesheet.deleteRule(cssRules.length - 1);
+ }
+ }
+ function createRule(selectors, css) {
+ return selectors.join(",\n") + "\n" + css + "\n";
+ }
+ function generateFieldCSS() {
+ var cssSelectors = odf.OdfSchema.getFields().map(function(prefixedName) {
+ return prefixedName.replace(":", "|");
+ }), highlightFields = createRule(cssSelectors, "{ background-color: #D0D0D0; }"), emptyCssSelectors = cssSelectors.map(function(selector) {
+ return selector + ":empty::after";
+ }), highlightEmptyFields = createRule(emptyCssSelectors, "{ content:' '; white-space: pre; }");
+ return highlightFields + "\n" + highlightEmptyFields;
+ }
+ this.showFieldHighlight = function() {
+ style.appendChild(document.createTextNode(generateFieldCSS()));
+ };
+ this.hideFieldHighlight = function() {
+ clearCSSStyleSheet(style);
+ };
+ this.destroy = function(callback) {
+ if (style.parentNode) {
+ style.parentNode.removeChild(style);
+ }
+ callback();
+ };
+ function init() {
+ style = newStyleSheet();
+ }
+ init();
};
gui.ShadowCursor = function ShadowCursor(document) {
var selectedRange = (document.getDOMDocument().createRange()), forwardSelection = true;
this.removeFromDocument = function() {
};
this.getMemberId = function() {
- return gui.ShadowCursor.ShadowCursorMemberId
+ return gui.ShadowCursor.ShadowCursorMemberId;
};
this.getSelectedRange = function() {
- return selectedRange
+ return selectedRange;
};
this.setSelectedRange = function(range, isForwardSelection) {
selectedRange = range;
- forwardSelection = isForwardSelection !== false
+ forwardSelection = isForwardSelection !== false;
};
this.hasForwardSelection = function() {
- return forwardSelection
+ return forwardSelection;
};
this.getDocument = function() {
- return document
+ return document;
};
this.getSelectionType = function() {
- return ops.OdtCursor.RangeSelection
+ return ops.OdtCursor.RangeSelection;
};
function init() {
- selectedRange.setStart(document.getRootNode(), 0)
+ selectedRange.setStart(document.getRootNode(), 0);
}
- init()
+ init();
};
gui.ShadowCursor.ShadowCursorMemberId = "";
-(function() {
- return gui.ShadowCursor
-})();
gui.SelectionView = function SelectionView(cursor) {
};
gui.SelectionView.prototype.rerender = function() {
@@ -16084,307 +16144,267 @@ gui.SelectionView.prototype.hide = function() {
};
gui.SelectionView.prototype.destroy = function(callback) {
};
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
gui.SelectionViewManager = function SelectionViewManager(SelectionView) {
var selectionViews = {};
function getSelectionView(memberId) {
- return selectionViews.hasOwnProperty(memberId) ? selectionViews[memberId] : null
+ return selectionViews.hasOwnProperty(memberId) ? selectionViews[memberId] : null;
}
this.getSelectionView = getSelectionView;
function getSelectionViews() {
return Object.keys(selectionViews).map(function(memberid) {
- return selectionViews[memberid]
- })
+ return selectionViews[memberid];
+ });
}
this.getSelectionViews = getSelectionViews;
function removeSelectionView(memberId) {
- if(selectionViews.hasOwnProperty(memberId)) {
+ if (selectionViews.hasOwnProperty(memberId)) {
selectionViews[memberId].destroy(function() {
});
- delete selectionViews[memberId]
+ delete selectionViews[memberId];
}
}
this.removeSelectionView = removeSelectionView;
function hideSelectionView(memberId) {
- if(selectionViews.hasOwnProperty(memberId)) {
- selectionViews[memberId].hide()
+ if (selectionViews.hasOwnProperty(memberId)) {
+ selectionViews[memberId].hide();
}
}
this.hideSelectionView = hideSelectionView;
function showSelectionView(memberId) {
- if(selectionViews.hasOwnProperty(memberId)) {
- selectionViews[memberId].show()
+ if (selectionViews.hasOwnProperty(memberId)) {
+ selectionViews[memberId].show();
}
}
this.showSelectionView = showSelectionView;
this.rerenderSelectionViews = function() {
Object.keys(selectionViews).forEach(function(memberId) {
- selectionViews[memberId].rerender()
- })
+ selectionViews[memberId].rerender();
+ });
};
this.registerCursor = function(cursor, virtualSelectionsInitiallyVisible) {
var memberId = cursor.getMemberId(), selectionView = new SelectionView(cursor);
- if(virtualSelectionsInitiallyVisible) {
- selectionView.show()
- }else {
- selectionView.hide()
+ if (virtualSelectionsInitiallyVisible) {
+ selectionView.show();
+ } else {
+ selectionView.hide();
}
selectionViews[memberId] = selectionView;
- return selectionView
+ return selectionView;
};
this.destroy = function(callback) {
var selectionViewArray = getSelectionViews();
function destroySelectionView(i, err) {
- if(err) {
- callback(err)
- }else {
- if(i < selectionViewArray.length) {
+ if (err) {
+ callback(err);
+ } else {
+ if (i < selectionViewArray.length) {
selectionViewArray[i].destroy(function(err) {
- destroySelectionView(i + 1, err)
- })
- }else {
- callback()
+ destroySelectionView(i + 1, err);
+ });
+ } else {
+ callback();
}
}
}
- destroySelectionView(0, undefined)
- }
+ destroySelectionView(0, undefined);
+ };
};
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
gui.SessionViewOptions = function() {
this.editInfoMarkersInitiallyVisible = true;
this.caretAvatarsInitiallyVisible = true;
- this.caretBlinksOnRangeSelect = true
+ this.caretBlinksOnRangeSelect = true;
};
(function() {
function configOption(userValue, defaultValue) {
- return userValue !== undefined ? Boolean(userValue) : defaultValue
+ return userValue !== undefined ? Boolean(userValue) : defaultValue;
}
- gui.SessionView = function SessionView(viewOptions, localMemberId, session, caretManager, selectionViewManager) {
- var avatarInfoStyles, editInfons = "urn:webodf:names:editinfo", editInfoMap = {}, showEditInfoMarkers = configOption(viewOptions.editInfoMarkersInitiallyVisible, true), showCaretAvatars = configOption(viewOptions.caretAvatarsInitiallyVisible, true), blinkOnRangeSelect = configOption(viewOptions.caretBlinksOnRangeSelect, true);
+ gui.SessionView = function SessionView(viewOptions, localMemberId, session, sessionConstraints, caretManager, selectionViewManager) {
+ var avatarInfoStyles, annotationConstraintStyles, editInfons = "urn:webodf:names:editinfo", editInfoMap = {}, odtDocument, odfCanvas, highlightRefreshTask, showEditInfoMarkers = configOption(viewOptions.editInfoMarkersInitiallyVisible, true), showCaretAvatars = configOption(viewOptions.caretAvatarsInitiallyVisible, true), blinkOnRangeSelect = configOption(viewOptions.caretBlinksOnRangeSelect, true);
+ function onAnnotationAdded(info) {
+ if (info.memberId === localMemberId) {
+ odfCanvas.getViewport().scrollIntoView(info.annotation.getBoundingClientRect());
+ }
+ }
+ function newStyleSheet() {
+ var head = document.getElementsByTagName("head").item(0), sheet = (document.createElement("style"));
+ sheet.type = "text/css";
+ sheet.media = "screen, print, handheld, projection";
+ head.appendChild(sheet);
+ return sheet;
+ }
function createAvatarInfoNodeMatch(nodeName, memberId, pseudoClass) {
- return nodeName + '[editinfo|memberid="' + memberId + '"]' + pseudoClass
+ return nodeName + '[editinfo|memberid="' + memberId + '"]' + pseudoClass;
}
function getAvatarInfoStyle(nodeName, memberId, pseudoClass) {
var node = avatarInfoStyles.firstChild, nodeMatch = createAvatarInfoNodeMatch(nodeName, memberId, pseudoClass) + "{";
- while(node) {
- if(node.nodeType === Node.TEXT_NODE && (node).data.indexOf(nodeMatch) === 0) {
- return node
+ while (node) {
+ if (node.nodeType === Node.TEXT_NODE && (node).data.indexOf(nodeMatch) === 0) {
+ return node;
}
- node = node.nextSibling
+ node = node.nextSibling;
}
- return null
+ return null;
}
function setAvatarInfoStyle(memberId, name, color) {
function setStyle(nodeName, rule, pseudoClass) {
var styleRule = createAvatarInfoNodeMatch(nodeName, memberId, pseudoClass) + rule, styleNode = getAvatarInfoStyle(nodeName, memberId, pseudoClass);
- if(styleNode) {
- styleNode.data = styleRule
- }else {
- avatarInfoStyles.appendChild(document.createTextNode(styleRule))
+ if (styleNode) {
+ styleNode.data = styleRule;
+ } else {
+ avatarInfoStyles.appendChild(document.createTextNode(styleRule));
}
}
setStyle("div.editInfoMarker", "{ background-color: " + color + "; }", "");
setStyle("span.editInfoColor", "{ background-color: " + color + "; }", "");
setStyle("span.editInfoAuthor", '{ content: "' + name + '"; }', ":before");
setStyle("dc|creator", "{ background-color: " + color + "; }", "");
- setStyle(".selectionOverlay", "{ fill: " + color + "; stroke: " + color + ";}", "");
- if(memberId === gui.ShadowCursor.ShadowCursorMemberId || memberId === localMemberId) {
- setStyle(".webodf-touchEnabled .selectionOverlay", "{ display: block; }", " > .draggable")
+ setStyle(".webodf-selectionOverlay", "{ fill: " + color + "; stroke: " + color + ";}", "");
+ if (memberId === localMemberId) {
+ setStyle(".webodf-touchEnabled .webodf-selectionOverlay", "{ display: block; }", " > .webodf-draggable");
+ memberId = gui.ShadowCursor.ShadowCursorMemberId;
+ setStyle(".webodf-selectionOverlay", "{ fill: " + color + "; stroke: " + color + ";}", "");
+ setStyle(".webodf-touchEnabled .webodf-selectionOverlay", "{ display: block; }", " > .webodf-draggable");
}
}
function highlightEdit(element, memberId, timestamp) {
var editInfo, editInfoMarker, id = "", editInfoNode = element.getElementsByTagNameNS(editInfons, "editinfo").item(0);
- if(editInfoNode) {
+ if (editInfoNode) {
id = (editInfoNode).getAttributeNS(editInfons, "id");
- editInfoMarker = editInfoMap[id]
- }else {
+ editInfoMarker = editInfoMap[id];
+ } else {
id = Math.random().toString();
editInfo = new ops.EditInfo(element, session.getOdtDocument());
editInfoMarker = new gui.EditInfoMarker(editInfo, showEditInfoMarkers);
editInfoNode = (element.getElementsByTagNameNS(editInfons, "editinfo").item(0));
editInfoNode.setAttributeNS(editInfons, "id", id);
- editInfoMap[id] = editInfoMarker
+ editInfoMap[id] = editInfoMarker;
}
- editInfoMarker.addEdit(memberId, new Date(timestamp))
+ editInfoMarker.addEdit(memberId, new Date(timestamp));
}
function setEditInfoMarkerVisibility(visible) {
var editInfoMarker, keyname;
- for(keyname in editInfoMap) {
- if(editInfoMap.hasOwnProperty(keyname)) {
+ for (keyname in editInfoMap) {
+ if (editInfoMap.hasOwnProperty(keyname)) {
editInfoMarker = editInfoMap[keyname];
- if(visible) {
- editInfoMarker.show()
- }else {
- editInfoMarker.hide()
+ if (visible) {
+ editInfoMarker.show();
+ } else {
+ editInfoMarker.hide();
}
}
}
}
function setCaretAvatarVisibility(visible) {
caretManager.getCarets().forEach(function(caret) {
- if(visible) {
- caret.showHandle()
- }else {
- caret.hideHandle()
+ if (visible) {
+ caret.showHandle();
+ } else {
+ caret.hideHandle();
}
- })
+ });
}
this.showEditInfoMarkers = function() {
- if(showEditInfoMarkers) {
- return
+ if (showEditInfoMarkers) {
+ return;
}
showEditInfoMarkers = true;
- setEditInfoMarkerVisibility(showEditInfoMarkers)
+ setEditInfoMarkerVisibility(showEditInfoMarkers);
};
this.hideEditInfoMarkers = function() {
- if(!showEditInfoMarkers) {
- return
+ if (!showEditInfoMarkers) {
+ return;
}
showEditInfoMarkers = false;
- setEditInfoMarkerVisibility(showEditInfoMarkers)
+ setEditInfoMarkerVisibility(showEditInfoMarkers);
};
this.showCaretAvatars = function() {
- if(showCaretAvatars) {
- return
+ if (showCaretAvatars) {
+ return;
}
showCaretAvatars = true;
- setCaretAvatarVisibility(showCaretAvatars)
+ setCaretAvatarVisibility(showCaretAvatars);
};
this.hideCaretAvatars = function() {
- if(!showCaretAvatars) {
- return
+ if (!showCaretAvatars) {
+ return;
}
showCaretAvatars = false;
- setCaretAvatarVisibility(showCaretAvatars)
+ setCaretAvatarVisibility(showCaretAvatars);
};
this.getSession = function() {
- return session
+ return session;
};
this.getCaret = function(memberid) {
- return caretManager.getCaret(memberid)
+ return caretManager.getCaret(memberid);
};
function renderMemberData(member) {
var memberId = member.getMemberId(), properties = member.getProperties();
setAvatarInfoStyle(memberId, properties.fullName, properties.color);
- if(localMemberId === memberId) {
- setAvatarInfoStyle("", "", properties.color)
- }
}
function onCursorAdded(cursor) {
var memberId = cursor.getMemberId(), properties = session.getOdtDocument().getMember(memberId).getProperties(), caret;
caretManager.registerCursor(cursor, showCaretAvatars, blinkOnRangeSelect);
selectionViewManager.registerCursor(cursor, true);
caret = caretManager.getCaret(memberId);
- if(caret) {
+ if (caret) {
caret.setAvatarImageUrl(properties.imageUrl);
- caret.setColor(properties.color)
+ caret.setColor(properties.color);
}
- runtime.log("+++ View here +++ eagerly created an Caret for '" + memberId + "'! +++")
+ runtime.log("+++ View here +++ eagerly created an Caret for '" + memberId + "'! +++");
}
function onCursorMoved(cursor) {
var memberId = cursor.getMemberId(), localSelectionView = selectionViewManager.getSelectionView(localMemberId), shadowSelectionView = selectionViewManager.getSelectionView(gui.ShadowCursor.ShadowCursorMemberId), localCaret = caretManager.getCaret(localMemberId);
- if(memberId === localMemberId) {
+ if (memberId === localMemberId) {
shadowSelectionView.hide();
- if(localSelectionView) {
- localSelectionView.show()
+ if (localSelectionView) {
+ localSelectionView.show();
}
- if(localCaret) {
- localCaret.show()
+ if (localCaret) {
+ localCaret.show();
}
- }else {
- if(memberId === gui.ShadowCursor.ShadowCursorMemberId) {
+ } else {
+ if (memberId === gui.ShadowCursor.ShadowCursorMemberId) {
shadowSelectionView.show();
- if(localSelectionView) {
- localSelectionView.hide()
+ if (localSelectionView) {
+ localSelectionView.hide();
}
- if(localCaret) {
- localCaret.hide()
+ if (localCaret) {
+ localCaret.hide();
}
}
}
}
function onCursorRemoved(memberid) {
- selectionViewManager.removeSelectionView(memberid)
+ selectionViewManager.removeSelectionView(memberid);
}
function onParagraphChanged(info) {
- highlightEdit(info.paragraphElement, info.memberId, info.timeStamp)
+ highlightEdit(info.paragraphElement, info.memberId, info.timeStamp);
+ highlightRefreshTask.trigger();
}
- this.destroy = function(callback) {
- var odtDocument = session.getOdtDocument(), editInfoArray = Object.keys(editInfoMap).map(function(keyname) {
- return editInfoMap[keyname]
+ function refreshHighlights() {
+ var annotationViewManager = odfCanvas.getAnnotationViewManager();
+ if (annotationViewManager) {
+ annotationViewManager.rehighlightAnnotations();
+ odtDocument.fixCursorPositions();
+ }
+ }
+ function processConstraints() {
+ var localMemberName, cssString, localMember;
+ if (annotationConstraintStyles.hasChildNodes()) {
+ core.DomUtils.removeAllChildNodes(annotationConstraintStyles);
+ }
+ if (sessionConstraints.getState(gui.CommonConstraints.EDIT.ANNOTATIONS.ONLY_DELETE_OWN) === true) {
+ localMember = session.getOdtDocument().getMember(localMemberId);
+ if (localMember) {
+ localMemberName = localMember.getProperties().fullName;
+ cssString = ".annotationWrapper:not([creator = '" + localMemberName + "']) .annotationRemoveButton { display: none; }";
+ annotationConstraintStyles.appendChild(document.createTextNode(cssString));
+ }
+ }
+ }
+ function destroy(callback) {
+ var editInfoArray = Object.keys(editInfoMap).map(function(keyname) {
+ return editInfoMap[keyname];
});
odtDocument.unsubscribe(ops.Document.signalMemberAdded, renderMemberData);
odtDocument.unsubscribe(ops.Document.signalMemberUpdated, renderMemberData);
@@ -16395,23 +16415,34 @@ gui.SessionViewOptions = function() {
odtDocument.unsubscribe(ops.OdtDocument.signalParagraphChanged, selectionViewManager.rerenderSelectionViews);
odtDocument.unsubscribe(ops.OdtDocument.signalTableAdded, selectionViewManager.rerenderSelectionViews);
odtDocument.unsubscribe(ops.OdtDocument.signalParagraphStyleModified, selectionViewManager.rerenderSelectionViews);
+ sessionConstraints.unsubscribe(gui.CommonConstraints.EDIT.ANNOTATIONS.ONLY_DELETE_OWN, processConstraints);
+ odtDocument.unsubscribe(ops.Document.signalMemberAdded, processConstraints);
+ odtDocument.unsubscribe(ops.Document.signalMemberUpdated, processConstraints);
avatarInfoStyles.parentNode.removeChild(avatarInfoStyles);
+ annotationConstraintStyles.parentNode.removeChild(annotationConstraintStyles);
(function destroyEditInfo(i, err) {
- if(err) {
- callback(err)
- }else {
- if(i < editInfoArray.length) {
+ if (err) {
+ callback(err);
+ } else {
+ if (i < editInfoArray.length) {
editInfoArray[i].destroy(function(err) {
- destroyEditInfo(i + 1, err)
- })
- }else {
- callback()
+ destroyEditInfo(i + 1, err);
+ });
+ } else {
+ callback();
}
}
- })(0, undefined)
+ })(0, undefined);
+ }
+ this.destroy = function(callback) {
+ var cleanup = [highlightRefreshTask.destroy, destroy];
+ odtDocument.unsubscribe(ops.OdtDocument.signalAnnotationAdded, onAnnotationAdded);
+ core.Async.destroyAll(cleanup, callback);
};
function init() {
- var odtDocument = session.getOdtDocument(), head = document.getElementsByTagName("head").item(0);
+ odtDocument = session.getOdtDocument();
+ odfCanvas = odtDocument.getOdfCanvas();
+ odtDocument.subscribe(ops.OdtDocument.signalAnnotationAdded, onAnnotationAdded);
odtDocument.subscribe(ops.Document.signalMemberAdded, renderMemberData);
odtDocument.subscribe(ops.Document.signalMemberUpdated, renderMemberData);
odtDocument.subscribe(ops.Document.signalCursorAdded, onCursorAdded);
@@ -16421,125 +16452,118 @@ gui.SessionViewOptions = function() {
odtDocument.subscribe(ops.OdtDocument.signalParagraphChanged, selectionViewManager.rerenderSelectionViews);
odtDocument.subscribe(ops.OdtDocument.signalTableAdded, selectionViewManager.rerenderSelectionViews);
odtDocument.subscribe(ops.OdtDocument.signalParagraphStyleModified, selectionViewManager.rerenderSelectionViews);
- avatarInfoStyles = (document.createElementNS(head.namespaceURI, "style"));
- avatarInfoStyles.type = "text/css";
- avatarInfoStyles.media = "screen, print, handheld, projection";
+ sessionConstraints.subscribe(gui.CommonConstraints.EDIT.ANNOTATIONS.ONLY_DELETE_OWN, processConstraints);
+ odtDocument.subscribe(ops.Document.signalMemberAdded, processConstraints);
+ odtDocument.subscribe(ops.Document.signalMemberUpdated, processConstraints);
+ avatarInfoStyles = newStyleSheet();
avatarInfoStyles.appendChild(document.createTextNode("@namespace editinfo url(urn:webodf:names:editinfo);"));
avatarInfoStyles.appendChild(document.createTextNode("@namespace dc url(http://purl.org/dc/elements/1.1/);"));
- head.appendChild(avatarInfoStyles)
+ annotationConstraintStyles = newStyleSheet();
+ processConstraints();
+ highlightRefreshTask = core.Task.createRedrawTask(refreshHighlights);
}
- init()
- }
+ init();
+ };
})();
gui.SvgSelectionView = function SvgSelectionView(cursor) {
- var document = cursor.getDocument(), documentRoot, root, doc = document.getDOMDocument(), async = new core.Async, svgns = "http://www.w3.org/2000/svg", overlay = doc.createElementNS(svgns, "svg"), polygon = doc.createElementNS(svgns, "polygon"), handle1 = doc.createElementNS(svgns, "circle"), handle2 = doc.createElementNS(svgns, "circle"), odfUtils = new odf.OdfUtils, domUtils = new core.DomUtils, zoomHelper = document.getCanvas().getZoomHelper(), isVisible = true, positionIterator = gui.SelectionMover.createPositionIterator(document.getRootNode()),
+ var document = cursor.getDocument(), documentRoot, sizer, doc = document.getDOMDocument(), svgns = "http://www.w3.org/2000/svg", overlay = doc.createElementNS(svgns, "svg"), polygon = doc.createElementNS(svgns, "polygon"), handle1 = doc.createElementNS(svgns, "circle"), handle2 = doc.createElementNS(svgns, "circle"), odfUtils = odf.OdfUtils, domUtils = core.DomUtils, zoomHelper = document.getCanvas().getZoomHelper(), isVisible = true, positionIterator = cursor.getDocument().createPositionIterator(document.getRootNode()),
FILTER_ACCEPT = NodeFilter.FILTER_ACCEPT, FILTER_REJECT = NodeFilter.FILTER_REJECT, HANDLE_RADIUS = 8, renderTask;
function addOverlay() {
var newDocumentRoot = document.getRootNode();
- if(documentRoot !== newDocumentRoot) {
+ if (documentRoot !== newDocumentRoot) {
documentRoot = newDocumentRoot;
- root = (documentRoot.parentNode.parentNode.parentNode);
- root.appendChild(overlay);
- overlay.setAttribute("class", "selectionOverlay");
- handle1.setAttribute("class", "draggable");
- handle2.setAttribute("class", "draggable");
+ sizer = document.getCanvas().getSizer();
+ sizer.appendChild(overlay);
+ overlay.setAttribute("class", "webodf-selectionOverlay");
+ handle1.setAttribute("class", "webodf-draggable");
+ handle2.setAttribute("class", "webodf-draggable");
handle1.setAttribute("end", "left");
handle2.setAttribute("end", "right");
handle1.setAttribute("r", HANDLE_RADIUS);
handle2.setAttribute("r", HANDLE_RADIUS);
overlay.appendChild(polygon);
overlay.appendChild(handle1);
- overlay.appendChild(handle2)
+ overlay.appendChild(handle2);
}
}
- function translateRect(rect) {
- var rootRect = domUtils.getBoundingClientRect(root), zoomLevel = zoomHelper.getZoomLevel(), resultRect = {};
- resultRect.top = domUtils.adaptRangeDifferenceToZoomLevel(rect.top - rootRect.top, zoomLevel);
- resultRect.left = domUtils.adaptRangeDifferenceToZoomLevel(rect.left - rootRect.left, zoomLevel);
- resultRect.bottom = domUtils.adaptRangeDifferenceToZoomLevel(rect.bottom - rootRect.top, zoomLevel);
- resultRect.right = domUtils.adaptRangeDifferenceToZoomLevel(rect.right - rootRect.left, zoomLevel);
- resultRect.width = domUtils.adaptRangeDifferenceToZoomLevel(rect.width, zoomLevel);
- resultRect.height = domUtils.adaptRangeDifferenceToZoomLevel(rect.height, zoomLevel);
- return resultRect
- }
function isRangeVisible(range) {
var bcr = range.getBoundingClientRect();
- return Boolean(bcr && bcr.height !== 0)
+ return Boolean(bcr && bcr.height !== 0);
}
function lastVisibleRect(range, nodes) {
var nextNodeIndex = nodes.length - 1, node = nodes[nextNodeIndex], startOffset, endOffset;
- if(range.endContainer === node) {
- startOffset = range.endOffset
- }else {
- if(node.nodeType === Node.TEXT_NODE) {
- startOffset = node.length
- }else {
- startOffset = node.childNodes.length
+ if (range.endContainer === node) {
+ startOffset = range.endOffset;
+ } else {
+ if (node.nodeType === Node.TEXT_NODE) {
+ startOffset = node.length;
+ } else {
+ startOffset = node.childNodes.length;
}
}
endOffset = startOffset;
range.setStart(node, startOffset);
range.setEnd(node, endOffset);
- while(!isRangeVisible(range)) {
- if(node.nodeType === Node.ELEMENT_NODE && startOffset > 0) {
- startOffset = 0
- }else {
- if(node.nodeType === Node.TEXT_NODE && startOffset > 0) {
- startOffset -= 1
- }else {
- if(nodes[nextNodeIndex]) {
+ while (!isRangeVisible(range)) {
+ if (node.nodeType === Node.ELEMENT_NODE && startOffset > 0) {
+ startOffset = 0;
+ } else {
+ if (node.nodeType === Node.TEXT_NODE && startOffset > 0) {
+ startOffset -= 1;
+ } else {
+ if (nodes[nextNodeIndex]) {
node = nodes[nextNodeIndex];
nextNodeIndex -= 1;
- startOffset = endOffset = node.length || node.childNodes.length
- }else {
- return false
+ startOffset = endOffset = node.length || node.childNodes.length;
+ } else {
+ return false;
}
}
}
range.setStart(node, startOffset);
- range.setEnd(node, endOffset)
+ range.setEnd(node, endOffset);
}
- return true
+ return true;
}
function firstVisibleRect(range, nodes) {
var nextNodeIndex = 0, node = nodes[nextNodeIndex], startOffset = range.startContainer === node ? range.startOffset : 0, endOffset = startOffset;
range.setStart(node, startOffset);
range.setEnd(node, endOffset);
- while(!isRangeVisible(range)) {
- if(node.nodeType === Node.ELEMENT_NODE && endOffset < node.childNodes.length) {
- endOffset = node.childNodes.length
- }else {
- if(node.nodeType === Node.TEXT_NODE && endOffset < node.length) {
- endOffset += 1
- }else {
- if(nodes[nextNodeIndex]) {
+ while (!isRangeVisible(range)) {
+ if (node.nodeType === Node.ELEMENT_NODE && endOffset < node.childNodes.length) {
+ endOffset = node.childNodes.length;
+ } else {
+ if (node.nodeType === Node.TEXT_NODE && endOffset < node.length) {
+ endOffset += 1;
+ } else {
+ if (nodes[nextNodeIndex]) {
node = nodes[nextNodeIndex];
nextNodeIndex += 1;
- startOffset = endOffset = 0
- }else {
- return false
+ startOffset = endOffset = 0;
+ } else {
+ return false;
}
}
}
range.setStart(node, startOffset);
- range.setEnd(node, endOffset)
+ range.setEnd(node, endOffset);
}
- return true
+ return true;
}
function getExtremeRanges(range) {
var nodes = odfUtils.getTextElements(range, true, false), firstRange = (range.cloneRange()), lastRange = (range.cloneRange()), fillerRange = range.cloneRange();
- if(!nodes.length) {
- return null
+ if (!nodes.length) {
+ return null;
}
- if(!firstVisibleRect(firstRange, nodes)) {
- return null
+ if (!firstVisibleRect(firstRange, nodes)) {
+ return null;
}
- if(!lastVisibleRect(lastRange, nodes)) {
- return null
+ if (!lastVisibleRect(lastRange, nodes)) {
+ return null;
}
fillerRange.setStart(firstRange.startContainer, firstRange.startOffset);
fillerRange.setEnd(lastRange.endContainer, lastRange.endOffset);
- return{firstRange:firstRange, lastRange:lastRange, fillerRange:fillerRange}
+ return {firstRange:firstRange, lastRange:lastRange, fillerRange:fillerRange};
}
function getBoundingRect(rect1, rect2) {
var resultRect = {};
@@ -16549,106 +16573,106 @@ gui.SvgSelectionView = function SvgSelectionView(cursor) {
resultRect.bottom = Math.max(rect1.bottom, rect2.bottom);
resultRect.width = resultRect.right - resultRect.left;
resultRect.height = resultRect.bottom - resultRect.top;
- return resultRect
+ return resultRect;
}
function checkAndGrowOrCreateRect(originalRect, newRect) {
- if(newRect && (newRect.width > 0 && newRect.height > 0)) {
- if(!originalRect) {
- originalRect = newRect
- }else {
- originalRect = getBoundingRect(originalRect, newRect)
+ if (newRect && newRect.width > 0 && newRect.height > 0) {
+ if (!originalRect) {
+ originalRect = newRect;
+ } else {
+ originalRect = getBoundingRect(originalRect, newRect);
}
}
- return originalRect
+ return originalRect;
}
function getFillerRect(fillerRange) {
var containerNode = fillerRange.commonAncestorContainer, firstNode = (fillerRange.startContainer), lastNode = (fillerRange.endContainer), firstOffset = fillerRange.startOffset, lastOffset = fillerRange.endOffset, currentNode, lastMeasuredNode, firstSibling, lastSibling, grownRect = null, currentRect, range = doc.createRange(), rootFilter, odfNodeFilter = new odf.OdfNodeFilter, treeWalker;
function acceptNode(node) {
positionIterator.setUnfilteredPosition(node, 0);
- if(odfNodeFilter.acceptNode(node) === FILTER_ACCEPT && rootFilter.acceptPosition(positionIterator) === FILTER_ACCEPT) {
- return FILTER_ACCEPT
+ if (odfNodeFilter.acceptNode(node) === FILTER_ACCEPT && rootFilter.acceptPosition(positionIterator) === FILTER_ACCEPT) {
+ return FILTER_ACCEPT;
}
- return FILTER_REJECT
+ return FILTER_REJECT;
}
function getRectFromNodeAfterFiltering(node) {
var rect = null;
- if(acceptNode(node) === FILTER_ACCEPT) {
- rect = domUtils.getBoundingClientRect(node)
+ if (acceptNode(node) === FILTER_ACCEPT) {
+ rect = domUtils.getBoundingClientRect(node);
}
- return rect
+ return rect;
}
- if(firstNode === containerNode || lastNode === containerNode) {
+ if (firstNode === containerNode || lastNode === containerNode) {
range = fillerRange.cloneRange();
grownRect = range.getBoundingClientRect();
range.detach();
- return grownRect
+ return grownRect;
}
firstSibling = firstNode;
- while(firstSibling.parentNode !== containerNode) {
- firstSibling = firstSibling.parentNode
+ while (firstSibling.parentNode !== containerNode) {
+ firstSibling = firstSibling.parentNode;
}
lastSibling = lastNode;
- while(lastSibling.parentNode !== containerNode) {
- lastSibling = lastSibling.parentNode
+ while (lastSibling.parentNode !== containerNode) {
+ lastSibling = lastSibling.parentNode;
}
rootFilter = document.createRootFilter(firstNode);
currentNode = firstSibling.nextSibling;
- while(currentNode && currentNode !== lastSibling) {
+ while (currentNode && currentNode !== lastSibling) {
currentRect = getRectFromNodeAfterFiltering(currentNode);
grownRect = checkAndGrowOrCreateRect(grownRect, currentRect);
- currentNode = currentNode.nextSibling
+ currentNode = currentNode.nextSibling;
}
- if(odfUtils.isParagraph(firstSibling)) {
- grownRect = checkAndGrowOrCreateRect(grownRect, domUtils.getBoundingClientRect(firstSibling))
- }else {
- if(firstSibling.nodeType === Node.TEXT_NODE) {
+ if (odfUtils.isParagraph(firstSibling)) {
+ grownRect = checkAndGrowOrCreateRect(grownRect, domUtils.getBoundingClientRect(firstSibling));
+ } else {
+ if (firstSibling.nodeType === Node.TEXT_NODE) {
currentNode = firstSibling;
range.setStart(currentNode, firstOffset);
range.setEnd(currentNode, currentNode === lastSibling ? lastOffset : (currentNode).length);
currentRect = range.getBoundingClientRect();
- grownRect = checkAndGrowOrCreateRect(grownRect, currentRect)
- }else {
+ grownRect = checkAndGrowOrCreateRect(grownRect, currentRect);
+ } else {
treeWalker = doc.createTreeWalker(firstSibling, NodeFilter.SHOW_TEXT, acceptNode, false);
currentNode = treeWalker.currentNode = firstNode;
- while(currentNode && currentNode !== lastNode) {
+ while (currentNode && currentNode !== lastNode) {
range.setStart(currentNode, firstOffset);
range.setEnd(currentNode, (currentNode).length);
currentRect = range.getBoundingClientRect();
grownRect = checkAndGrowOrCreateRect(grownRect, currentRect);
lastMeasuredNode = currentNode;
firstOffset = 0;
- currentNode = treeWalker.nextNode()
+ currentNode = treeWalker.nextNode();
}
}
}
- if(!lastMeasuredNode) {
- lastMeasuredNode = firstNode
+ if (!lastMeasuredNode) {
+ lastMeasuredNode = firstNode;
}
- if(odfUtils.isParagraph(lastSibling)) {
- grownRect = checkAndGrowOrCreateRect(grownRect, domUtils.getBoundingClientRect(lastSibling))
- }else {
- if(lastSibling.nodeType === Node.TEXT_NODE) {
+ if (odfUtils.isParagraph(lastSibling)) {
+ grownRect = checkAndGrowOrCreateRect(grownRect, domUtils.getBoundingClientRect(lastSibling));
+ } else {
+ if (lastSibling.nodeType === Node.TEXT_NODE) {
currentNode = lastSibling;
range.setStart(currentNode, currentNode === firstSibling ? firstOffset : 0);
range.setEnd(currentNode, lastOffset);
currentRect = range.getBoundingClientRect();
- grownRect = checkAndGrowOrCreateRect(grownRect, currentRect)
- }else {
+ grownRect = checkAndGrowOrCreateRect(grownRect, currentRect);
+ } else {
treeWalker = doc.createTreeWalker(lastSibling, NodeFilter.SHOW_TEXT, acceptNode, false);
currentNode = treeWalker.currentNode = lastNode;
- while(currentNode && currentNode !== lastMeasuredNode) {
+ while (currentNode && currentNode !== lastMeasuredNode) {
range.setStart(currentNode, 0);
range.setEnd(currentNode, lastOffset);
currentRect = range.getBoundingClientRect();
grownRect = checkAndGrowOrCreateRect(grownRect, currentRect);
currentNode = treeWalker.previousNode();
- if(currentNode) {
- lastOffset = (currentNode).length
+ if (currentNode) {
+ lastOffset = (currentNode).length;
}
}
}
}
- return grownRect
+ return grownRect;
}
function getCollapsedRectOfTextRange(range, useRightEdge) {
var clientRect = range.getBoundingClientRect(), collapsedRect = {};
@@ -16657,28 +16681,28 @@ gui.SvgSelectionView = function SvgSelectionView(cursor) {
collapsedRect.bottom = clientRect.bottom;
collapsedRect.height = clientRect.height;
collapsedRect.left = collapsedRect.right = useRightEdge ? clientRect.right : clientRect.left;
- return collapsedRect
+ return collapsedRect;
}
function setPoints(points) {
var pointsString = "", i;
- for(i = 0;i < points.length;i += 1) {
- pointsString += points[i].x + "," + points[i].y + " "
+ for (i = 0;i < points.length;i += 1) {
+ pointsString += points[i].x + "," + points[i].y + " ";
}
- polygon.setAttribute("points", pointsString)
+ polygon.setAttribute("points", pointsString);
}
function repositionOverlays(selectedRange) {
- var extremes = getExtremeRanges(selectedRange), firstRange, lastRange, fillerRange, firstRect, fillerRect, lastRect, left, right, top, bottom;
- if(extremes) {
+ var rootRect = (domUtils.getBoundingClientRect(sizer)), zoomLevel = zoomHelper.getZoomLevel(), extremes = getExtremeRanges(selectedRange), firstRange, lastRange, fillerRange, firstRect, fillerRect, lastRect, left, right, top, bottom;
+ if (extremes) {
firstRange = extremes.firstRange;
lastRange = extremes.lastRange;
fillerRange = extremes.fillerRange;
- firstRect = translateRect(getCollapsedRectOfTextRange(firstRange, false));
- lastRect = translateRect(getCollapsedRectOfTextRange(lastRange, true));
+ firstRect = domUtils.translateRect(getCollapsedRectOfTextRange(firstRange, false), rootRect, zoomLevel);
+ lastRect = domUtils.translateRect(getCollapsedRectOfTextRange(lastRange, true), rootRect, zoomLevel);
fillerRect = getFillerRect(fillerRange);
- if(!fillerRect) {
- fillerRect = getBoundingRect(firstRect, lastRect)
- }else {
- fillerRect = translateRect(fillerRect)
+ if (!fillerRect) {
+ fillerRect = getBoundingRect(firstRect, lastRect);
+ } else {
+ fillerRect = domUtils.translateRect(fillerRect, rootRect, zoomLevel);
}
left = fillerRect.left;
right = firstRect.left + Math.max(0, fillerRect.width - (firstRect.left - fillerRect.left));
@@ -16691,127 +16715,92 @@ gui.SvgSelectionView = function SvgSelectionView(cursor) {
handle2.setAttribute("cy", bottom - lastRect.height / 2);
firstRange.detach();
lastRange.detach();
- fillerRange.detach()
+ fillerRange.detach();
}
- return Boolean(extremes)
+ return Boolean(extremes);
}
function rerender() {
var range = cursor.getSelectedRange(), shouldShow;
- shouldShow = isVisible && (cursor.getSelectionType() === ops.OdtCursor.RangeSelection && !range.collapsed);
- if(shouldShow) {
+ shouldShow = isVisible && cursor.getSelectionType() === ops.OdtCursor.RangeSelection && !range.collapsed;
+ if (shouldShow) {
addOverlay();
- shouldShow = repositionOverlays(range)
+ shouldShow = repositionOverlays(range);
}
- if(shouldShow) {
- overlay.style.display = "block"
- }else {
- overlay.style.display = "none"
+ if (shouldShow) {
+ overlay.style.display = "block";
+ } else {
+ overlay.style.display = "none";
}
}
this.rerender = function() {
- if(isVisible) {
- renderTask.trigger()
+ if (isVisible) {
+ renderTask.trigger();
}
};
this.show = function() {
isVisible = true;
- renderTask.trigger()
+ renderTask.trigger();
};
this.hide = function() {
isVisible = false;
- renderTask.trigger()
+ renderTask.trigger();
};
function handleCursorMove(movedCursor) {
- if(isVisible && movedCursor === cursor) {
- renderTask.trigger()
+ if (isVisible && movedCursor === cursor) {
+ renderTask.trigger();
}
}
function scaleHandles(zoomLevel) {
var radius = HANDLE_RADIUS / zoomLevel;
handle1.setAttribute("r", radius);
- handle2.setAttribute("r", radius)
+ handle2.setAttribute("r", radius);
}
function destroy(callback) {
- root.removeChild(overlay);
+ sizer.removeChild(overlay);
+ sizer.classList.remove("webodf-virtualSelections");
cursor.getDocument().unsubscribe(ops.Document.signalCursorMoved, handleCursorMove);
zoomHelper.unsubscribe(gui.ZoomHelper.signalZoomChanged, scaleHandles);
- callback()
+ callback();
}
this.destroy = function(callback) {
- async.destroyAll([renderTask.destroy, destroy], callback)
+ core.Async.destroyAll([renderTask.destroy, destroy], callback);
};
function init() {
var editinfons = "urn:webodf:names:editinfo", memberid = cursor.getMemberId();
- renderTask = new core.ScheduledTask(rerender, 0);
+ renderTask = core.Task.createRedrawTask(rerender);
addOverlay();
overlay.setAttributeNS(editinfons, "editinfo:memberid", memberid);
+ sizer.classList.add("webodf-virtualSelections");
cursor.getDocument().subscribe(ops.Document.signalCursorMoved, handleCursorMove);
zoomHelper.subscribe(gui.ZoomHelper.signalZoomChanged, scaleHandles);
- scaleHandles(zoomHelper.getZoomLevel())
+ scaleHandles(zoomHelper.getZoomLevel());
}
- init()
+ init();
};
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
gui.UndoStateRules = function UndoStateRules() {
function ReverseIterator(array, predicate) {
var index = array.length;
this.previous = function() {
- for(index = index - 1;index >= 0;index -= 1) {
- if(predicate(array[index])) {
- return array[index]
+ for (index = index - 1;index >= 0;index -= 1) {
+ if (predicate(array[index])) {
+ return array[index];
}
}
- return null
- }
+ return null;
+ };
}
function getOpType(op) {
- return op.spec().optype
+ return op.spec().optype;
}
function getOpPosition(op) {
var key = "position", spec = op.spec(), value;
- if(spec.hasOwnProperty(key)) {
- value = (spec[key])
+ if (spec.hasOwnProperty(key)) {
+ value = (spec[key]);
}
- return value
+ return value;
}
function isEditOperation(op) {
- return op.isEdit
+ return op.isEdit;
}
this.isEditOperation = isEditOperation;
function canAggregateOperation(op) {
@@ -16821,30 +16810,30 @@ gui.UndoStateRules = function UndoStateRules() {
case "InsertText":
return true;
default:
- return false
+ return false;
}
}
function isSameDirectionOfTravel(thisOp, lastEditOp, secondLastEditOp) {
var thisPosition = getOpPosition(thisOp), lastPosition = getOpPosition(lastEditOp), secondLastPosition = getOpPosition(secondLastEditOp), diffLastToSecondLast = lastPosition - secondLastPosition, diffThisToLast = thisPosition - lastPosition;
- return diffThisToLast === diffLastToSecondLast
+ return diffThisToLast === diffLastToSecondLast;
}
function isAdjacentOperation(thisOp, lastEditOp) {
var positionDifference = getOpPosition(thisOp) - getOpPosition(lastEditOp);
- return positionDifference === 0 || Math.abs(positionDifference) === 1
+ return positionDifference === 0 || Math.abs(positionDifference) === 1;
}
function continuesOperations(thisOp, lastEditOp, secondLastEditOp) {
- if(!secondLastEditOp) {
- return isAdjacentOperation(thisOp, lastEditOp)
+ if (!secondLastEditOp) {
+ return isAdjacentOperation(thisOp, lastEditOp);
}
- return isSameDirectionOfTravel(thisOp, lastEditOp, secondLastEditOp)
+ return isSameDirectionOfTravel(thisOp, lastEditOp, secondLastEditOp);
}
function continuesMostRecentEditOperation(thisOp, recentOperations) {
var thisOpType = getOpType(thisOp), editOpsFinder = new ReverseIterator(recentOperations, isEditOperation), lastEditOp = editOpsFinder.previous();
runtime.assert(Boolean(lastEditOp), "No edit operations found in state");
- if(thisOpType === getOpType((lastEditOp))) {
- return continuesOperations(thisOp, (lastEditOp), editOpsFinder.previous())
+ if (thisOpType === getOpType((lastEditOp))) {
+ return continuesOperations(thisOp, (lastEditOp), editOpsFinder.previous());
}
- return false
+ return false;
}
function continuesMostRecentEditGroup(thisOp, recentOperations) {
var thisOpType = getOpType(thisOp), editOpsFinder = new ReverseIterator(recentOperations, isEditOperation), candidateOp = editOpsFinder.previous(), lastEditOp, secondLastEditOp = null, inspectedGroupsCount, groupId;
@@ -16852,994 +16841,1913 @@ gui.UndoStateRules = function UndoStateRules() {
groupId = candidateOp.group;
runtime.assert(groupId !== undefined, "Operation has no group");
inspectedGroupsCount = 1;
- while(candidateOp && candidateOp.group === groupId) {
- if(thisOpType === getOpType(candidateOp)) {
+ while (candidateOp && candidateOp.group === groupId) {
+ if (thisOpType === getOpType(candidateOp)) {
lastEditOp = candidateOp;
- break
+ break;
}
- candidateOp = editOpsFinder.previous()
+ candidateOp = editOpsFinder.previous();
}
- if(lastEditOp) {
+ if (lastEditOp) {
candidateOp = editOpsFinder.previous();
- while(candidateOp) {
- if(candidateOp.group !== groupId) {
- if(inspectedGroupsCount === 2) {
- break
+ while (candidateOp) {
+ if (candidateOp.group !== groupId) {
+ if (inspectedGroupsCount === 2) {
+ break;
}
groupId = candidateOp.group;
- inspectedGroupsCount += 1
+ inspectedGroupsCount += 1;
}
- if(thisOpType === getOpType(candidateOp)) {
+ if (thisOpType === getOpType(candidateOp)) {
secondLastEditOp = candidateOp;
- break
+ break;
}
- candidateOp = editOpsFinder.previous()
+ candidateOp = editOpsFinder.previous();
}
- return continuesOperations(thisOp, (lastEditOp), secondLastEditOp)
+ return continuesOperations(thisOp, (lastEditOp), secondLastEditOp);
}
- return false
+ return false;
}
function isPartOfOperationSet(operation, recentOperations) {
var areOperationsGrouped = operation.group !== undefined, lastOperation;
- if(!isEditOperation(operation)) {
- return true
+ if (!isEditOperation(operation)) {
+ return true;
}
- if(recentOperations.length === 0) {
- return true
+ if (recentOperations.length === 0) {
+ return true;
}
lastOperation = recentOperations[recentOperations.length - 1];
- if(areOperationsGrouped && operation.group === lastOperation.group) {
- return true
+ if (areOperationsGrouped && operation.group === lastOperation.group) {
+ return true;
}
- if(canAggregateOperation(operation) && recentOperations.some(isEditOperation)) {
- if(areOperationsGrouped) {
- return continuesMostRecentEditGroup(operation, recentOperations)
+ if (canAggregateOperation(operation) && recentOperations.some(isEditOperation)) {
+ if (areOperationsGrouped) {
+ return continuesMostRecentEditGroup(operation, recentOperations);
}
- return continuesMostRecentEditOperation(operation, recentOperations)
+ return continuesMostRecentEditOperation(operation, recentOperations);
}
- return false
+ return false;
}
- this.isPartOfOperationSet = isPartOfOperationSet
+ this.isPartOfOperationSet = isPartOfOperationSet;
};
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.TrivialUndoManager = function TrivialUndoManager(defaultRules) {
- var self = this, cursorns = "urn:webodf:names:cursor", domUtils = new core.DomUtils, initialDoc, initialState = [], playFunc, document, currentUndoState = [], undoStates = [], redoStates = [], eventNotifier = new core.EventNotifier([gui.UndoManager.signalUndoStackChanged, gui.UndoManager.signalUndoStateCreated, gui.UndoManager.signalUndoStateModified, gui.TrivialUndoManager.signalDocumentRootReplaced]), undoRules = defaultRules || new gui.UndoStateRules, isExecutingOps = false;
- function executeOperations(operations) {
- if(operations.length > 0) {
- isExecutingOps = true;
- playFunc(operations);
- isExecutingOps = false
+(function() {
+ var stateIdBase = 0;
+ function StateId(mainId, subId) {
+ this.mainId = mainId !== undefined ? mainId : -1;
+ this.subId = subId !== undefined ? subId : -1;
+ }
+ function StateTransition(undoRules, initialOps, editOpsPossible) {
+ var nextStateId, operations, editOpsCount;
+ this.addOperation = function(op) {
+ if (undoRules.isEditOperation(op)) {
+ editOpsCount += 1;
+ }
+ operations.push(op);
+ };
+ this.isNextStateId = function(stateId) {
+ return stateId.mainId === nextStateId && stateId.subId === editOpsCount;
+ };
+ this.getNextStateId = function() {
+ return new StateId(nextStateId, editOpsCount);
+ };
+ this.getOperations = function() {
+ return operations;
+ };
+ function addEditOpsCount(count, op) {
+ return count + (undoRules.isEditOperation(op) ? 1 : 0);
}
+ function init() {
+ stateIdBase += 1;
+ nextStateId = stateIdBase;
+ operations = initialOps || [];
+ editOpsCount = initialOps && editOpsPossible ? initialOps.reduce(addEditOpsCount, 0) : 0;
+ }
+ init();
}
- function emitStackChange() {
- eventNotifier.emit(gui.UndoManager.signalUndoStackChanged, {undoAvailable:self.hasUndoStates(), redoAvailable:self.hasRedoStates()})
+ gui.TrivialUndoManager = function TrivialUndoManager(defaultRules) {
+ var self = this, cursorns = "urn:webodf:names:cursor", domUtils = core.DomUtils, initialDoc, initialStateTransition, playFunc, document, unmodifiedStateId, currentUndoStateTransition, undoStateTransitions = [], redoStateTransitions = [], eventNotifier = new core.EventNotifier([gui.UndoManager.signalUndoStackChanged, gui.UndoManager.signalUndoStateCreated, gui.UndoManager.signalUndoStateModified, gui.UndoManager.signalDocumentModifiedChanged, gui.TrivialUndoManager.signalDocumentRootReplaced]),
+ undoRules = defaultRules || new gui.UndoStateRules, isExecutingOps = false;
+ function isModified() {
+ return currentUndoStateTransition.isNextStateId(unmodifiedStateId) !== true;
+ }
+ function executeOperations(stateTransition) {
+ var operations = stateTransition.getOperations();
+ if (operations.length > 0) {
+ isExecutingOps = true;
+ playFunc(operations);
+ isExecutingOps = false;
+ }
+ }
+ function emitStackChange() {
+ eventNotifier.emit(gui.UndoManager.signalUndoStackChanged, {undoAvailable:self.hasUndoStates(), redoAvailable:self.hasRedoStates()});
+ }
+ function emitDocumentModifiedChange(oldModified) {
+ var newModified = isModified();
+ if (oldModified !== newModified) {
+ eventNotifier.emit(gui.UndoManager.signalDocumentModifiedChanged, newModified);
+ }
+ }
+ function mostRecentUndoStateTransition() {
+ return undoStateTransitions[undoStateTransitions.length - 1];
+ }
+ function completeCurrentUndoState() {
+ if (currentUndoStateTransition !== initialStateTransition && currentUndoStateTransition !== mostRecentUndoStateTransition()) {
+ undoStateTransitions.push(currentUndoStateTransition);
+ }
+ }
+ function removeNode(node) {
+ var sibling = node.previousSibling || node.nextSibling;
+ node.parentNode.removeChild(node);
+ domUtils.normalizeTextNodes(sibling);
+ }
+ function removeCursors(root) {
+ domUtils.getElementsByTagNameNS(root, cursorns, "cursor").forEach(removeNode);
+ domUtils.getElementsByTagNameNS(root, cursorns, "anchor").forEach(removeNode);
+ }
+ function values(obj) {
+ return Object.keys(obj).map(function(key) {
+ return obj[key];
+ });
+ }
+ function extractCursorStates(undoStateTransitions) {
+ var addCursor = {}, moveCursor = {}, requiredAddOps = {}, remainingAddOps, ops, stateTransition = undoStateTransitions.pop();
+ document.getMemberIds().forEach(function(memberid) {
+ requiredAddOps[memberid] = true;
+ });
+ remainingAddOps = Object.keys(requiredAddOps).length;
+ function processOp(op) {
+ var spec = op.spec();
+ if (!requiredAddOps[spec.memberid]) {
+ return;
+ }
+ switch(spec.optype) {
+ case "AddCursor":
+ if (!addCursor[spec.memberid]) {
+ addCursor[spec.memberid] = op;
+ delete requiredAddOps[spec.memberid];
+ remainingAddOps -= 1;
+ }
+ break;
+ case "MoveCursor":
+ if (!moveCursor[spec.memberid]) {
+ moveCursor[spec.memberid] = op;
+ }
+ break;
+ }
+ }
+ while (stateTransition && remainingAddOps > 0) {
+ ops = stateTransition.getOperations();
+ ops.reverse();
+ ops.forEach(processOp);
+ stateTransition = undoStateTransitions.pop();
+ }
+ return new StateTransition(undoRules, values(addCursor).concat(values(moveCursor)));
+ }
+ this.subscribe = function(signal, callback) {
+ eventNotifier.subscribe(signal, callback);
+ };
+ this.unsubscribe = function(signal, callback) {
+ eventNotifier.unsubscribe(signal, callback);
+ };
+ this.isDocumentModified = isModified;
+ this.setDocumentModified = function(modified) {
+ if (isModified() === modified) {
+ return;
+ }
+ if (modified) {
+ unmodifiedStateId = new StateId;
+ } else {
+ unmodifiedStateId = currentUndoStateTransition.getNextStateId();
+ }
+ eventNotifier.emit(gui.UndoManager.signalDocumentModifiedChanged, modified);
+ };
+ this.hasUndoStates = function() {
+ return undoStateTransitions.length > 0;
+ };
+ this.hasRedoStates = function() {
+ return redoStateTransitions.length > 0;
+ };
+ this.setDocument = function(newDocument) {
+ document = newDocument;
+ };
+ this.purgeInitialState = function() {
+ var oldModified = isModified();
+ undoStateTransitions.length = 0;
+ redoStateTransitions.length = 0;
+ currentUndoStateTransition = initialStateTransition = new StateTransition(undoRules);
+ unmodifiedStateId = currentUndoStateTransition.getNextStateId();
+ initialDoc = null;
+ emitStackChange();
+ emitDocumentModifiedChange(oldModified);
+ };
+ function setInitialState() {
+ var oldModified = isModified();
+ initialDoc = document.cloneDocumentElement();
+ removeCursors(initialDoc);
+ completeCurrentUndoState();
+ currentUndoStateTransition = initialStateTransition = extractCursorStates([initialStateTransition].concat(undoStateTransitions));
+ undoStateTransitions.length = 0;
+ redoStateTransitions.length = 0;
+ if (!oldModified) {
+ unmodifiedStateId = currentUndoStateTransition.getNextStateId();
+ }
+ emitStackChange();
+ emitDocumentModifiedChange(oldModified);
+ }
+ this.setInitialState = setInitialState;
+ this.initialize = function() {
+ if (!initialDoc) {
+ setInitialState();
+ }
+ };
+ this.setPlaybackFunction = function(playback_func) {
+ playFunc = playback_func;
+ };
+ this.onOperationExecuted = function(op) {
+ if (isExecutingOps) {
+ return;
+ }
+ var oldModified = isModified();
+ if (undoRules.isEditOperation(op) && (currentUndoStateTransition === initialStateTransition || redoStateTransitions.length > 0) || !undoRules.isPartOfOperationSet(op, currentUndoStateTransition.getOperations())) {
+ redoStateTransitions.length = 0;
+ completeCurrentUndoState();
+ currentUndoStateTransition = new StateTransition(undoRules, [op], true);
+ undoStateTransitions.push(currentUndoStateTransition);
+ eventNotifier.emit(gui.UndoManager.signalUndoStateCreated, {operations:currentUndoStateTransition.getOperations()});
+ emitStackChange();
+ } else {
+ currentUndoStateTransition.addOperation(op);
+ eventNotifier.emit(gui.UndoManager.signalUndoStateModified, {operations:currentUndoStateTransition.getOperations()});
+ }
+ emitDocumentModifiedChange(oldModified);
+ };
+ this.moveForward = function(states) {
+ var moved = 0, oldModified = isModified(), redoOperations;
+ while (states && redoStateTransitions.length) {
+ redoOperations = redoStateTransitions.pop();
+ undoStateTransitions.push(redoOperations);
+ executeOperations(redoOperations);
+ states -= 1;
+ moved += 1;
+ }
+ if (moved) {
+ currentUndoStateTransition = mostRecentUndoStateTransition();
+ emitStackChange();
+ emitDocumentModifiedChange(oldModified);
+ }
+ return moved;
+ };
+ this.moveBackward = function(states) {
+ var moved = 0, oldModified = isModified();
+ while (states && undoStateTransitions.length) {
+ redoStateTransitions.push(undoStateTransitions.pop());
+ states -= 1;
+ moved += 1;
+ }
+ if (moved) {
+ document.getMemberIds().forEach(function(memberid) {
+ document.removeCursor(memberid);
+ });
+ document.setDocumentElement((initialDoc.cloneNode(true)));
+ eventNotifier.emit(gui.TrivialUndoManager.signalDocumentRootReplaced, {});
+ executeOperations(initialStateTransition);
+ undoStateTransitions.forEach(executeOperations);
+ currentUndoStateTransition = mostRecentUndoStateTransition() || initialStateTransition;
+ emitStackChange();
+ emitDocumentModifiedChange(oldModified);
+ }
+ return moved;
+ };
+ function init() {
+ currentUndoStateTransition = initialStateTransition = new StateTransition(undoRules);
+ unmodifiedStateId = currentUndoStateTransition.getNextStateId();
+ }
+ init();
+ };
+ gui.TrivialUndoManager.signalDocumentRootReplaced = "documentRootReplaced";
+})();
+odf.GraphicProperties = function(element, styleParseUtils, parent) {
+ var self = this, stylens = odf.Namespaces.stylens, svgns = odf.Namespaces.svgns, getter;
+ getter = {verticalPos:function() {
+ var v = element.getAttributeNS(stylens, "vertical-pos");
+ return v === "" ? undefined : v;
+ }, verticalRel:function() {
+ var v = element.getAttributeNS(stylens, "vertical-rel");
+ return v === "" ? undefined : v;
+ }, horizontalPos:function() {
+ var v = element.getAttributeNS(stylens, "horizontal-pos");
+ return v === "" ? undefined : v;
+ }, horizontalRel:function() {
+ var v = element.getAttributeNS(stylens, "horizontal-rel");
+ return v === "" ? undefined : v;
+ }, strokeWidth:function() {
+ var a = element.getAttributeNS(svgns, "stroke-width");
+ return styleParseUtils.parseLength(a);
+ }};
+ this.verticalPos = function() {
+ return (self.data.value("verticalPos"));
+ };
+ this.verticalRel = function() {
+ return (self.data.value("verticalRel"));
+ };
+ this.horizontalPos = function() {
+ return (self.data.value("horizontalPos"));
+ };
+ this.horizontalRel = function() {
+ return (self.data.value("horizontalRel"));
+ };
+ this.strokeWidth = function() {
+ return (self.data.value("strokeWidth"));
+ };
+ this.data;
+ function init() {
+ var p = parent === undefined ? undefined : parent.data;
+ self.data = new odf.LazyStyleProperties(p, getter);
}
- function mostRecentUndoState() {
- return undoStates[undoStates.length - 1]
+ init();
+};
+odf.ComputedGraphicProperties = function() {
+ var g;
+ this.setGraphicProperties = function(graphicProperties) {
+ g = graphicProperties;
+ };
+ this.verticalPos = function() {
+ return g && g.verticalPos() || "from-top";
+ };
+ this.verticalRel = function() {
+ return g && g.verticalRel() || "page";
+ };
+ this.horizontalPos = function() {
+ return g && g.horizontalPos() || "from-left";
+ };
+ this.horizontalRel = function() {
+ return g && g.horizontalRel() || "page";
+ };
+};
+odf.PageLayoutProperties = function(element, styleParseUtils, parent) {
+ var self = this, fons = odf.Namespaces.fons, getter;
+ getter = {pageHeight:function() {
+ var a, value;
+ if (element) {
+ a = element.getAttributeNS(fons, "page-height");
+ value = styleParseUtils.parseLength(a);
+ }
+ return value;
+ }, pageWidth:function() {
+ var a, value;
+ if (element) {
+ a = element.getAttributeNS(fons, "page-width");
+ value = styleParseUtils.parseLength(a);
+ }
+ return value;
+ }};
+ this.pageHeight = function() {
+ return (self.data.value("pageHeight")) || 1123;
+ };
+ this.pageWidth = function() {
+ return (self.data.value("pageWidth")) || 794;
+ };
+ this.data;
+ function init() {
+ var p = parent === undefined ? undefined : parent.data;
+ self.data = new odf.LazyStyleProperties(p, getter);
}
- function completeCurrentUndoState() {
- if(currentUndoState !== initialState && currentUndoState !== mostRecentUndoState()) {
- undoStates.push(currentUndoState)
+ init();
+};
+odf.PageLayout = function(element, styleParseUtils, parent) {
+ var self = this;
+ this.pageLayout;
+ function init() {
+ var e = null;
+ if (element) {
+ e = styleParseUtils.getPropertiesElement("page-layout-properties", element);
}
+ self.pageLayout = new odf.PageLayoutProperties(e, styleParseUtils, parent && parent.pageLayout);
}
- function removeNode(node) {
- var sibling = node.previousSibling || node.nextSibling;
- node.parentNode.removeChild(node);
- domUtils.normalizeTextNodes(sibling)
- }
- function removeCursors(root) {
- domUtils.getElementsByTagNameNS(root, cursorns, "cursor").forEach(removeNode);
- domUtils.getElementsByTagNameNS(root, cursorns, "anchor").forEach(removeNode)
- }
- function values(obj) {
- return Object.keys(obj).map(function(key) {
- return obj[key]
- })
- }
- function extractCursorStates(undoStates) {
- var addCursor = {}, moveCursor = {}, requiredAddOps = {}, remainingAddOps, operations = undoStates.pop();
- document.getMemberIds().forEach(function(memberid) {
- requiredAddOps[memberid] = true
- });
- remainingAddOps = Object.keys(requiredAddOps).length;
- function processOp(op) {
- var spec = op.spec();
- if(!requiredAddOps[spec.memberid]) {
- return
- }
- switch(spec.optype) {
- case "AddCursor":
- if(!addCursor[spec.memberid]) {
- addCursor[spec.memberid] = op;
- delete requiredAddOps[spec.memberid];
- remainingAddOps -= 1
- }
- break;
- case "MoveCursor":
- if(!moveCursor[spec.memberid]) {
- moveCursor[spec.memberid] = op
- }
- break
+ init();
+};
+odf.PageLayoutCache = function() {
+};
+odf.PageLayoutCache.prototype.getPageLayout = function(name) {
+};
+odf.PageLayoutCache.prototype.getDefaultPageLayout = function() {
+};
+odf.ParagraphProperties = function(element, styleParseUtils, parent) {
+ var self = this, fons = odf.Namespaces.fons, getter;
+ getter = {marginTop:function() {
+ var a = element.getAttributeNS(fons, "margin-top"), value = styleParseUtils.parsePositiveLengthOrPercent(a, "marginTop", parent && parent.data);
+ return value;
+ }};
+ this.marginTop = function() {
+ return (self.data.value("marginTop"));
+ };
+ this.data;
+ function init() {
+ var p = parent === undefined ? undefined : parent.data;
+ self.data = new odf.LazyStyleProperties(p, getter);
+ }
+ init();
+};
+odf.ComputedParagraphProperties = function() {
+ var data = {}, styleChain = [];
+ function value(name) {
+ var v, i;
+ if (data.hasOwnProperty(name)) {
+ v = data[name];
+ } else {
+ for (i = 0;v === undefined && i < styleChain.length;i += 1) {
+ v = (styleChain[i][name])();
}
+ data[name] = v;
}
- while(operations && remainingAddOps > 0) {
- operations.reverse();
- operations.forEach(processOp);
- operations = undoStates.pop()
- }
- return values(addCursor).concat(values(moveCursor))
+ return v;
}
- this.subscribe = function(signal, callback) {
- eventNotifier.subscribe(signal, callback)
+ this.setStyleChain = function setStyleChain(newStyleChain) {
+ styleChain = newStyleChain;
+ data = {};
+ };
+ this.marginTop = function() {
+ return (value("marginTop")) || 0;
};
- this.unsubscribe = function(signal, callback) {
- eventNotifier.unsubscribe(signal, callback)
+};
+odf.TextProperties = function(element, styleParseUtils, parent) {
+ var self = this, fons = odf.Namespaces.fons, getter;
+ getter = {fontSize:function() {
+ var a = element.getAttributeNS(fons, "font-size"), value = styleParseUtils.parsePositiveLengthOrPercent(a, "fontSize", parent && parent.data);
+ return value;
+ }};
+ this.fontSize = function() {
+ return (self.data.value("fontSize"));
};
- this.hasUndoStates = function() {
- return undoStates.length > 0
+ this.data;
+ function init() {
+ var p = parent === undefined ? undefined : parent.data;
+ self.data = new odf.LazyStyleProperties(p, getter);
+ }
+ init();
+};
+odf.ComputedTextProperties = function() {
+ var data = {}, styleChain = [];
+ function value(name) {
+ var v, i;
+ if (data.hasOwnProperty(name)) {
+ v = data[name];
+ } else {
+ for (i = 0;v === undefined && i < styleChain.length;i += 1) {
+ v = (styleChain[i][name])();
+ }
+ data[name] = v;
+ }
+ return v;
+ }
+ this.setStyleChain = function setStyleChain(newStyleChain) {
+ styleChain = newStyleChain;
+ data = {};
};
- this.hasRedoStates = function() {
- return redoStates.length > 0
+ this.fontSize = function() {
+ return (value("fontSize")) || 12;
};
- this.setDocument = function(newDocument) {
- document = newDocument
+};
+odf.MasterPage = function(element, pageLayoutCache) {
+ var self = this;
+ this.pageLayout;
+ function init() {
+ var pageLayoutName;
+ if (element) {
+ pageLayoutName = element.getAttributeNS(odf.Namespaces.stylens, "page-layout-name");
+ self.pageLayout = pageLayoutCache.getPageLayout(pageLayoutName);
+ } else {
+ self.pageLayout = pageLayoutCache.getDefaultPageLayout();
+ }
+ }
+ init();
+};
+odf.MasterPageCache = function() {
+};
+odf.MasterPageCache.prototype.getMasterPage = function(name) {
+};
+odf.StylePileEntry = function(element, styleParseUtils, masterPageCache, parent) {
+ this.text;
+ this.paragraph;
+ this.graphic;
+ this.masterPage = function() {
+ var masterPageName = element.getAttributeNS(odf.Namespaces.stylens, "master-page-name"), masterPage = null;
+ if (masterPageName) {
+ masterPage = masterPageCache.getMasterPage(masterPageName);
+ }
+ return masterPage;
};
- this.purgeInitialState = function() {
- undoStates.length = 0;
- redoStates.length = 0;
- initialState.length = 0;
- currentUndoState.length = 0;
- initialDoc = null;
- emitStackChange()
+ function init(self) {
+ var stylens = odf.Namespaces.stylens, family = element.getAttributeNS(stylens, "family"), e = null;
+ if (family === "graphic" || family === "chart") {
+ self.graphic = parent === undefined ? undefined : parent.graphic;
+ e = styleParseUtils.getPropertiesElement("graphic-properties", element, e);
+ if (e !== null) {
+ self.graphic = new odf.GraphicProperties(e, styleParseUtils, self.graphic);
+ }
+ }
+ if (family === "paragraph" || family === "table-cell" || family === "graphic" || family === "presentation" || family === "chart") {
+ self.paragraph = parent === undefined ? undefined : parent.paragraph;
+ e = styleParseUtils.getPropertiesElement("paragraph-properties", element, e);
+ if (e !== null) {
+ self.paragraph = new odf.ParagraphProperties(e, styleParseUtils, self.paragraph);
+ }
+ }
+ if (family === "text" || family === "paragraph" || family === "table-cell" || family === "graphic" || family === "presentation" || family === "chart") {
+ self.text = parent === undefined ? undefined : parent.text;
+ e = styleParseUtils.getPropertiesElement("text-properties", element, e);
+ if (e !== null) {
+ self.text = new odf.TextProperties(e, styleParseUtils, self.text);
+ }
+ }
+ }
+ init(this);
+};
+odf.StylePile = function(styleParseUtils, masterPageCache) {
+ var stylens = odf.Namespaces.stylens, commonStyles = {}, automaticStyles = {}, defaultStyle, parsedCommonStyles = {}, parsedAutomaticStyles = {}, getCommonStyle;
+ function parseStyle(element, visitedStyles) {
+ var parent, parentName, style;
+ if (element.hasAttributeNS(stylens, "parent-style-name")) {
+ parentName = element.getAttributeNS(stylens, "parent-style-name");
+ if (visitedStyles.indexOf(parentName) === -1) {
+ parent = getCommonStyle(parentName, visitedStyles);
+ }
+ }
+ style = new odf.StylePileEntry(element, styleParseUtils, masterPageCache, parent);
+ return style;
+ }
+ getCommonStyle = function(styleName, visitedStyles) {
+ var style = parsedCommonStyles[styleName], element;
+ if (!style) {
+ element = commonStyles[styleName];
+ if (element) {
+ visitedStyles.push(styleName);
+ style = parseStyle(element, visitedStyles);
+ parsedCommonStyles[styleName] = style;
+ }
+ }
+ return style;
};
- function setInitialState() {
- initialDoc = document.cloneDocumentElement();
- removeCursors(initialDoc);
- completeCurrentUndoState();
- currentUndoState = initialState = extractCursorStates([initialState].concat(undoStates));
- undoStates.length = 0;
- redoStates.length = 0;
- emitStackChange()
+ function getStyle(styleName) {
+ var style = parsedAutomaticStyles[styleName] || parsedCommonStyles[styleName], element, visitedStyles = [];
+ if (!style) {
+ element = automaticStyles[styleName];
+ if (!element) {
+ element = commonStyles[styleName];
+ if (element) {
+ visitedStyles.push(styleName);
+ }
+ }
+ if (element) {
+ style = parseStyle(element, visitedStyles);
+ }
+ }
+ return style;
}
- this.setInitialState = setInitialState;
- this.initialize = function() {
- if(!initialDoc) {
- setInitialState()
+ this.getStyle = getStyle;
+ this.addCommonStyle = function(style) {
+ var name;
+ if (style.hasAttributeNS(stylens, "name")) {
+ name = style.getAttributeNS(stylens, "name");
+ if (!commonStyles.hasOwnProperty(name)) {
+ commonStyles[name] = style;
+ }
}
};
- this.setPlaybackFunction = function(playback_func) {
- playFunc = playback_func
+ this.addAutomaticStyle = function(style) {
+ var name;
+ if (style.hasAttributeNS(stylens, "name")) {
+ name = style.getAttributeNS(stylens, "name");
+ if (!automaticStyles.hasOwnProperty(name)) {
+ automaticStyles[name] = style;
+ }
+ }
};
- this.onOperationExecuted = function(op) {
- if(isExecutingOps) {
- return
+ this.setDefaultStyle = function(style) {
+ if (defaultStyle === undefined) {
+ defaultStyle = parseStyle(style, []);
}
- if(undoRules.isEditOperation(op) && (currentUndoState === initialState || redoStates.length > 0) || !undoRules.isPartOfOperationSet(op, currentUndoState)) {
- redoStates.length = 0;
- completeCurrentUndoState();
- currentUndoState = [op];
- undoStates.push(currentUndoState);
- eventNotifier.emit(gui.UndoManager.signalUndoStateCreated, {operations:currentUndoState});
- emitStackChange()
- }else {
- currentUndoState.push(op);
- eventNotifier.emit(gui.UndoManager.signalUndoStateModified, {operations:currentUndoState})
- }
- };
- this.moveForward = function(states) {
- var moved = 0, redoOperations;
- while(states && redoStates.length) {
- redoOperations = redoStates.pop();
- undoStates.push(redoOperations);
- executeOperations(redoOperations);
- states -= 1;
- moved += 1
- }
- if(moved) {
- currentUndoState = mostRecentUndoState();
- emitStackChange()
- }
- return moved
- };
- this.moveBackward = function(states) {
- var moved = 0;
- while(states && undoStates.length) {
- redoStates.push(undoStates.pop());
- states -= 1;
- moved += 1
- }
- if(moved) {
- document.setDocumentElement((initialDoc.cloneNode(true)));
- eventNotifier.emit(gui.TrivialUndoManager.signalDocumentRootReplaced, {});
- document.getMemberIds().forEach(function(memberid) {
- document.removeCursor(memberid)
- });
- executeOperations(initialState);
- undoStates.forEach(executeOperations);
- currentUndoState = mostRecentUndoState() || initialState;
- emitStackChange()
+ };
+ this.getDefaultStyle = function() {
+ return defaultStyle;
+ };
+};
+odf.ComputedGraphicStyle = function() {
+ this.text = new odf.ComputedTextProperties;
+ this.paragraph = new odf.ComputedParagraphProperties;
+ this.graphic = new odf.ComputedGraphicProperties;
+};
+odf.ComputedParagraphStyle = function() {
+ this.text = new odf.ComputedTextProperties;
+ this.paragraph = new odf.ComputedParagraphProperties;
+};
+odf.ComputedTextStyle = function() {
+ this.text = new odf.ComputedTextProperties;
+};
+odf.StyleCache = function(odfroot) {
+ var self = this, stylePiles, textStyleCache, paragraphStyleCache, graphicStyleCache, textStylePile, paragraphStylePile, graphicStylePile, textns = odf.Namespaces.textns, stylens = odf.Namespaces.stylens, styleInfo = new odf.StyleInfo, styleParseUtils = new odf.StyleParseUtils, masterPages, parsedMasterPages, defaultMasterPage, defaultPageLayout, pageLayouts, parsedPageLayouts;
+ function appendClassNames(family, ns, element, chain) {
+ var names = element.getAttributeNS(ns, "class-names"), stylename, i;
+ if (names) {
+ names = names.split(" ");
+ for (i = 0;i < names.length;i += 1) {
+ stylename = names[i];
+ if (stylename) {
+ chain.push(family);
+ chain.push(stylename);
+ }
+ }
+ }
+ }
+ function getGraphicStyleChain(element, chain) {
+ var stylename = styleInfo.getStyleName("graphic", element);
+ if (stylename !== undefined) {
+ chain.push("graphic");
+ chain.push(stylename);
+ }
+ return chain;
+ }
+ function getParagraphStyleChain(element, chain) {
+ var stylename = styleInfo.getStyleName("paragraph", element);
+ if (stylename !== undefined) {
+ chain.push("paragraph");
+ chain.push(stylename);
+ }
+ if (element.namespaceURI === textns && (element.localName === "h" || element.localName === "p")) {
+ appendClassNames("paragraph", textns, element, chain);
+ }
+ return chain;
+ }
+ function createPropertiesChain(styleChain, propertiesName, defaultFamily) {
+ var chain = [], i, lastProperties, family, styleName, pile, style, properties;
+ for (i = 0;i < styleChain.length;i += 2) {
+ family = styleChain[i];
+ styleName = styleChain[i + 1];
+ pile = (stylePiles[family]);
+ style = pile.getStyle(styleName);
+ if (style !== undefined) {
+ properties = (style[propertiesName]);
+ if (properties !== undefined && properties !== lastProperties) {
+ chain.push(properties);
+ lastProperties = properties;
+ }
+ }
+ }
+ pile = (stylePiles[defaultFamily]);
+ style = pile.getDefaultStyle();
+ if (style) {
+ properties = (style[propertiesName]);
+ if (properties !== undefined && properties !== lastProperties) {
+ chain.push(properties);
+ }
+ }
+ return chain;
+ }
+ this.getComputedGraphicStyle = function(element) {
+ var styleChain = getGraphicStyleChain(element, []), key = styleChain.join("/"), computedStyle = graphicStyleCache[key];
+ runtime.assert(styleChain.length % 2 === 0, "Invalid style chain.");
+ if (computedStyle === undefined) {
+ computedStyle = new odf.ComputedGraphicStyle;
+ computedStyle.graphic.setGraphicProperties((createPropertiesChain(styleChain, "graphic", "graphic")[0]));
+ computedStyle.text.setStyleChain((createPropertiesChain(styleChain, "text", "graphic")));
+ computedStyle.paragraph.setStyleChain((createPropertiesChain(styleChain, "paragraph", "graphic")));
+ graphicStyleCache[key] = computedStyle;
+ }
+ return computedStyle;
+ };
+ this.getComputedParagraphStyle = function(element) {
+ var styleChain = getParagraphStyleChain(element, []), key = styleChain.join("/"), computedStyle = paragraphStyleCache[key];
+ runtime.assert(styleChain.length % 2 === 0, "Invalid style chain.");
+ if (computedStyle === undefined) {
+ computedStyle = new odf.ComputedParagraphStyle;
+ computedStyle.text.setStyleChain((createPropertiesChain(styleChain, "text", "paragraph")));
+ computedStyle.paragraph.setStyleChain((createPropertiesChain(styleChain, "paragraph", "paragraph")));
+ paragraphStyleCache[key] = computedStyle;
+ }
+ return computedStyle;
+ };
+ function getTextStyleChain(element, chain) {
+ var stylename = styleInfo.getStyleName("text", element), parent = (element.parentNode);
+ if (stylename !== undefined) {
+ chain.push("text");
+ chain.push(stylename);
+ }
+ if (element.localName === "span" && element.namespaceURI === textns) {
+ appendClassNames("text", textns, element, chain);
+ }
+ if (!parent || parent === odfroot) {
+ return chain;
+ }
+ if (parent.namespaceURI === textns && (parent.localName === "p" || parent.localName === "h")) {
+ getParagraphStyleChain(parent, chain);
+ } else {
+ getTextStyleChain(parent, chain);
+ }
+ return chain;
+ }
+ this.getComputedTextStyle = function(element) {
+ var styleChain = getTextStyleChain(element, []), key = styleChain.join("/"), computedStyle = textStyleCache[key];
+ runtime.assert(styleChain.length % 2 === 0, "Invalid style chain.");
+ if (computedStyle === undefined) {
+ computedStyle = new odf.ComputedTextStyle;
+ computedStyle.text.setStyleChain((createPropertiesChain(styleChain, "text", "text")));
+ textStyleCache[key] = computedStyle;
+ }
+ return computedStyle;
+ };
+ function getPileFromElement(element) {
+ var family = element.getAttributeNS(stylens, "family");
+ return stylePiles[family];
+ }
+ function addMasterPage(element) {
+ var name = element.getAttributeNS(stylens, "name");
+ if (name.length > 0 && !masterPages.hasOwnProperty(name)) {
+ masterPages[name] = element;
+ }
+ }
+ function getPageLayout(name) {
+ var pageLayout = parsedPageLayouts[name], e;
+ if (!pageLayout) {
+ e = pageLayouts[name];
+ if (e) {
+ pageLayout = new odf.PageLayout(e, styleParseUtils, defaultPageLayout);
+ parsedPageLayouts[name] = pageLayout;
+ } else {
+ pageLayout = defaultPageLayout;
+ }
+ }
+ return pageLayout;
+ }
+ this.getPageLayout = getPageLayout;
+ this.getDefaultPageLayout = function() {
+ return defaultPageLayout;
+ };
+ function getMasterPage(name) {
+ var masterPage = parsedMasterPages[name], element;
+ if (masterPage === undefined) {
+ element = masterPages[name];
+ if (element) {
+ masterPage = new odf.MasterPage(element, self);
+ parsedMasterPages[name] = masterPage;
+ } else {
+ masterPage = null;
+ }
+ }
+ return masterPage;
+ }
+ this.getMasterPage = getMasterPage;
+ this.getDefaultMasterPage = function() {
+ return defaultMasterPage;
+ };
+ function update() {
+ var e, pile, defaultPageLayoutElement = null, defaultMasterPageElement = null;
+ textStyleCache = {};
+ paragraphStyleCache = {};
+ graphicStyleCache = {};
+ masterPages = {};
+ parsedMasterPages = {};
+ parsedPageLayouts = {};
+ pageLayouts = {};
+ textStylePile = new odf.StylePile(styleParseUtils, self);
+ paragraphStylePile = new odf.StylePile(styleParseUtils, self);
+ graphicStylePile = new odf.StylePile(styleParseUtils, self);
+ stylePiles = {text:textStylePile, paragraph:paragraphStylePile, graphic:graphicStylePile};
+ e = odfroot.styles.firstElementChild;
+ while (e) {
+ if (e.namespaceURI === stylens) {
+ pile = getPileFromElement(e);
+ if (pile) {
+ if (e.localName === "style") {
+ pile.addCommonStyle(e);
+ } else {
+ if (e.localName === "default-style") {
+ pile.setDefaultStyle(e);
+ }
+ }
+ } else {
+ if (e.localName === "default-page-layout") {
+ defaultPageLayoutElement = e;
+ }
+ }
+ }
+ e = e.nextElementSibling;
+ }
+ defaultPageLayout = new odf.PageLayout(defaultPageLayoutElement, styleParseUtils);
+ e = odfroot.automaticStyles.firstElementChild;
+ while (e) {
+ if (e.namespaceURI === stylens) {
+ pile = getPileFromElement(e);
+ if (pile && e.localName === "style") {
+ pile.addAutomaticStyle(e);
+ } else {
+ if (e.localName === "page-layout") {
+ pageLayouts[e.getAttributeNS(stylens, "name")] = e;
+ }
+ }
+ }
+ e = e.nextElementSibling;
}
- return moved
+ e = odfroot.masterStyles.firstElementChild;
+ while (e) {
+ if (e.namespaceURI === stylens && e.localName === "master-page") {
+ defaultMasterPageElement = defaultMasterPageElement || e;
+ addMasterPage(e);
+ }
+ e = e.nextElementSibling;
+ }
+ defaultMasterPage = new odf.MasterPage(defaultMasterPageElement, self);
}
+ this.update = update;
};
-gui.TrivialUndoManager.signalDocumentRootReplaced = "documentRootReplaced";
-(function() {
- return gui.TrivialUndoManager
-})();
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- This file is part of WebODF.
-
- WebODF is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License (GNU AGPL)
- as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- WebODF is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with WebODF. If not, see <http://www.gnu.org/licenses/>.
- @licend
-
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.OperationTransformMatrix = function OperationTransformMatrix() {
function invertMoveCursorSpecRange(moveCursorSpec) {
moveCursorSpec.position = moveCursorSpec.position + moveCursorSpec.length;
- moveCursorSpec.length *= -1
+ moveCursorSpec.length *= -1;
}
function invertMoveCursorSpecRangeOnNegativeLength(moveCursorSpec) {
var isBackwards = moveCursorSpec.length < 0;
- if(isBackwards) {
- invertMoveCursorSpecRange(moveCursorSpec)
+ if (isBackwards) {
+ invertMoveCursorSpecRange(moveCursorSpec);
}
- return isBackwards
+ return isBackwards;
}
function getStyleReferencingAttributes(setProperties, styleName) {
var attributes = [];
function check(attributeName) {
- if(setProperties[attributeName] === styleName) {
- attributes.push(attributeName)
+ if (setProperties[attributeName] === styleName) {
+ attributes.push(attributeName);
}
}
- if(setProperties) {
- ["style:parent-style-name", "style:next-style-name"].forEach(check)
+ if (setProperties) {
+ ["style:parent-style-name", "style:next-style-name"].forEach(check);
}
- return attributes
+ return attributes;
}
function dropStyleReferencingAttributes(setProperties, deletedStyleName) {
function del(attributeName) {
- if(setProperties[attributeName] === deletedStyleName) {
- delete setProperties[attributeName]
+ if (setProperties[attributeName] === deletedStyleName) {
+ delete setProperties[attributeName];
}
}
- if(setProperties) {
- ["style:parent-style-name", "style:next-style-name"].forEach(del)
+ if (setProperties) {
+ ["style:parent-style-name", "style:next-style-name"].forEach(del);
}
}
function cloneOpspec(opspec) {
var result = {};
Object.keys(opspec).forEach(function(key) {
- if(typeof opspec[key] === "object") {
- result[key] = cloneOpspec(opspec[key])
- }else {
- result[key] = opspec[key]
+ if (typeof opspec[key] === "object") {
+ result[key] = cloneOpspec(opspec[key]);
+ } else {
+ result[key] = opspec[key];
}
});
- return result
+ return result;
}
function dropOverruledAndUnneededAttributes(minorSetProperties, minorRemovedProperties, majorSetProperties, majorRemovedProperties) {
var i, name, majorChanged = false, minorChanged = false, removedPropertyNames, majorRemovedPropertyNames = [];
- if(majorRemovedProperties && majorRemovedProperties.attributes) {
- majorRemovedPropertyNames = majorRemovedProperties.attributes.split(",")
+ if (majorRemovedProperties && majorRemovedProperties.attributes) {
+ majorRemovedPropertyNames = majorRemovedProperties.attributes.split(",");
}
- if(minorSetProperties && (majorSetProperties || majorRemovedPropertyNames.length > 0)) {
+ if (minorSetProperties && (majorSetProperties || majorRemovedPropertyNames.length > 0)) {
Object.keys(minorSetProperties).forEach(function(key) {
var value = minorSetProperties[key], overrulingPropertyValue;
- if(typeof value !== "object") {
- if(majorSetProperties) {
- overrulingPropertyValue = majorSetProperties[key]
+ if (typeof value !== "object") {
+ if (majorSetProperties) {
+ overrulingPropertyValue = majorSetProperties[key];
}
- if(overrulingPropertyValue !== undefined) {
+ if (overrulingPropertyValue !== undefined) {
delete minorSetProperties[key];
minorChanged = true;
- if(overrulingPropertyValue === value) {
+ if (overrulingPropertyValue === value) {
delete majorSetProperties[key];
- majorChanged = true
+ majorChanged = true;
}
- }else {
- if(majorRemovedPropertyNames.indexOf(key) !== -1) {
+ } else {
+ if (majorRemovedPropertyNames.indexOf(key) !== -1) {
delete minorSetProperties[key];
- minorChanged = true
+ minorChanged = true;
}
}
}
- })
+ });
}
- if(minorRemovedProperties && (minorRemovedProperties.attributes && (majorSetProperties || majorRemovedPropertyNames.length > 0))) {
+ if (minorRemovedProperties && minorRemovedProperties.attributes && (majorSetProperties || majorRemovedPropertyNames.length > 0)) {
removedPropertyNames = minorRemovedProperties.attributes.split(",");
- for(i = 0;i < removedPropertyNames.length;i += 1) {
+ for (i = 0;i < removedPropertyNames.length;i += 1) {
name = removedPropertyNames[i];
- if(majorSetProperties && majorSetProperties[name] !== undefined || majorRemovedPropertyNames && majorRemovedPropertyNames.indexOf(name) !== -1) {
+ if (majorSetProperties && majorSetProperties[name] !== undefined || majorRemovedPropertyNames && majorRemovedPropertyNames.indexOf(name) !== -1) {
removedPropertyNames.splice(i, 1);
i -= 1;
- minorChanged = true
+ minorChanged = true;
}
}
- if(removedPropertyNames.length > 0) {
- minorRemovedProperties.attributes = removedPropertyNames.join(",")
- }else {
- delete minorRemovedProperties.attributes
+ if (removedPropertyNames.length > 0) {
+ minorRemovedProperties.attributes = removedPropertyNames.join(",");
+ } else {
+ delete minorRemovedProperties.attributes;
}
}
- return{majorChanged:majorChanged, minorChanged:minorChanged}
+ return {majorChanged:majorChanged, minorChanged:minorChanged};
}
function hasProperties(properties) {
var key;
- for(key in properties) {
- if(properties.hasOwnProperty(key)) {
- return true
+ for (key in properties) {
+ if (properties.hasOwnProperty(key)) {
+ return true;
}
}
- return false
+ return false;
}
function hasRemovedProperties(properties) {
var key;
- for(key in properties) {
- if(properties.hasOwnProperty(key)) {
- if(key !== "attributes" || properties.attributes.length > 0) {
- return true
+ for (key in properties) {
+ if (properties.hasOwnProperty(key)) {
+ if (key !== "attributes" || properties.attributes.length > 0) {
+ return true;
}
}
}
- return false
+ return false;
}
function dropOverruledAndUnneededProperties(minorSet, minorRem, majorSet, majorRem, propertiesName) {
- var minorSP = minorSet ? minorSet[propertiesName] : null, minorRP = minorRem ? minorRem[propertiesName] : null, majorSP = majorSet ? majorSet[propertiesName] : null, majorRP = majorRem ? majorRem[propertiesName] : null, result;
+ var minorSP = (minorSet ? minorSet[propertiesName] : null), minorRP = minorRem ? minorRem[propertiesName] : null, majorSP = (majorSet ? majorSet[propertiesName] : null), majorRP = majorRem ? majorRem[propertiesName] : null, result;
result = dropOverruledAndUnneededAttributes(minorSP, minorRP, majorSP, majorRP);
- if(minorSP && !hasProperties(minorSP)) {
- delete minorSet[propertiesName]
+ if (minorSP && !hasProperties(minorSP)) {
+ delete minorSet[propertiesName];
+ }
+ if (minorRP && !hasRemovedProperties(minorRP)) {
+ delete minorRem[propertiesName];
+ }
+ if (majorSP && !hasProperties(majorSP)) {
+ delete majorSet[propertiesName];
+ }
+ if (majorRP && !hasRemovedProperties(majorRP)) {
+ delete majorRem[propertiesName];
+ }
+ return result;
+ }
+ function transformAddAnnotationAddAnnotation(addAnnotationSpecA, addAnnotationSpecB, hasAPriority) {
+ var firstAnnotationSpec, secondAnnotationSpec;
+ if (addAnnotationSpecA.position < addAnnotationSpecB.position) {
+ firstAnnotationSpec = addAnnotationSpecA;
+ secondAnnotationSpec = addAnnotationSpecB;
+ } else {
+ if (addAnnotationSpecB.position < addAnnotationSpecA.position) {
+ firstAnnotationSpec = addAnnotationSpecB;
+ secondAnnotationSpec = addAnnotationSpecA;
+ } else {
+ firstAnnotationSpec = hasAPriority ? addAnnotationSpecA : addAnnotationSpecB;
+ secondAnnotationSpec = hasAPriority ? addAnnotationSpecB : addAnnotationSpecA;
+ }
+ }
+ if (secondAnnotationSpec.position < firstAnnotationSpec.position + firstAnnotationSpec.length) {
+ firstAnnotationSpec.length += 2;
+ }
+ secondAnnotationSpec.position += 2;
+ return {opSpecsA:[addAnnotationSpecA], opSpecsB:[addAnnotationSpecB]};
+ }
+ function transformAddAnnotationApplyDirectStyling(addAnnotationSpec, applyDirectStylingSpec) {
+ if (addAnnotationSpec.position <= applyDirectStylingSpec.position) {
+ applyDirectStylingSpec.position += 2;
+ } else {
+ if (addAnnotationSpec.position <= applyDirectStylingSpec.position + applyDirectStylingSpec.length) {
+ applyDirectStylingSpec.length += 2;
+ }
+ }
+ return {opSpecsA:[addAnnotationSpec], opSpecsB:[applyDirectStylingSpec]};
+ }
+ function transformAddAnnotationInsertText(addAnnotationSpec, insertTextSpec) {
+ if (insertTextSpec.position <= addAnnotationSpec.position) {
+ addAnnotationSpec.position += insertTextSpec.text.length;
+ } else {
+ if (addAnnotationSpec.length !== undefined) {
+ if (insertTextSpec.position <= addAnnotationSpec.position + addAnnotationSpec.length) {
+ addAnnotationSpec.length += insertTextSpec.text.length;
+ }
+ }
+ insertTextSpec.position += 2;
+ }
+ return {opSpecsA:[addAnnotationSpec], opSpecsB:[insertTextSpec]};
+ }
+ function transformAddAnnotationMergeParagraph(addAnnotationSpec, mergeParagraphSpec) {
+ if (mergeParagraphSpec.sourceStartPosition <= addAnnotationSpec.position) {
+ addAnnotationSpec.position -= 1;
+ } else {
+ if (addAnnotationSpec.length !== undefined) {
+ if (mergeParagraphSpec.sourceStartPosition <= addAnnotationSpec.position + addAnnotationSpec.length) {
+ addAnnotationSpec.length -= 1;
+ }
+ }
+ mergeParagraphSpec.sourceStartPosition += 2;
+ if (addAnnotationSpec.position < mergeParagraphSpec.destinationStartPosition) {
+ mergeParagraphSpec.destinationStartPosition += 2;
+ }
+ }
+ return {opSpecsA:[addAnnotationSpec], opSpecsB:[mergeParagraphSpec]};
+ }
+ function transformAddAnnotationMoveCursor(addAnnotationSpec, moveCursorSpec) {
+ var isMoveCursorSpecRangeInverted = invertMoveCursorSpecRangeOnNegativeLength(moveCursorSpec);
+ if (addAnnotationSpec.position < moveCursorSpec.position) {
+ moveCursorSpec.position += 2;
+ } else {
+ if (addAnnotationSpec.position < moveCursorSpec.position + moveCursorSpec.length) {
+ moveCursorSpec.length += 2;
+ }
+ }
+ if (isMoveCursorSpecRangeInverted) {
+ invertMoveCursorSpecRange(moveCursorSpec);
}
- if(minorRP && !hasRemovedProperties(minorRP)) {
- delete minorRem[propertiesName]
+ return {opSpecsA:[addAnnotationSpec], opSpecsB:[moveCursorSpec]};
+ }
+ function transformAddAnnotationRemoveAnnotation(addAnnotationSpec, removeAnnotationSpec) {
+ if (addAnnotationSpec.position < removeAnnotationSpec.position) {
+ if (removeAnnotationSpec.position < addAnnotationSpec.position + addAnnotationSpec.length) {
+ addAnnotationSpec.length -= removeAnnotationSpec.length + 2;
+ }
+ removeAnnotationSpec.position += 2;
+ } else {
+ addAnnotationSpec.position -= removeAnnotationSpec.length + 2;
+ }
+ return {opSpecsA:[addAnnotationSpec], opSpecsB:[removeAnnotationSpec]};
+ }
+ function transformAddAnnotationRemoveText(addAnnotationSpec, removeTextSpec) {
+ var removeTextSpecPosition = removeTextSpec.position, removeTextSpecEnd = removeTextSpec.position + removeTextSpec.length, annotationSpecEnd, helperOpspec, addAnnotationSpecResult = [addAnnotationSpec], removeTextSpecResult = [removeTextSpec];
+ if (addAnnotationSpec.position <= removeTextSpec.position) {
+ removeTextSpec.position += 2;
+ } else {
+ if (addAnnotationSpec.position < removeTextSpecEnd) {
+ removeTextSpec.length = addAnnotationSpec.position - removeTextSpec.position;
+ helperOpspec = {optype:"RemoveText", memberid:removeTextSpec.memberid, timestamp:removeTextSpec.timestamp, position:addAnnotationSpec.position + 2, length:removeTextSpecEnd - addAnnotationSpec.position};
+ removeTextSpecResult.unshift(helperOpspec);
+ }
}
- if(majorSP && !hasProperties(majorSP)) {
- delete majorSet[propertiesName]
+ if (removeTextSpec.position + removeTextSpec.length <= addAnnotationSpec.position) {
+ addAnnotationSpec.position -= removeTextSpec.length;
+ if (addAnnotationSpec.length !== undefined && helperOpspec) {
+ if (helperOpspec.length >= addAnnotationSpec.length) {
+ addAnnotationSpec.length = 0;
+ } else {
+ addAnnotationSpec.length -= helperOpspec.length;
+ }
+ }
+ } else {
+ if (addAnnotationSpec.length !== undefined) {
+ annotationSpecEnd = addAnnotationSpec.position + addAnnotationSpec.length;
+ if (removeTextSpecEnd <= annotationSpecEnd) {
+ addAnnotationSpec.length -= removeTextSpec.length;
+ } else {
+ if (removeTextSpecPosition < annotationSpecEnd) {
+ addAnnotationSpec.length = removeTextSpecPosition - addAnnotationSpec.position;
+ }
+ }
+ }
+ }
+ return {opSpecsA:addAnnotationSpecResult, opSpecsB:removeTextSpecResult};
+ }
+ function transformAddAnnotationSetParagraphStyle(addAnnotationSpec, setParagraphStyleSpec) {
+ if (addAnnotationSpec.position < setParagraphStyleSpec.position) {
+ setParagraphStyleSpec.position += 2;
+ }
+ return {opSpecsA:[addAnnotationSpec], opSpecsB:[setParagraphStyleSpec]};
+ }
+ function transformAddAnnotationSplitParagraph(addAnnotationSpec, splitParagraphSpec) {
+ if (addAnnotationSpec.position < splitParagraphSpec.sourceParagraphPosition) {
+ splitParagraphSpec.sourceParagraphPosition += 2;
}
- if(majorRP && !hasRemovedProperties(majorRP)) {
- delete majorRem[propertiesName]
+ if (splitParagraphSpec.position <= addAnnotationSpec.position) {
+ addAnnotationSpec.position += 1;
+ } else {
+ if (addAnnotationSpec.length !== undefined) {
+ if (splitParagraphSpec.position <= addAnnotationSpec.position + addAnnotationSpec.length) {
+ addAnnotationSpec.length += 1;
+ }
+ }
+ splitParagraphSpec.position += 2;
}
- return result
+ return {opSpecsA:[addAnnotationSpec], opSpecsB:[splitParagraphSpec]};
}
function transformAddStyleRemoveStyle(addStyleSpec, removeStyleSpec) {
var setAttributes, helperOpspec, addStyleSpecResult = [addStyleSpec], removeStyleSpecResult = [removeStyleSpec];
- if(addStyleSpec.styleFamily === removeStyleSpec.styleFamily) {
+ if (addStyleSpec.styleFamily === removeStyleSpec.styleFamily) {
setAttributes = getStyleReferencingAttributes(addStyleSpec.setProperties, removeStyleSpec.styleName);
- if(setAttributes.length > 0) {
+ if (setAttributes.length > 0) {
helperOpspec = {optype:"UpdateParagraphStyle", memberid:removeStyleSpec.memberid, timestamp:removeStyleSpec.timestamp, styleName:addStyleSpec.styleName, removedProperties:{attributes:setAttributes.join(",")}};
- removeStyleSpecResult.unshift(helperOpspec)
+ removeStyleSpecResult.unshift(helperOpspec);
}
- dropStyleReferencingAttributes(addStyleSpec.setProperties, removeStyleSpec.styleName)
+ dropStyleReferencingAttributes(addStyleSpec.setProperties, removeStyleSpec.styleName);
}
- return{opSpecsA:addStyleSpecResult, opSpecsB:removeStyleSpecResult}
+ return {opSpecsA:addStyleSpecResult, opSpecsB:removeStyleSpecResult};
}
function transformApplyDirectStylingApplyDirectStyling(applyDirectStylingSpecA, applyDirectStylingSpecB, hasAPriority) {
var majorSpec, minorSpec, majorSpecResult, minorSpecResult, majorSpecEnd, minorSpecEnd, dropResult, originalMajorSpec, originalMinorSpec, helperOpspecBefore, helperOpspecAfter, applyDirectStylingSpecAResult = [applyDirectStylingSpecA], applyDirectStylingSpecBResult = [applyDirectStylingSpecB];
- if(!(applyDirectStylingSpecA.position + applyDirectStylingSpecA.length <= applyDirectStylingSpecB.position || applyDirectStylingSpecA.position >= applyDirectStylingSpecB.position + applyDirectStylingSpecB.length)) {
+ if (!(applyDirectStylingSpecA.position + applyDirectStylingSpecA.length <= applyDirectStylingSpecB.position || applyDirectStylingSpecA.position >= applyDirectStylingSpecB.position + applyDirectStylingSpecB.length)) {
majorSpec = hasAPriority ? applyDirectStylingSpecA : applyDirectStylingSpecB;
minorSpec = hasAPriority ? applyDirectStylingSpecB : applyDirectStylingSpecA;
- if(applyDirectStylingSpecA.position !== applyDirectStylingSpecB.position || applyDirectStylingSpecA.length !== applyDirectStylingSpecB.length) {
+ if (applyDirectStylingSpecA.position !== applyDirectStylingSpecB.position || applyDirectStylingSpecA.length !== applyDirectStylingSpecB.length) {
originalMajorSpec = cloneOpspec(majorSpec);
- originalMinorSpec = cloneOpspec(minorSpec)
+ originalMinorSpec = cloneOpspec(minorSpec);
}
dropResult = dropOverruledAndUnneededProperties(minorSpec.setProperties, null, majorSpec.setProperties, null, "style:text-properties");
- if(dropResult.majorChanged || dropResult.minorChanged) {
+ if (dropResult.majorChanged || dropResult.minorChanged) {
majorSpecResult = [];
minorSpecResult = [];
majorSpecEnd = majorSpec.position + majorSpec.length;
minorSpecEnd = minorSpec.position + minorSpec.length;
- if(minorSpec.position < majorSpec.position) {
- if(dropResult.minorChanged) {
+ if (minorSpec.position < majorSpec.position) {
+ if (dropResult.minorChanged) {
helperOpspecBefore = cloneOpspec((originalMinorSpec));
helperOpspecBefore.length = majorSpec.position - minorSpec.position;
minorSpecResult.push(helperOpspecBefore);
minorSpec.position = majorSpec.position;
- minorSpec.length = minorSpecEnd - minorSpec.position
+ minorSpec.length = minorSpecEnd - minorSpec.position;
}
- }else {
- if(majorSpec.position < minorSpec.position) {
- if(dropResult.majorChanged) {
+ } else {
+ if (majorSpec.position < minorSpec.position) {
+ if (dropResult.majorChanged) {
helperOpspecBefore = cloneOpspec((originalMajorSpec));
helperOpspecBefore.length = minorSpec.position - majorSpec.position;
majorSpecResult.push(helperOpspecBefore);
majorSpec.position = minorSpec.position;
- majorSpec.length = majorSpecEnd - majorSpec.position
+ majorSpec.length = majorSpecEnd - majorSpec.position;
}
}
}
- if(minorSpecEnd > majorSpecEnd) {
- if(dropResult.minorChanged) {
+ if (minorSpecEnd > majorSpecEnd) {
+ if (dropResult.minorChanged) {
helperOpspecAfter = originalMinorSpec;
helperOpspecAfter.position = majorSpecEnd;
helperOpspecAfter.length = minorSpecEnd - majorSpecEnd;
minorSpecResult.push(helperOpspecAfter);
- minorSpec.length = majorSpecEnd - minorSpec.position
+ minorSpec.length = majorSpecEnd - minorSpec.position;
}
- }else {
- if(majorSpecEnd > minorSpecEnd) {
- if(dropResult.majorChanged) {
+ } else {
+ if (majorSpecEnd > minorSpecEnd) {
+ if (dropResult.majorChanged) {
helperOpspecAfter = originalMajorSpec;
helperOpspecAfter.position = minorSpecEnd;
helperOpspecAfter.length = majorSpecEnd - minorSpecEnd;
majorSpecResult.push(helperOpspecAfter);
- majorSpec.length = minorSpecEnd - majorSpec.position
+ majorSpec.length = minorSpecEnd - majorSpec.position;
}
}
}
- if(majorSpec.setProperties && hasProperties(majorSpec.setProperties)) {
- majorSpecResult.push(majorSpec)
+ if (majorSpec.setProperties && hasProperties(majorSpec.setProperties)) {
+ majorSpecResult.push(majorSpec);
}
- if(minorSpec.setProperties && hasProperties(minorSpec.setProperties)) {
- minorSpecResult.push(minorSpec)
+ if (minorSpec.setProperties && hasProperties(minorSpec.setProperties)) {
+ minorSpecResult.push(minorSpec);
}
- if(hasAPriority) {
+ if (hasAPriority) {
applyDirectStylingSpecAResult = majorSpecResult;
- applyDirectStylingSpecBResult = minorSpecResult
- }else {
+ applyDirectStylingSpecBResult = minorSpecResult;
+ } else {
applyDirectStylingSpecAResult = minorSpecResult;
- applyDirectStylingSpecBResult = majorSpecResult
+ applyDirectStylingSpecBResult = majorSpecResult;
}
}
}
- return{opSpecsA:applyDirectStylingSpecAResult, opSpecsB:applyDirectStylingSpecBResult}
+ return {opSpecsA:applyDirectStylingSpecAResult, opSpecsB:applyDirectStylingSpecBResult};
}
function transformApplyDirectStylingInsertText(applyDirectStylingSpec, insertTextSpec) {
- if(insertTextSpec.position <= applyDirectStylingSpec.position) {
- applyDirectStylingSpec.position += insertTextSpec.text.length
- }else {
- if(insertTextSpec.position <= applyDirectStylingSpec.position + applyDirectStylingSpec.length) {
- applyDirectStylingSpec.length += insertTextSpec.text.length
+ if (insertTextSpec.position <= applyDirectStylingSpec.position) {
+ applyDirectStylingSpec.position += insertTextSpec.text.length;
+ } else {
+ if (insertTextSpec.position <= applyDirectStylingSpec.position + applyDirectStylingSpec.length) {
+ applyDirectStylingSpec.length += insertTextSpec.text.length;
+ }
+ }
+ return {opSpecsA:[applyDirectStylingSpec], opSpecsB:[insertTextSpec]};
+ }
+ function transformApplyDirectStylingMergeParagraph(applyDirectStylingSpec, mergeParagraphSpec) {
+ var pointA = applyDirectStylingSpec.position, pointB = applyDirectStylingSpec.position + applyDirectStylingSpec.length;
+ if (pointA >= mergeParagraphSpec.sourceStartPosition) {
+ pointA -= 1;
+ }
+ if (pointB >= mergeParagraphSpec.sourceStartPosition) {
+ pointB -= 1;
+ }
+ applyDirectStylingSpec.position = pointA;
+ applyDirectStylingSpec.length = pointB - pointA;
+ return {opSpecsA:[applyDirectStylingSpec], opSpecsB:[mergeParagraphSpec]};
+ }
+ function transformApplyDirectStylingRemoveAnnotation(applyDirectStylingSpec, removeAnnotationSpec) {
+ var pointA = applyDirectStylingSpec.position, pointB = applyDirectStylingSpec.position + applyDirectStylingSpec.length, removeAnnotationEnd = removeAnnotationSpec.position + removeAnnotationSpec.length, applyDirectStylingSpecResult = [applyDirectStylingSpec], removeAnnotationSpecResult = [removeAnnotationSpec];
+ if (removeAnnotationSpec.position <= pointA && pointB <= removeAnnotationEnd) {
+ applyDirectStylingSpecResult = [];
+ } else {
+ if (removeAnnotationEnd < pointA) {
+ pointA -= removeAnnotationSpec.length + 2;
}
+ if (removeAnnotationEnd < pointB) {
+ pointB -= removeAnnotationSpec.length + 2;
+ }
+ applyDirectStylingSpec.position = pointA;
+ applyDirectStylingSpec.length = pointB - pointA;
}
- return{opSpecsA:[applyDirectStylingSpec], opSpecsB:[insertTextSpec]}
+ return {opSpecsA:applyDirectStylingSpecResult, opSpecsB:removeAnnotationSpecResult};
}
function transformApplyDirectStylingRemoveText(applyDirectStylingSpec, removeTextSpec) {
var applyDirectStylingSpecEnd = applyDirectStylingSpec.position + applyDirectStylingSpec.length, removeTextSpecEnd = removeTextSpec.position + removeTextSpec.length, applyDirectStylingSpecResult = [applyDirectStylingSpec], removeTextSpecResult = [removeTextSpec];
- if(removeTextSpecEnd <= applyDirectStylingSpec.position) {
- applyDirectStylingSpec.position -= removeTextSpec.length
- }else {
- if(removeTextSpec.position < applyDirectStylingSpecEnd) {
- if(applyDirectStylingSpec.position < removeTextSpec.position) {
- if(removeTextSpecEnd < applyDirectStylingSpecEnd) {
- applyDirectStylingSpec.length -= removeTextSpec.length
- }else {
- applyDirectStylingSpec.length = removeTextSpec.position - applyDirectStylingSpec.position
+ if (removeTextSpecEnd <= applyDirectStylingSpec.position) {
+ applyDirectStylingSpec.position -= removeTextSpec.length;
+ } else {
+ if (removeTextSpec.position < applyDirectStylingSpecEnd) {
+ if (applyDirectStylingSpec.position < removeTextSpec.position) {
+ if (removeTextSpecEnd < applyDirectStylingSpecEnd) {
+ applyDirectStylingSpec.length -= removeTextSpec.length;
+ } else {
+ applyDirectStylingSpec.length = removeTextSpec.position - applyDirectStylingSpec.position;
}
- }else {
+ } else {
applyDirectStylingSpec.position = removeTextSpec.position;
- if(removeTextSpecEnd < applyDirectStylingSpecEnd) {
- applyDirectStylingSpec.length = applyDirectStylingSpecEnd - removeTextSpecEnd
- }else {
- applyDirectStylingSpecResult = []
+ if (removeTextSpecEnd < applyDirectStylingSpecEnd) {
+ applyDirectStylingSpec.length = applyDirectStylingSpecEnd - removeTextSpecEnd;
+ } else {
+ applyDirectStylingSpecResult = [];
}
}
}
}
- return{opSpecsA:applyDirectStylingSpecResult, opSpecsB:removeTextSpecResult}
+ return {opSpecsA:applyDirectStylingSpecResult, opSpecsB:removeTextSpecResult};
}
function transformApplyDirectStylingSplitParagraph(applyDirectStylingSpec, splitParagraphSpec) {
- if(splitParagraphSpec.position < applyDirectStylingSpec.position) {
- applyDirectStylingSpec.position += 1
- }else {
- if(splitParagraphSpec.position < applyDirectStylingSpec.position + applyDirectStylingSpec.length) {
- applyDirectStylingSpec.length += 1
+ if (splitParagraphSpec.position < applyDirectStylingSpec.position) {
+ applyDirectStylingSpec.position += 1;
+ } else {
+ if (splitParagraphSpec.position < applyDirectStylingSpec.position + applyDirectStylingSpec.length) {
+ applyDirectStylingSpec.length += 1;
}
}
- return{opSpecsA:[applyDirectStylingSpec], opSpecsB:[splitParagraphSpec]}
+ return {opSpecsA:[applyDirectStylingSpec], opSpecsB:[splitParagraphSpec]};
}
function transformInsertTextInsertText(insertTextSpecA, insertTextSpecB, hasAPriority) {
- if(insertTextSpecA.position < insertTextSpecB.position) {
- insertTextSpecB.position += insertTextSpecA.text.length
- }else {
- if(insertTextSpecA.position > insertTextSpecB.position) {
- insertTextSpecA.position += insertTextSpecB.text.length
- }else {
- if(hasAPriority) {
- insertTextSpecB.position += insertTextSpecA.text.length
- }else {
- insertTextSpecA.position += insertTextSpecB.text.length
+ if (insertTextSpecA.position < insertTextSpecB.position) {
+ insertTextSpecB.position += insertTextSpecA.text.length;
+ } else {
+ if (insertTextSpecA.position > insertTextSpecB.position) {
+ insertTextSpecA.position += insertTextSpecB.text.length;
+ } else {
+ if (hasAPriority) {
+ insertTextSpecB.position += insertTextSpecA.text.length;
+ } else {
+ insertTextSpecA.position += insertTextSpecB.text.length;
}
}
}
- return{opSpecsA:[insertTextSpecA], opSpecsB:[insertTextSpecB]}
+ return {opSpecsA:[insertTextSpecA], opSpecsB:[insertTextSpecB]};
+ }
+ function transformInsertTextMergeParagraph(insertTextSpec, mergeParagraphSpec) {
+ if (insertTextSpec.position >= mergeParagraphSpec.sourceStartPosition) {
+ insertTextSpec.position -= 1;
+ } else {
+ if (insertTextSpec.position < mergeParagraphSpec.sourceStartPosition) {
+ mergeParagraphSpec.sourceStartPosition += insertTextSpec.text.length;
+ }
+ if (insertTextSpec.position < mergeParagraphSpec.destinationStartPosition) {
+ mergeParagraphSpec.destinationStartPosition += insertTextSpec.text.length;
+ }
+ }
+ return {opSpecsA:[insertTextSpec], opSpecsB:[mergeParagraphSpec]};
}
function transformInsertTextMoveCursor(insertTextSpec, moveCursorSpec) {
var isMoveCursorSpecRangeInverted = invertMoveCursorSpecRangeOnNegativeLength(moveCursorSpec);
- if(insertTextSpec.position < moveCursorSpec.position) {
- moveCursorSpec.position += insertTextSpec.text.length
- }else {
- if(insertTextSpec.position < moveCursorSpec.position + moveCursorSpec.length) {
- moveCursorSpec.length += insertTextSpec.text.length
+ if (insertTextSpec.position < moveCursorSpec.position) {
+ moveCursorSpec.position += insertTextSpec.text.length;
+ } else {
+ if (insertTextSpec.position < moveCursorSpec.position + moveCursorSpec.length) {
+ moveCursorSpec.length += insertTextSpec.text.length;
}
}
- if(isMoveCursorSpecRangeInverted) {
- invertMoveCursorSpecRange(moveCursorSpec)
+ if (isMoveCursorSpecRangeInverted) {
+ invertMoveCursorSpecRange(moveCursorSpec);
+ }
+ return {opSpecsA:[insertTextSpec], opSpecsB:[moveCursorSpec]};
+ }
+ function transformInsertTextRemoveAnnotation(insertTextSpec, removeAnnotationSpec) {
+ var insertTextSpecPosition = insertTextSpec.position, removeAnnotationEnd = removeAnnotationSpec.position + removeAnnotationSpec.length, insertTextSpecResult = [insertTextSpec], removeAnnotationSpecResult = [removeAnnotationSpec];
+ if (removeAnnotationSpec.position <= insertTextSpecPosition && insertTextSpecPosition <= removeAnnotationEnd) {
+ insertTextSpecResult = [];
+ removeAnnotationSpec.length += insertTextSpec.text.length;
+ } else {
+ if (removeAnnotationEnd < insertTextSpec.position) {
+ insertTextSpec.position -= removeAnnotationSpec.length + 2;
+ } else {
+ removeAnnotationSpec.position += insertTextSpec.text.length;
+ }
}
- return{opSpecsA:[insertTextSpec], opSpecsB:[moveCursorSpec]}
+ return {opSpecsA:insertTextSpecResult, opSpecsB:removeAnnotationSpecResult};
}
function transformInsertTextRemoveText(insertTextSpec, removeTextSpec) {
var helperOpspec, removeTextSpecEnd = removeTextSpec.position + removeTextSpec.length, insertTextSpecResult = [insertTextSpec], removeTextSpecResult = [removeTextSpec];
- if(removeTextSpecEnd <= insertTextSpec.position) {
- insertTextSpec.position -= removeTextSpec.length
- }else {
- if(insertTextSpec.position <= removeTextSpec.position) {
- removeTextSpec.position += insertTextSpec.text.length
- }else {
+ if (removeTextSpecEnd <= insertTextSpec.position) {
+ insertTextSpec.position -= removeTextSpec.length;
+ } else {
+ if (insertTextSpec.position <= removeTextSpec.position) {
+ removeTextSpec.position += insertTextSpec.text.length;
+ } else {
removeTextSpec.length = insertTextSpec.position - removeTextSpec.position;
helperOpspec = {optype:"RemoveText", memberid:removeTextSpec.memberid, timestamp:removeTextSpec.timestamp, position:insertTextSpec.position + insertTextSpec.text.length, length:removeTextSpecEnd - insertTextSpec.position};
removeTextSpecResult.unshift(helperOpspec);
- insertTextSpec.position = removeTextSpec.position
+ insertTextSpec.position = removeTextSpec.position;
+ }
+ }
+ return {opSpecsA:insertTextSpecResult, opSpecsB:removeTextSpecResult};
+ }
+ function transformInsertTextSetParagraphStyle(insertTextSpec, setParagraphStyleSpec) {
+ if (setParagraphStyleSpec.position > insertTextSpec.position) {
+ setParagraphStyleSpec.position += insertTextSpec.text.length;
+ }
+ return {opSpecsA:[insertTextSpec], opSpecsB:[setParagraphStyleSpec]};
+ }
+ function transformInsertTextSplitParagraph(insertTextSpec, splitParagraphSpec) {
+ if (insertTextSpec.position < splitParagraphSpec.sourceParagraphPosition) {
+ splitParagraphSpec.sourceParagraphPosition += insertTextSpec.text.length;
+ }
+ if (insertTextSpec.position <= splitParagraphSpec.position) {
+ splitParagraphSpec.position += insertTextSpec.text.length;
+ } else {
+ insertTextSpec.position += 1;
+ }
+ return {opSpecsA:[insertTextSpec], opSpecsB:[splitParagraphSpec]};
+ }
+ function transformMergeParagraphMergeParagraph(mergeParagraphSpecA, mergeParagraphSpecB, hasAPriority) {
+ var specsForB = [mergeParagraphSpecA], specsForA = [mergeParagraphSpecB], priorityOp, styleParagraphFixup, moveCursorA, moveCursorB;
+ if (mergeParagraphSpecA.destinationStartPosition === mergeParagraphSpecB.destinationStartPosition) {
+ specsForB = [];
+ specsForA = [];
+ if (mergeParagraphSpecA.moveCursor) {
+ moveCursorA = ({optype:"MoveCursor", memberid:mergeParagraphSpecA.memberid, timestamp:mergeParagraphSpecA.timestamp, position:mergeParagraphSpecA.sourceStartPosition - 1});
+ specsForB.push(moveCursorA);
+ }
+ if (mergeParagraphSpecB.moveCursor) {
+ moveCursorB = ({optype:"MoveCursor", memberid:mergeParagraphSpecB.memberid, timestamp:mergeParagraphSpecB.timestamp, position:mergeParagraphSpecB.sourceStartPosition - 1});
+ specsForA.push(moveCursorB);
+ }
+ priorityOp = hasAPriority ? mergeParagraphSpecA : mergeParagraphSpecB;
+ styleParagraphFixup = ({optype:"SetParagraphStyle", memberid:priorityOp.memberid, timestamp:priorityOp.timestamp, position:priorityOp.destinationStartPosition, styleName:priorityOp.paragraphStyleName});
+ if (hasAPriority) {
+ specsForB.push(styleParagraphFixup);
+ } else {
+ specsForA.push(styleParagraphFixup);
+ }
+ } else {
+ if (mergeParagraphSpecB.sourceStartPosition === mergeParagraphSpecA.destinationStartPosition) {
+ mergeParagraphSpecA.destinationStartPosition = mergeParagraphSpecB.destinationStartPosition;
+ mergeParagraphSpecA.sourceStartPosition -= 1;
+ mergeParagraphSpecA.paragraphStyleName = mergeParagraphSpecB.paragraphStyleName;
+ } else {
+ if (mergeParagraphSpecA.sourceStartPosition === mergeParagraphSpecB.destinationStartPosition) {
+ mergeParagraphSpecB.destinationStartPosition = mergeParagraphSpecA.destinationStartPosition;
+ mergeParagraphSpecB.sourceStartPosition -= 1;
+ mergeParagraphSpecB.paragraphStyleName = mergeParagraphSpecA.paragraphStyleName;
+ } else {
+ if (mergeParagraphSpecA.destinationStartPosition < mergeParagraphSpecB.destinationStartPosition) {
+ mergeParagraphSpecB.destinationStartPosition -= 1;
+ mergeParagraphSpecB.sourceStartPosition -= 1;
+ } else {
+ mergeParagraphSpecA.destinationStartPosition -= 1;
+ mergeParagraphSpecA.sourceStartPosition -= 1;
+ }
+ }
}
}
- return{opSpecsA:insertTextSpecResult, opSpecsB:removeTextSpecResult}
+ return {opSpecsA:specsForB, opSpecsB:specsForA};
+ }
+ function transformMergeParagraphMoveCursor(mergeParagraphSpec, moveCursorSpec) {
+ var pointA = moveCursorSpec.position, pointB = moveCursorSpec.position + moveCursorSpec.length, start = Math.min(pointA, pointB), end = Math.max(pointA, pointB);
+ if (start >= mergeParagraphSpec.sourceStartPosition) {
+ start -= 1;
+ }
+ if (end >= mergeParagraphSpec.sourceStartPosition) {
+ end -= 1;
+ }
+ if (moveCursorSpec.length >= 0) {
+ moveCursorSpec.position = start;
+ moveCursorSpec.length = end - start;
+ } else {
+ moveCursorSpec.position = end;
+ moveCursorSpec.length = start - end;
+ }
+ return {opSpecsA:[mergeParagraphSpec], opSpecsB:[moveCursorSpec]};
}
- function transformInsertTextSplitParagraph(insertTextSpec, splitParagraphSpec, hasAPriority) {
- if(insertTextSpec.position < splitParagraphSpec.position) {
- splitParagraphSpec.position += insertTextSpec.text.length
- }else {
- if(insertTextSpec.position > splitParagraphSpec.position) {
- insertTextSpec.position += 1
- }else {
- if(hasAPriority) {
- splitParagraphSpec.position += insertTextSpec.text.length
- }else {
- insertTextSpec.position += 1
+ function transformMergeParagraphRemoveAnnotation(mergeParagraphSpec, removeAnnotationSpec) {
+ var removeAnnotationEnd = removeAnnotationSpec.position + removeAnnotationSpec.length, mergeParagraphSpecResult = [mergeParagraphSpec], removeAnnotationSpecResult = [removeAnnotationSpec];
+ if (removeAnnotationSpec.position <= mergeParagraphSpec.destinationStartPosition && mergeParagraphSpec.sourceStartPosition <= removeAnnotationEnd) {
+ mergeParagraphSpecResult = [];
+ removeAnnotationSpec.length -= 1;
+ } else {
+ if (mergeParagraphSpec.sourceStartPosition < removeAnnotationSpec.position) {
+ removeAnnotationSpec.position -= 1;
+ } else {
+ if (removeAnnotationEnd < mergeParagraphSpec.destinationStartPosition) {
+ mergeParagraphSpec.destinationStartPosition -= removeAnnotationSpec.length + 2;
+ }
+ if (removeAnnotationEnd < mergeParagraphSpec.sourceStartPosition) {
+ mergeParagraphSpec.sourceStartPosition -= removeAnnotationSpec.length + 2;
}
- return null
}
}
- return{opSpecsA:[insertTextSpec], opSpecsB:[splitParagraphSpec]}
+ return {opSpecsA:mergeParagraphSpecResult, opSpecsB:removeAnnotationSpecResult};
+ }
+ function transformMergeParagraphRemoveText(mergeParagraphSpec, removeTextSpec) {
+ if (removeTextSpec.position >= mergeParagraphSpec.sourceStartPosition) {
+ removeTextSpec.position -= 1;
+ } else {
+ if (removeTextSpec.position < mergeParagraphSpec.destinationStartPosition) {
+ mergeParagraphSpec.destinationStartPosition -= removeTextSpec.length;
+ }
+ if (removeTextSpec.position < mergeParagraphSpec.sourceStartPosition) {
+ mergeParagraphSpec.sourceStartPosition -= removeTextSpec.length;
+ }
+ }
+ return {opSpecsA:[mergeParagraphSpec], opSpecsB:[removeTextSpec]};
+ }
+ function transformMergeParagraphSetParagraphStyle(mergeParagraphSpec, setParagraphStyleSpec) {
+ var opSpecsA = [mergeParagraphSpec], opSpecsB = [setParagraphStyleSpec];
+ if (setParagraphStyleSpec.position > mergeParagraphSpec.sourceStartPosition) {
+ setParagraphStyleSpec.position -= 1;
+ } else {
+ if (setParagraphStyleSpec.position === mergeParagraphSpec.destinationStartPosition || setParagraphStyleSpec.position === mergeParagraphSpec.sourceStartPosition) {
+ setParagraphStyleSpec.position = mergeParagraphSpec.destinationStartPosition;
+ mergeParagraphSpec.paragraphStyleName = setParagraphStyleSpec.styleName;
+ }
+ }
+ return {opSpecsA:opSpecsA, opSpecsB:opSpecsB};
+ }
+ function transformMergeParagraphSplitParagraph(mergeParagraphSpec, splitParagraphSpec) {
+ var styleSplitParagraph, moveCursorOp, opSpecsA = [mergeParagraphSpec], opSpecsB = [splitParagraphSpec];
+ if (splitParagraphSpec.position < mergeParagraphSpec.destinationStartPosition) {
+ mergeParagraphSpec.destinationStartPosition += 1;
+ mergeParagraphSpec.sourceStartPosition += 1;
+ } else {
+ if (splitParagraphSpec.position >= mergeParagraphSpec.destinationStartPosition && splitParagraphSpec.position < mergeParagraphSpec.sourceStartPosition) {
+ splitParagraphSpec.paragraphStyleName = mergeParagraphSpec.paragraphStyleName;
+ styleSplitParagraph = ({optype:"SetParagraphStyle", memberid:mergeParagraphSpec.memberid, timestamp:mergeParagraphSpec.timestamp, position:mergeParagraphSpec.destinationStartPosition, styleName:mergeParagraphSpec.paragraphStyleName});
+ opSpecsA.push(styleSplitParagraph);
+ if (splitParagraphSpec.position === mergeParagraphSpec.sourceStartPosition - 1 && mergeParagraphSpec.moveCursor) {
+ moveCursorOp = ({optype:"MoveCursor", memberid:mergeParagraphSpec.memberid, timestamp:mergeParagraphSpec.timestamp, position:splitParagraphSpec.position, length:0});
+ opSpecsA.push(moveCursorOp);
+ }
+ mergeParagraphSpec.destinationStartPosition = splitParagraphSpec.position + 1;
+ mergeParagraphSpec.sourceStartPosition += 1;
+ } else {
+ if (splitParagraphSpec.position >= mergeParagraphSpec.sourceStartPosition) {
+ splitParagraphSpec.position -= 1;
+ splitParagraphSpec.sourceParagraphPosition -= 1;
+ }
+ }
+ }
+ return {opSpecsA:opSpecsA, opSpecsB:opSpecsB};
}
function transformUpdateParagraphStyleUpdateParagraphStyle(updateParagraphStyleSpecA, updateParagraphStyleSpecB, hasAPriority) {
var majorSpec, minorSpec, updateParagraphStyleSpecAResult = [updateParagraphStyleSpecA], updateParagraphStyleSpecBResult = [updateParagraphStyleSpecB];
- if(updateParagraphStyleSpecA.styleName === updateParagraphStyleSpecB.styleName) {
+ if (updateParagraphStyleSpecA.styleName === updateParagraphStyleSpecB.styleName) {
majorSpec = hasAPriority ? updateParagraphStyleSpecA : updateParagraphStyleSpecB;
minorSpec = hasAPriority ? updateParagraphStyleSpecB : updateParagraphStyleSpecA;
dropOverruledAndUnneededProperties(minorSpec.setProperties, minorSpec.removedProperties, majorSpec.setProperties, majorSpec.removedProperties, "style:paragraph-properties");
dropOverruledAndUnneededProperties(minorSpec.setProperties, minorSpec.removedProperties, majorSpec.setProperties, majorSpec.removedProperties, "style:text-properties");
dropOverruledAndUnneededAttributes(minorSpec.setProperties || null, (minorSpec.removedProperties) || null, majorSpec.setProperties || null, (majorSpec.removedProperties) || null);
- if(!(majorSpec.setProperties && hasProperties(majorSpec.setProperties)) && !(majorSpec.removedProperties && hasRemovedProperties(majorSpec.removedProperties))) {
- if(hasAPriority) {
- updateParagraphStyleSpecAResult = []
- }else {
- updateParagraphStyleSpecBResult = []
+ if (!(majorSpec.setProperties && hasProperties(majorSpec.setProperties)) && !(majorSpec.removedProperties && hasRemovedProperties(majorSpec.removedProperties))) {
+ if (hasAPriority) {
+ updateParagraphStyleSpecAResult = [];
+ } else {
+ updateParagraphStyleSpecBResult = [];
}
}
- if(!(minorSpec.setProperties && hasProperties(minorSpec.setProperties)) && !(minorSpec.removedProperties && hasRemovedProperties(minorSpec.removedProperties))) {
- if(hasAPriority) {
- updateParagraphStyleSpecBResult = []
- }else {
- updateParagraphStyleSpecAResult = []
+ if (!(minorSpec.setProperties && hasProperties(minorSpec.setProperties)) && !(minorSpec.removedProperties && hasRemovedProperties(minorSpec.removedProperties))) {
+ if (hasAPriority) {
+ updateParagraphStyleSpecBResult = [];
+ } else {
+ updateParagraphStyleSpecAResult = [];
}
}
}
- return{opSpecsA:updateParagraphStyleSpecAResult, opSpecsB:updateParagraphStyleSpecBResult}
+ return {opSpecsA:updateParagraphStyleSpecAResult, opSpecsB:updateParagraphStyleSpecBResult};
}
function transformUpdateMetadataUpdateMetadata(updateMetadataSpecA, updateMetadataSpecB, hasAPriority) {
var majorSpec, minorSpec, updateMetadataSpecAResult = [updateMetadataSpecA], updateMetadataSpecBResult = [updateMetadataSpecB];
majorSpec = hasAPriority ? updateMetadataSpecA : updateMetadataSpecB;
minorSpec = hasAPriority ? updateMetadataSpecB : updateMetadataSpecA;
dropOverruledAndUnneededAttributes(minorSpec.setProperties || null, minorSpec.removedProperties || null, majorSpec.setProperties || null, majorSpec.removedProperties || null);
- if(!(majorSpec.setProperties && hasProperties(majorSpec.setProperties)) && !(majorSpec.removedProperties && hasRemovedProperties(majorSpec.removedProperties))) {
- if(hasAPriority) {
- updateMetadataSpecAResult = []
- }else {
- updateMetadataSpecBResult = []
+ if (!(majorSpec.setProperties && hasProperties(majorSpec.setProperties)) && !(majorSpec.removedProperties && hasRemovedProperties(majorSpec.removedProperties))) {
+ if (hasAPriority) {
+ updateMetadataSpecAResult = [];
+ } else {
+ updateMetadataSpecBResult = [];
}
}
- if(!(minorSpec.setProperties && hasProperties(minorSpec.setProperties)) && !(minorSpec.removedProperties && hasRemovedProperties(minorSpec.removedProperties))) {
- if(hasAPriority) {
- updateMetadataSpecBResult = []
- }else {
- updateMetadataSpecAResult = []
+ if (!(minorSpec.setProperties && hasProperties(minorSpec.setProperties)) && !(minorSpec.removedProperties && hasRemovedProperties(minorSpec.removedProperties))) {
+ if (hasAPriority) {
+ updateMetadataSpecBResult = [];
+ } else {
+ updateMetadataSpecAResult = [];
}
}
- return{opSpecsA:updateMetadataSpecAResult, opSpecsB:updateMetadataSpecBResult}
+ return {opSpecsA:updateMetadataSpecAResult, opSpecsB:updateMetadataSpecBResult};
+ }
+ function transformSetParagraphStyleSetParagraphStyle(setParagraphStyleSpecA, setParagraphStyleSpecB, hasAPriority) {
+ if (setParagraphStyleSpecA.position === setParagraphStyleSpecB.position) {
+ if (hasAPriority) {
+ setParagraphStyleSpecB.styleName = setParagraphStyleSpecA.styleName;
+ } else {
+ setParagraphStyleSpecA.styleName = setParagraphStyleSpecB.styleName;
+ }
+ }
+ return {opSpecsA:[setParagraphStyleSpecA], opSpecsB:[setParagraphStyleSpecB]};
+ }
+ function transformSetParagraphStyleSplitParagraph(setParagraphStyleSpec, splitParagraphSpec) {
+ var opSpecsA = [setParagraphStyleSpec], opSpecsB = [splitParagraphSpec], setParagraphClone;
+ if (setParagraphStyleSpec.position > splitParagraphSpec.position) {
+ setParagraphStyleSpec.position += 1;
+ } else {
+ if (setParagraphStyleSpec.position === splitParagraphSpec.sourceParagraphPosition) {
+ splitParagraphSpec.paragraphStyleName = setParagraphStyleSpec.styleName;
+ setParagraphClone = cloneOpspec(setParagraphStyleSpec);
+ setParagraphClone.position = splitParagraphSpec.position + 1;
+ opSpecsA.push(setParagraphClone);
+ }
+ }
+ return {opSpecsA:opSpecsA, opSpecsB:opSpecsB};
}
function transformSplitParagraphSplitParagraph(splitParagraphSpecA, splitParagraphSpecB, hasAPriority) {
- if(splitParagraphSpecA.position < splitParagraphSpecB.position) {
- splitParagraphSpecB.position += 1
- }else {
- if(splitParagraphSpecA.position > splitParagraphSpecB.position) {
- splitParagraphSpecA.position += 1
- }else {
- if(splitParagraphSpecA.position === splitParagraphSpecB.position) {
- if(hasAPriority) {
- splitParagraphSpecB.position += 1
- }else {
- splitParagraphSpecA.position += 1
+ var specABeforeB, specBBeforeA;
+ if (splitParagraphSpecA.position < splitParagraphSpecB.position) {
+ specABeforeB = true;
+ } else {
+ if (splitParagraphSpecB.position < splitParagraphSpecA.position) {
+ specBBeforeA = true;
+ } else {
+ if (splitParagraphSpecA.position === splitParagraphSpecB.position) {
+ if (hasAPriority) {
+ specABeforeB = true;
+ } else {
+ specBBeforeA = true;
}
}
}
}
- return{opSpecsA:[splitParagraphSpecA], opSpecsB:[splitParagraphSpecB]}
+ if (specABeforeB) {
+ splitParagraphSpecB.position += 1;
+ if (splitParagraphSpecA.position < splitParagraphSpecB.sourceParagraphPosition) {
+ splitParagraphSpecB.sourceParagraphPosition += 1;
+ } else {
+ splitParagraphSpecB.sourceParagraphPosition = splitParagraphSpecA.position + 1;
+ }
+ } else {
+ if (specBBeforeA) {
+ splitParagraphSpecA.position += 1;
+ if (splitParagraphSpecB.position < splitParagraphSpecB.sourceParagraphPosition) {
+ splitParagraphSpecA.sourceParagraphPosition += 1;
+ } else {
+ splitParagraphSpecA.sourceParagraphPosition = splitParagraphSpecB.position + 1;
+ }
+ }
+ }
+ return {opSpecsA:[splitParagraphSpecA], opSpecsB:[splitParagraphSpecB]};
+ }
+ function transformMoveCursorRemoveAnnotation(moveCursorSpec, removeAnnotationSpec) {
+ var isMoveCursorSpecRangeInverted = invertMoveCursorSpecRangeOnNegativeLength(moveCursorSpec), moveCursorSpecEnd = moveCursorSpec.position + moveCursorSpec.length, removeAnnotationEnd = removeAnnotationSpec.position + removeAnnotationSpec.length;
+ if (removeAnnotationSpec.position <= moveCursorSpec.position && moveCursorSpecEnd <= removeAnnotationEnd) {
+ moveCursorSpec.position = removeAnnotationSpec.position - 1;
+ moveCursorSpec.length = 0;
+ } else {
+ if (removeAnnotationEnd < moveCursorSpec.position) {
+ moveCursorSpec.position -= removeAnnotationSpec.length + 2;
+ } else {
+ if (removeAnnotationEnd < moveCursorSpecEnd) {
+ moveCursorSpec.length -= removeAnnotationSpec.length + 2;
+ }
+ }
+ if (isMoveCursorSpecRangeInverted) {
+ invertMoveCursorSpecRange(moveCursorSpec);
+ }
+ }
+ return {opSpecsA:[moveCursorSpec], opSpecsB:[removeAnnotationSpec]};
}
function transformMoveCursorRemoveCursor(moveCursorSpec, removeCursorSpec) {
var isSameCursorRemoved = moveCursorSpec.memberid === removeCursorSpec.memberid;
- return{opSpecsA:isSameCursorRemoved ? [] : [moveCursorSpec], opSpecsB:[removeCursorSpec]}
+ return {opSpecsA:isSameCursorRemoved ? [] : [moveCursorSpec], opSpecsB:[removeCursorSpec]};
}
function transformMoveCursorRemoveText(moveCursorSpec, removeTextSpec) {
var isMoveCursorSpecRangeInverted = invertMoveCursorSpecRangeOnNegativeLength(moveCursorSpec), moveCursorSpecEnd = moveCursorSpec.position + moveCursorSpec.length, removeTextSpecEnd = removeTextSpec.position + removeTextSpec.length;
- if(removeTextSpecEnd <= moveCursorSpec.position) {
- moveCursorSpec.position -= removeTextSpec.length
- }else {
- if(removeTextSpec.position < moveCursorSpecEnd) {
- if(moveCursorSpec.position < removeTextSpec.position) {
- if(removeTextSpecEnd < moveCursorSpecEnd) {
- moveCursorSpec.length -= removeTextSpec.length
- }else {
- moveCursorSpec.length = removeTextSpec.position - moveCursorSpec.position
+ if (removeTextSpecEnd <= moveCursorSpec.position) {
+ moveCursorSpec.position -= removeTextSpec.length;
+ } else {
+ if (removeTextSpec.position < moveCursorSpecEnd) {
+ if (moveCursorSpec.position < removeTextSpec.position) {
+ if (removeTextSpecEnd < moveCursorSpecEnd) {
+ moveCursorSpec.length -= removeTextSpec.length;
+ } else {
+ moveCursorSpec.length = removeTextSpec.position - moveCursorSpec.position;
}
- }else {
+ } else {
moveCursorSpec.position = removeTextSpec.position;
- if(removeTextSpecEnd < moveCursorSpecEnd) {
- moveCursorSpec.length = moveCursorSpecEnd - removeTextSpecEnd
- }else {
- moveCursorSpec.length = 0
+ if (removeTextSpecEnd < moveCursorSpecEnd) {
+ moveCursorSpec.length = moveCursorSpecEnd - removeTextSpecEnd;
+ } else {
+ moveCursorSpec.length = 0;
}
}
}
}
- if(isMoveCursorSpecRangeInverted) {
- invertMoveCursorSpecRange(moveCursorSpec)
+ if (isMoveCursorSpecRangeInverted) {
+ invertMoveCursorSpecRange(moveCursorSpec);
}
- return{opSpecsA:[moveCursorSpec], opSpecsB:[removeTextSpec]}
+ return {opSpecsA:[moveCursorSpec], opSpecsB:[removeTextSpec]};
}
function transformMoveCursorSplitParagraph(moveCursorSpec, splitParagraphSpec) {
var isMoveCursorSpecRangeInverted = invertMoveCursorSpecRangeOnNegativeLength(moveCursorSpec);
- if(splitParagraphSpec.position < moveCursorSpec.position) {
- moveCursorSpec.position += 1
- }else {
- if(splitParagraphSpec.position < moveCursorSpec.position + moveCursorSpec.length) {
- moveCursorSpec.length += 1
+ if (splitParagraphSpec.position < moveCursorSpec.position) {
+ moveCursorSpec.position += 1;
+ } else {
+ if (splitParagraphSpec.position < moveCursorSpec.position + moveCursorSpec.length) {
+ moveCursorSpec.length += 1;
}
}
- if(isMoveCursorSpecRangeInverted) {
- invertMoveCursorSpecRange(moveCursorSpec)
+ if (isMoveCursorSpecRangeInverted) {
+ invertMoveCursorSpecRange(moveCursorSpec);
}
- return{opSpecsA:[moveCursorSpec], opSpecsB:[splitParagraphSpec]}
+ return {opSpecsA:[moveCursorSpec], opSpecsB:[splitParagraphSpec]};
+ }
+ function transformRemoveAnnotationRemoveAnnotation(removeAnnotationSpecA, removeAnnotationSpecB) {
+ var removeAnnotationSpecAResult = [removeAnnotationSpecA], removeAnnotationSpecBResult = [removeAnnotationSpecB];
+ if (removeAnnotationSpecA.position === removeAnnotationSpecB.position && removeAnnotationSpecA.length === removeAnnotationSpecB.length) {
+ removeAnnotationSpecAResult = [];
+ removeAnnotationSpecBResult = [];
+ } else {
+ if (removeAnnotationSpecA.position < removeAnnotationSpecB.position) {
+ removeAnnotationSpecB.position -= removeAnnotationSpecA.length + 2;
+ } else {
+ removeAnnotationSpecA.position -= removeAnnotationSpecB.length + 2;
+ }
+ }
+ return {opSpecsA:removeAnnotationSpecAResult, opSpecsB:removeAnnotationSpecBResult};
+ }
+ function transformRemoveAnnotationRemoveText(removeAnnotationSpec, removeTextSpec) {
+ var removeAnnotationEnd = removeAnnotationSpec.position + removeAnnotationSpec.length, removeTextSpecEnd = removeTextSpec.position + removeTextSpec.length, removeAnnotationSpecResult = [removeAnnotationSpec], removeTextSpecResult = [removeTextSpec];
+ if (removeAnnotationSpec.position <= removeTextSpec.position && removeTextSpecEnd <= removeAnnotationEnd) {
+ removeTextSpecResult = [];
+ removeAnnotationSpec.length -= removeTextSpec.length;
+ } else {
+ if (removeTextSpecEnd < removeAnnotationSpec.position) {
+ removeAnnotationSpec.position -= removeTextSpec.length;
+ } else {
+ if (removeTextSpec.position < removeAnnotationSpec.position) {
+ removeAnnotationSpec.position = removeTextSpec.position + 1;
+ removeTextSpec.length -= removeAnnotationSpec.length + 2;
+ } else {
+ removeTextSpec.position -= removeAnnotationSpec.length + 2;
+ }
+ }
+ }
+ return {opSpecsA:removeAnnotationSpecResult, opSpecsB:removeTextSpecResult};
+ }
+ function transformRemoveAnnotationSetParagraphStyle(removeAnnotationSpec, setParagraphStyleSpec) {
+ var setParagraphStyleSpecPosition = setParagraphStyleSpec.position, removeAnnotationEnd = removeAnnotationSpec.position + removeAnnotationSpec.length, removeAnnotationSpecResult = [removeAnnotationSpec], setParagraphStyleSpecResult = [setParagraphStyleSpec];
+ if (removeAnnotationSpec.position <= setParagraphStyleSpecPosition && setParagraphStyleSpecPosition <= removeAnnotationEnd) {
+ setParagraphStyleSpecResult = [];
+ } else {
+ if (removeAnnotationEnd < setParagraphStyleSpecPosition) {
+ setParagraphStyleSpec.position -= removeAnnotationSpec.length + 2;
+ }
+ }
+ return {opSpecsA:removeAnnotationSpecResult, opSpecsB:setParagraphStyleSpecResult};
+ }
+ function transformRemoveAnnotationSplitParagraph(removeAnnotationSpec, splitParagraphSpec) {
+ var splitParagraphSpecPosition = splitParagraphSpec.position, removeAnnotationEnd = removeAnnotationSpec.position + removeAnnotationSpec.length, removeAnnotationSpecResult = [removeAnnotationSpec], splitParagraphSpecResult = [splitParagraphSpec];
+ if (removeAnnotationSpec.position <= splitParagraphSpecPosition && splitParagraphSpecPosition <= removeAnnotationEnd) {
+ splitParagraphSpecResult = [];
+ removeAnnotationSpec.length += 1;
+ } else {
+ if (removeAnnotationEnd < splitParagraphSpec.sourceParagraphPosition) {
+ splitParagraphSpec.sourceParagraphPosition -= removeAnnotationSpec.length + 2;
+ }
+ if (removeAnnotationEnd < splitParagraphSpecPosition) {
+ splitParagraphSpec.position -= removeAnnotationSpec.length + 2;
+ } else {
+ removeAnnotationSpec.position += 1;
+ }
+ }
+ return {opSpecsA:removeAnnotationSpecResult, opSpecsB:splitParagraphSpecResult};
}
function transformRemoveCursorRemoveCursor(removeCursorSpecA, removeCursorSpecB) {
var isSameMemberid = removeCursorSpecA.memberid === removeCursorSpecB.memberid;
- return{opSpecsA:isSameMemberid ? [] : [removeCursorSpecA], opSpecsB:isSameMemberid ? [] : [removeCursorSpecB]}
+ return {opSpecsA:isSameMemberid ? [] : [removeCursorSpecA], opSpecsB:isSameMemberid ? [] : [removeCursorSpecB]};
}
function transformRemoveStyleRemoveStyle(removeStyleSpecA, removeStyleSpecB) {
var isSameStyle = removeStyleSpecA.styleName === removeStyleSpecB.styleName && removeStyleSpecA.styleFamily === removeStyleSpecB.styleFamily;
- return{opSpecsA:isSameStyle ? [] : [removeStyleSpecA], opSpecsB:isSameStyle ? [] : [removeStyleSpecB]}
+ return {opSpecsA:isSameStyle ? [] : [removeStyleSpecA], opSpecsB:isSameStyle ? [] : [removeStyleSpecB]};
}
function transformRemoveStyleSetParagraphStyle(removeStyleSpec, setParagraphStyleSpec) {
var helperOpspec, removeStyleSpecResult = [removeStyleSpec], setParagraphStyleSpecResult = [setParagraphStyleSpec];
- if(removeStyleSpec.styleFamily === "paragraph" && removeStyleSpec.styleName === setParagraphStyleSpec.styleName) {
+ if (removeStyleSpec.styleFamily === "paragraph" && removeStyleSpec.styleName === setParagraphStyleSpec.styleName) {
helperOpspec = {optype:"SetParagraphStyle", memberid:removeStyleSpec.memberid, timestamp:removeStyleSpec.timestamp, position:setParagraphStyleSpec.position, styleName:""};
removeStyleSpecResult.unshift(helperOpspec);
- setParagraphStyleSpec.styleName = ""
+ setParagraphStyleSpec.styleName = "";
}
- return{opSpecsA:removeStyleSpecResult, opSpecsB:setParagraphStyleSpecResult}
+ return {opSpecsA:removeStyleSpecResult, opSpecsB:setParagraphStyleSpecResult};
}
function transformRemoveStyleUpdateParagraphStyle(removeStyleSpec, updateParagraphStyleSpec) {
var setAttributes, helperOpspec, removeStyleSpecResult = [removeStyleSpec], updateParagraphStyleSpecResult = [updateParagraphStyleSpec];
- if(removeStyleSpec.styleFamily === "paragraph") {
+ if (removeStyleSpec.styleFamily === "paragraph") {
setAttributes = getStyleReferencingAttributes(updateParagraphStyleSpec.setProperties, removeStyleSpec.styleName);
- if(setAttributes.length > 0) {
+ if (setAttributes.length > 0) {
helperOpspec = {optype:"UpdateParagraphStyle", memberid:removeStyleSpec.memberid, timestamp:removeStyleSpec.timestamp, styleName:updateParagraphStyleSpec.styleName, removedProperties:{attributes:setAttributes.join(",")}};
- removeStyleSpecResult.unshift(helperOpspec)
+ removeStyleSpecResult.unshift(helperOpspec);
}
- if(removeStyleSpec.styleName === updateParagraphStyleSpec.styleName) {
- updateParagraphStyleSpecResult = []
- }else {
- dropStyleReferencingAttributes(updateParagraphStyleSpec.setProperties, removeStyleSpec.styleName)
+ if (removeStyleSpec.styleName === updateParagraphStyleSpec.styleName) {
+ updateParagraphStyleSpecResult = [];
+ } else {
+ dropStyleReferencingAttributes(updateParagraphStyleSpec.setProperties, removeStyleSpec.styleName);
}
}
- return{opSpecsA:removeStyleSpecResult, opSpecsB:updateParagraphStyleSpecResult}
+ return {opSpecsA:removeStyleSpecResult, opSpecsB:updateParagraphStyleSpecResult};
}
function transformRemoveTextRemoveText(removeTextSpecA, removeTextSpecB) {
var removeTextSpecAEnd = removeTextSpecA.position + removeTextSpecA.length, removeTextSpecBEnd = removeTextSpecB.position + removeTextSpecB.length, removeTextSpecAResult = [removeTextSpecA], removeTextSpecBResult = [removeTextSpecB];
- if(removeTextSpecBEnd <= removeTextSpecA.position) {
- removeTextSpecA.position -= removeTextSpecB.length
- }else {
- if(removeTextSpecAEnd <= removeTextSpecB.position) {
- removeTextSpecB.position -= removeTextSpecA.length
- }else {
- if(removeTextSpecB.position < removeTextSpecAEnd) {
- if(removeTextSpecA.position < removeTextSpecB.position) {
- if(removeTextSpecBEnd < removeTextSpecAEnd) {
- removeTextSpecA.length = removeTextSpecA.length - removeTextSpecB.length
- }else {
- removeTextSpecA.length = removeTextSpecB.position - removeTextSpecA.position
+ if (removeTextSpecBEnd <= removeTextSpecA.position) {
+ removeTextSpecA.position -= removeTextSpecB.length;
+ } else {
+ if (removeTextSpecAEnd <= removeTextSpecB.position) {
+ removeTextSpecB.position -= removeTextSpecA.length;
+ } else {
+ if (removeTextSpecB.position < removeTextSpecAEnd) {
+ if (removeTextSpecA.position < removeTextSpecB.position) {
+ if (removeTextSpecBEnd < removeTextSpecAEnd) {
+ removeTextSpecA.length = removeTextSpecA.length - removeTextSpecB.length;
+ } else {
+ removeTextSpecA.length = removeTextSpecB.position - removeTextSpecA.position;
}
- if(removeTextSpecAEnd < removeTextSpecBEnd) {
+ if (removeTextSpecAEnd < removeTextSpecBEnd) {
removeTextSpecB.position = removeTextSpecA.position;
- removeTextSpecB.length = removeTextSpecBEnd - removeTextSpecAEnd
- }else {
- removeTextSpecBResult = []
+ removeTextSpecB.length = removeTextSpecBEnd - removeTextSpecAEnd;
+ } else {
+ removeTextSpecBResult = [];
}
- }else {
- if(removeTextSpecAEnd < removeTextSpecBEnd) {
- removeTextSpecB.length = removeTextSpecB.length - removeTextSpecA.length
- }else {
- if(removeTextSpecB.position < removeTextSpecA.position) {
- removeTextSpecB.length = removeTextSpecA.position - removeTextSpecB.position
- }else {
- removeTextSpecBResult = []
+ } else {
+ if (removeTextSpecAEnd < removeTextSpecBEnd) {
+ removeTextSpecB.length = removeTextSpecB.length - removeTextSpecA.length;
+ } else {
+ if (removeTextSpecB.position < removeTextSpecA.position) {
+ removeTextSpecB.length = removeTextSpecA.position - removeTextSpecB.position;
+ } else {
+ removeTextSpecBResult = [];
}
}
- if(removeTextSpecBEnd < removeTextSpecAEnd) {
+ if (removeTextSpecBEnd < removeTextSpecAEnd) {
removeTextSpecA.position = removeTextSpecB.position;
- removeTextSpecA.length = removeTextSpecAEnd - removeTextSpecBEnd
- }else {
- removeTextSpecAResult = []
+ removeTextSpecA.length = removeTextSpecAEnd - removeTextSpecBEnd;
+ } else {
+ removeTextSpecAResult = [];
}
}
}
}
}
- return{opSpecsA:removeTextSpecAResult, opSpecsB:removeTextSpecBResult}
+ return {opSpecsA:removeTextSpecAResult, opSpecsB:removeTextSpecBResult};
+ }
+ function transformRemoveTextSetParagraphStyle(removeTextSpec, setParagraphStyleSpec) {
+ if (removeTextSpec.position < setParagraphStyleSpec.position) {
+ setParagraphStyleSpec.position -= removeTextSpec.length;
+ }
+ return {opSpecsA:[removeTextSpec], opSpecsB:[setParagraphStyleSpec]};
}
function transformRemoveTextSplitParagraph(removeTextSpec, splitParagraphSpec) {
var removeTextSpecEnd = removeTextSpec.position + removeTextSpec.length, helperOpspec, removeTextSpecResult = [removeTextSpec], splitParagraphSpecResult = [splitParagraphSpec];
- if(splitParagraphSpec.position <= removeTextSpec.position) {
- removeTextSpec.position += 1
- }else {
- if(splitParagraphSpec.position < removeTextSpecEnd) {
+ if (splitParagraphSpec.position <= removeTextSpec.position) {
+ removeTextSpec.position += 1;
+ } else {
+ if (splitParagraphSpec.position < removeTextSpecEnd) {
removeTextSpec.length = splitParagraphSpec.position - removeTextSpec.position;
helperOpspec = {optype:"RemoveText", memberid:removeTextSpec.memberid, timestamp:removeTextSpec.timestamp, position:splitParagraphSpec.position + 1, length:removeTextSpecEnd - splitParagraphSpec.position};
- removeTextSpecResult.unshift(helperOpspec)
+ removeTextSpecResult.unshift(helperOpspec);
}
}
- if(removeTextSpec.position + removeTextSpec.length <= splitParagraphSpec.position) {
- splitParagraphSpec.position -= removeTextSpec.length
- }else {
- if(removeTextSpec.position < splitParagraphSpec.position) {
- splitParagraphSpec.position = removeTextSpec.position
+ if (removeTextSpec.position + removeTextSpec.length <= splitParagraphSpec.position) {
+ splitParagraphSpec.position -= removeTextSpec.length;
+ } else {
+ if (removeTextSpec.position < splitParagraphSpec.position) {
+ splitParagraphSpec.position = removeTextSpec.position;
}
}
- return{opSpecsA:removeTextSpecResult, opSpecsB:splitParagraphSpecResult}
+ if (removeTextSpec.position + removeTextSpec.length < splitParagraphSpec.sourceParagraphPosition) {
+ splitParagraphSpec.sourceParagraphPosition -= removeTextSpec.length;
+ }
+ return {opSpecsA:removeTextSpecResult, opSpecsB:splitParagraphSpecResult};
}
function passUnchanged(opSpecA, opSpecB) {
- return{opSpecsA:[opSpecA], opSpecsB:[opSpecB]}
+ return {opSpecsA:[opSpecA], opSpecsB:[opSpecB]};
}
var transformations;
- transformations = {"AddCursor":{"AddCursor":passUnchanged, "AddMember":passUnchanged, "AddStyle":passUnchanged, "ApplyDirectStyling":passUnchanged, "InsertText":passUnchanged, "MoveCursor":passUnchanged, "RemoveCursor":passUnchanged, "RemoveMember":passUnchanged, "RemoveStyle":passUnchanged, "RemoveText":passUnchanged, "SetParagraphStyle":passUnchanged, "SplitParagraph":passUnchanged, "UpdateMember":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged}, "AddMember":{"AddStyle":passUnchanged,
- "InsertText":passUnchanged, "MoveCursor":passUnchanged, "RemoveCursor":passUnchanged, "RemoveStyle":passUnchanged, "RemoveText":passUnchanged, "SetParagraphStyle":passUnchanged, "SplitParagraph":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged}, "AddStyle":{"AddStyle":passUnchanged, "ApplyDirectStyling":passUnchanged, "InsertText":passUnchanged, "MoveCursor":passUnchanged, "RemoveCursor":passUnchanged, "RemoveMember":passUnchanged, "RemoveStyle":transformAddStyleRemoveStyle,
- "RemoveText":passUnchanged, "SetParagraphStyle":passUnchanged, "SplitParagraph":passUnchanged, "UpdateMember":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged}, "ApplyDirectStyling":{"ApplyDirectStyling":transformApplyDirectStylingApplyDirectStyling, "InsertText":transformApplyDirectStylingInsertText, "MoveCursor":passUnchanged, "RemoveCursor":passUnchanged, "RemoveStyle":passUnchanged, "RemoveText":transformApplyDirectStylingRemoveText, "SetParagraphStyle":passUnchanged,
- "SplitParagraph":transformApplyDirectStylingSplitParagraph, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged}, "InsertText":{"InsertText":transformInsertTextInsertText, "MoveCursor":transformInsertTextMoveCursor, "RemoveCursor":passUnchanged, "RemoveMember":passUnchanged, "RemoveStyle":passUnchanged, "RemoveText":transformInsertTextRemoveText, "SplitParagraph":transformInsertTextSplitParagraph, "UpdateMember":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged},
- "MoveCursor":{"MoveCursor":passUnchanged, "RemoveCursor":transformMoveCursorRemoveCursor, "RemoveMember":passUnchanged, "RemoveStyle":passUnchanged, "RemoveText":transformMoveCursorRemoveText, "SetParagraphStyle":passUnchanged, "SplitParagraph":transformMoveCursorSplitParagraph, "UpdateMember":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged}, "RemoveCursor":{"RemoveCursor":transformRemoveCursorRemoveCursor, "RemoveMember":passUnchanged, "RemoveStyle":passUnchanged,
- "RemoveText":passUnchanged, "SetParagraphStyle":passUnchanged, "SplitParagraph":passUnchanged, "UpdateMember":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged}, "RemoveMember":{"RemoveStyle":passUnchanged, "RemoveText":passUnchanged, "SetParagraphStyle":passUnchanged, "SplitParagraph":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged}, "RemoveStyle":{"RemoveStyle":transformRemoveStyleRemoveStyle, "RemoveText":passUnchanged, "SetParagraphStyle":transformRemoveStyleSetParagraphStyle,
- "SplitParagraph":passUnchanged, "UpdateMember":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":transformRemoveStyleUpdateParagraphStyle}, "RemoveText":{"RemoveText":transformRemoveTextRemoveText, "SplitParagraph":transformRemoveTextSplitParagraph, "UpdateMember":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged}, "SetParagraphStyle":{"UpdateMember":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged}, "SplitParagraph":{"SplitParagraph":transformSplitParagraphSplitParagraph,
- "UpdateMember":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged}, "UpdateMember":{"UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged}, "UpdateMetadata":{"UpdateMetadata":transformUpdateMetadataUpdateMetadata, "UpdateParagraphStyle":passUnchanged}, "UpdateParagraphStyle":{"UpdateParagraphStyle":transformUpdateParagraphStyleUpdateParagraphStyle}};
+ transformations = {"AddAnnotation":{"AddAnnotation":transformAddAnnotationAddAnnotation, "AddCursor":passUnchanged, "AddMember":passUnchanged, "AddStyle":passUnchanged, "ApplyDirectStyling":transformAddAnnotationApplyDirectStyling, "InsertText":transformAddAnnotationInsertText, "MergeParagraph":transformAddAnnotationMergeParagraph, "MoveCursor":transformAddAnnotationMoveCursor, "RemoveAnnotation":transformAddAnnotationRemoveAnnotation, "RemoveCursor":passUnchanged, "RemoveMember":passUnchanged,
+ "RemoveStyle":passUnchanged, "RemoveText":transformAddAnnotationRemoveText, "SetParagraphStyle":transformAddAnnotationSetParagraphStyle, "SplitParagraph":transformAddAnnotationSplitParagraph, "UpdateMember":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged}, "AddCursor":{"AddCursor":passUnchanged, "AddMember":passUnchanged, "AddStyle":passUnchanged, "ApplyDirectStyling":passUnchanged, "InsertText":passUnchanged, "MergeParagraph":passUnchanged, "MoveCursor":passUnchanged,
+ "RemoveAnnotation":passUnchanged, "RemoveCursor":passUnchanged, "RemoveMember":passUnchanged, "RemoveStyle":passUnchanged, "RemoveText":passUnchanged, "SetParagraphStyle":passUnchanged, "SplitParagraph":passUnchanged, "UpdateMember":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged}, "AddMember":{"AddStyle":passUnchanged, "ApplyDirectStyling":passUnchanged, "InsertText":passUnchanged, "MergeParagraph":passUnchanged, "MoveCursor":passUnchanged, "RemoveAnnotation":passUnchanged,
+ "RemoveCursor":passUnchanged, "RemoveStyle":passUnchanged, "RemoveText":passUnchanged, "SetParagraphStyle":passUnchanged, "SplitParagraph":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged}, "AddStyle":{"AddStyle":passUnchanged, "ApplyDirectStyling":passUnchanged, "InsertText":passUnchanged, "MergeParagraph":passUnchanged, "MoveCursor":passUnchanged, "RemoveAnnotation":passUnchanged, "RemoveCursor":passUnchanged, "RemoveMember":passUnchanged, "RemoveStyle":transformAddStyleRemoveStyle,
+ "RemoveText":passUnchanged, "SetParagraphStyle":passUnchanged, "SplitParagraph":passUnchanged, "UpdateMember":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged}, "ApplyDirectStyling":{"ApplyDirectStyling":transformApplyDirectStylingApplyDirectStyling, "InsertText":transformApplyDirectStylingInsertText, "MergeParagraph":transformApplyDirectStylingMergeParagraph, "MoveCursor":passUnchanged, "RemoveAnnotation":transformApplyDirectStylingRemoveAnnotation, "RemoveCursor":passUnchanged,
+ "RemoveMember":passUnchanged, "RemoveStyle":passUnchanged, "RemoveText":transformApplyDirectStylingRemoveText, "SetParagraphStyle":passUnchanged, "SplitParagraph":transformApplyDirectStylingSplitParagraph, "UpdateMember":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged}, "InsertText":{"InsertText":transformInsertTextInsertText, "MergeParagraph":transformInsertTextMergeParagraph, "MoveCursor":transformInsertTextMoveCursor, "RemoveAnnotation":transformInsertTextRemoveAnnotation,
+ "RemoveCursor":passUnchanged, "RemoveMember":passUnchanged, "RemoveStyle":passUnchanged, "RemoveText":transformInsertTextRemoveText, "SetParagraphStyle":transformInsertTextSetParagraphStyle, "SplitParagraph":transformInsertTextSplitParagraph, "UpdateMember":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged}, "MergeParagraph":{"MergeParagraph":transformMergeParagraphMergeParagraph, "MoveCursor":transformMergeParagraphMoveCursor, "RemoveAnnotation":transformMergeParagraphRemoveAnnotation,
+ "RemoveCursor":passUnchanged, "RemoveMember":passUnchanged, "RemoveStyle":passUnchanged, "RemoveText":transformMergeParagraphRemoveText, "SetParagraphStyle":transformMergeParagraphSetParagraphStyle, "SplitParagraph":transformMergeParagraphSplitParagraph, "UpdateMember":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged}, "MoveCursor":{"MoveCursor":passUnchanged, "RemoveAnnotation":transformMoveCursorRemoveAnnotation, "RemoveCursor":transformMoveCursorRemoveCursor,
+ "RemoveMember":passUnchanged, "RemoveStyle":passUnchanged, "RemoveText":transformMoveCursorRemoveText, "SetParagraphStyle":passUnchanged, "SplitParagraph":transformMoveCursorSplitParagraph, "UpdateMember":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged}, "RemoveAnnotation":{"RemoveAnnotation":transformRemoveAnnotationRemoveAnnotation, "RemoveCursor":passUnchanged, "RemoveMember":passUnchanged, "RemoveStyle":passUnchanged, "RemoveText":transformRemoveAnnotationRemoveText,
+ "SetParagraphStyle":transformRemoveAnnotationSetParagraphStyle, "SplitParagraph":transformRemoveAnnotationSplitParagraph, "UpdateMember":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged}, "RemoveCursor":{"RemoveCursor":transformRemoveCursorRemoveCursor, "RemoveMember":passUnchanged, "RemoveStyle":passUnchanged, "RemoveText":passUnchanged, "SetParagraphStyle":passUnchanged, "SplitParagraph":passUnchanged, "UpdateMember":passUnchanged, "UpdateMetadata":passUnchanged,
+ "UpdateParagraphStyle":passUnchanged}, "RemoveMember":{"RemoveStyle":passUnchanged, "RemoveText":passUnchanged, "SetParagraphStyle":passUnchanged, "SplitParagraph":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged}, "RemoveStyle":{"RemoveStyle":transformRemoveStyleRemoveStyle, "RemoveText":passUnchanged, "SetParagraphStyle":transformRemoveStyleSetParagraphStyle, "SplitParagraph":passUnchanged, "UpdateMember":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":transformRemoveStyleUpdateParagraphStyle},
+ "RemoveText":{"RemoveText":transformRemoveTextRemoveText, "SetParagraphStyle":transformRemoveTextSetParagraphStyle, "SplitParagraph":transformRemoveTextSplitParagraph, "UpdateMember":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged}, "SetParagraphStyle":{"SetParagraphStyle":transformSetParagraphStyleSetParagraphStyle, "SplitParagraph":transformSetParagraphStyleSplitParagraph, "UpdateMember":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged},
+ "SplitParagraph":{"SplitParagraph":transformSplitParagraphSplitParagraph, "UpdateMember":passUnchanged, "UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged}, "UpdateMember":{"UpdateMetadata":passUnchanged, "UpdateParagraphStyle":passUnchanged}, "UpdateMetadata":{"UpdateMetadata":transformUpdateMetadataUpdateMetadata, "UpdateParagraphStyle":passUnchanged}, "UpdateParagraphStyle":{"UpdateParagraphStyle":transformUpdateParagraphStyleUpdateParagraphStyle}};
this.passUnchanged = passUnchanged;
this.extendTransformations = function(moreTransformations) {
Object.keys(moreTransformations).forEach(function(optypeA) {
var moreTransformationsOptypeAMap = moreTransformations[optypeA], optypeAMap, isExtendingOptypeAMap = transformations.hasOwnProperty(optypeA);
runtime.log((isExtendingOptypeAMap ? "Extending" : "Adding") + " map for optypeA: " + optypeA);
- if(!isExtendingOptypeAMap) {
- transformations[optypeA] = {}
+ if (!isExtendingOptypeAMap) {
+ transformations[optypeA] = {};
}
optypeAMap = transformations[optypeA];
Object.keys(moreTransformationsOptypeAMap).forEach(function(optypeB) {
var isOverwritingOptypeBEntry = optypeAMap.hasOwnProperty(optypeB);
runtime.assert(optypeA <= optypeB, "Wrong order:" + optypeA + ", " + optypeB);
runtime.log(" " + (isOverwritingOptypeBEntry ? "Overwriting" : "Adding") + " entry for optypeB: " + optypeB);
- optypeAMap[optypeB] = moreTransformationsOptypeAMap[optypeB]
- })
- })
+ optypeAMap[optypeB] = moreTransformationsOptypeAMap[optypeB];
+ });
+ });
};
this.transformOpspecVsOpspec = function(opSpecA, opSpecB) {
var isOptypeAAlphaNumericSmaller = opSpecA.optype <= opSpecB.optype, helper, transformationFunctionMap, transformationFunction, result;
runtime.log("Crosstransforming:");
runtime.log(runtime.toJson(opSpecA));
runtime.log(runtime.toJson(opSpecB));
- if(!isOptypeAAlphaNumericSmaller) {
+ if (!isOptypeAAlphaNumericSmaller) {
helper = opSpecA;
opSpecA = opSpecB;
- opSpecB = helper
+ opSpecB = helper;
}
transformationFunctionMap = transformations[opSpecA.optype];
transformationFunction = transformationFunctionMap && transformationFunctionMap[opSpecB.optype];
- if(transformationFunction) {
+ if (transformationFunction) {
result = transformationFunction(opSpecA, opSpecB, !isOptypeAAlphaNumericSmaller);
- if(!isOptypeAAlphaNumericSmaller && result !== null) {
- result = {opSpecsA:result.opSpecsB, opSpecsB:result.opSpecsA}
+ if (!isOptypeAAlphaNumericSmaller && result !== null) {
+ result = {opSpecsA:result.opSpecsB, opSpecsB:result.opSpecsA};
}
- }else {
- result = null
+ } else {
+ result = null;
}
runtime.log("result:");
- if(result) {
+ if (result) {
runtime.log(runtime.toJson(result.opSpecsA));
- runtime.log(runtime.toJson(result.opSpecsB))
- }else {
- runtime.log("null")
+ runtime.log(runtime.toJson(result.opSpecsB));
+ } else {
+ runtime.log("null");
}
- return result
- }
+ return result;
+ };
};
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- This file is part of WebODF.
-
- WebODF is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License (GNU AGPL)
- as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- WebODF is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with WebODF. If not, see <http://www.gnu.org/licenses/>.
- @licend
-
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
ops.OperationTransformer = function OperationTransformer() {
- var operationFactory, operationTransformMatrix = new ops.OperationTransformMatrix;
- function operations(opspecs) {
- var ops = [];
- opspecs.forEach(function(opspec) {
- ops.push(operationFactory.create(opspec))
- });
- return ops
- }
+ var operationTransformMatrix = new ops.OperationTransformMatrix;
function transformOpVsOp(opSpecA, opSpecB) {
- return operationTransformMatrix.transformOpspecVsOpspec(opSpecA, opSpecB)
+ return operationTransformMatrix.transformOpspecVsOpspec(opSpecA, opSpecB);
}
function transformOpListVsOp(opSpecsA, opSpecB) {
var transformResult, transformListResult, transformedOpspecsA = [], transformedOpspecsB = [];
- while(opSpecsA.length > 0 && opSpecB) {
+ while (opSpecsA.length > 0 && opSpecB) {
transformResult = transformOpVsOp(opSpecsA.shift(), opSpecB);
- if(!transformResult) {
- return null
+ if (!transformResult) {
+ return null;
}
transformedOpspecsA = transformedOpspecsA.concat(transformResult.opSpecsA);
- if(transformResult.opSpecsB.length === 0) {
+ if (transformResult.opSpecsB.length === 0) {
transformedOpspecsA = transformedOpspecsA.concat(opSpecsA);
opSpecB = null;
- break
+ break;
}
- while(transformResult.opSpecsB.length > 1) {
+ while (transformResult.opSpecsB.length > 1) {
transformListResult = transformOpListVsOp(opSpecsA, transformResult.opSpecsB.shift());
- if(!transformListResult) {
- return null
+ if (!transformListResult) {
+ return null;
}
transformedOpspecsB = transformedOpspecsB.concat(transformListResult.opSpecsB);
- opSpecsA = transformListResult.opSpecsA
+ opSpecsA = transformListResult.opSpecsA;
}
- opSpecB = transformResult.opSpecsB.pop()
+ opSpecB = transformResult.opSpecsB.pop();
}
- if(opSpecB) {
- transformedOpspecsB.push(opSpecB)
+ if (opSpecB) {
+ transformedOpspecsB.push(opSpecB);
}
- return{opSpecsA:transformedOpspecsA, opSpecsB:transformedOpspecsB}
+ return {opSpecsA:transformedOpspecsA, opSpecsB:transformedOpspecsB};
}
- this.setOperationFactory = function(f) {
- operationFactory = f
- };
this.getOperationTransformMatrix = function() {
- return operationTransformMatrix
+ return operationTransformMatrix;
};
this.transform = function(opSpecsA, opSpecsB) {
var transformResult, transformedOpspecsB = [];
- while(opSpecsB.length > 0) {
+ while (opSpecsB.length > 0) {
transformResult = transformOpListVsOp(opSpecsA, opSpecsB.shift());
- if(!transformResult) {
- return null
+ if (!transformResult) {
+ return null;
}
opSpecsA = transformResult.opSpecsA;
- transformedOpspecsB = transformedOpspecsB.concat(transformResult.opSpecsB)
+ transformedOpspecsB = transformedOpspecsB.concat(transformResult.opSpecsB);
}
- return{opsA:operations(opSpecsA), opsB:operations(transformedOpspecsB)}
- }
-};
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.Server = function Server() {
-};
-ops.Server.prototype.connect = function(timeout, cb) {
-};
-ops.Server.prototype.networkStatus = function() {
-};
-ops.Server.prototype.login = function(login, password, successCb, failCb) {
-};
-ops.Server.prototype.joinSession = function(userId, sessionId, successCb, failCb) {
-};
-ops.Server.prototype.leaveSession = function(sessionId, memberId, successCb, failCb) {
-};
-ops.Server.prototype.getGenesisUrl = function(sessionId) {
+ return {opSpecsA:(opSpecsA), opSpecsB:(transformedOpspecsB)};
+ };
};
-var webodf_css = '@namespace draw url(urn:oasis:names:tc:opendocument:xmlns:drawing:1.0);\n@namespace fo url(urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0);\n@namespace office url(urn:oasis:names:tc:opendocument:xmlns:office:1.0);\n@namespace presentation url(urn:oasis:names:tc:opendocument:xmlns:presentation:1.0);\n@namespace style url(urn:oasis:names:tc:opendocument:xmlns:style:1.0);\n@namespace svg url(urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0);\n@namespace table url(urn:oasis:names:tc:opendocument:xmlns:table:1.0);\n@namespace text url(urn:oasis:names:tc:opendocument:xmlns:text:1.0);\n@namespace webodfhelper url(urn:webodf:names:helper);\n@namespace cursor url(urn:webodf:names:cursor);\n@namespace editinfo url(urn:webodf:names:editinfo);\n@namespace annotation url(urn:webodf:names:annotation);\n@namespace dc url(http://purl.org/dc/elements/1.1/);\n@namespace svgns url(http://www.w3.org/2000/svg);\n\noffice|document > *, office|document-content > * {\n display: none;\n}\noffice|body, office|document {\n display: inline-block;\n position: relative;\n}\n\ntext|p, text|h {\n display: block;\n padding: 0;\n margin: 0;\n line-height: normal;\n position: relative;\n min-height: 1.3em; /* prevent empty paragraphs and headings from collapsing if they are empty */\n}\n*[webodfhelper|containsparagraphanchor] {\n position: relative;\n}\ntext|s {\n white-space: pre;\n}\ntext|tab {\n display: inline;\n white-space: pre;\n}\ntext|tracked-changes {\n /*Consumers that do not support change tracking, should ignore changes.*/\n display: none;\n}\noffice|binary-data {\n display: none;\n}\noffice|text {\n display: block;\n text-align: left;\n overflow: visible;\n word-wrap: break-word;\n}\n\noffice|text::selection {\n /** Let\'s not draw selection highlight that overflows into the office|text\n * node when selecting content across several paragraphs\n */\n background: transparent;\n}\n\noffice|document *::selection {\n background: transparent;\n}\noffice|document *::-moz-selection {\n background: transparent;\n}\n\noffice|text * draw|text-box {\n/** only for text documents */\n display: block;\n border: 1px solid #d3d3d3;\n}\ndraw|frame {\n /** make sure frames are above the main body. */\n z-index: 1;\n}\noffice|spreadsheet {\n display: block;\n border-collapse: collapse;\n empty-cells: show;\n font-family: sans-serif;\n font-size: 10pt;\n text-align: left;\n page-break-inside: avoid;\n overflow: hidden;\n}\noffice|presentation {\n display: inline-block;\n text-align: left;\n}\n#shadowContent {\n display: inline-block;\n text-align: left;\n}\ndraw|page {\n display: block;\n position: relative;\n overflow: hidden;\n}\npresentation|notes, presentation|footer-decl, presentation|date-time-decl {\n display: none;\n}\n@media print {\n draw|page {\n border: 1pt solid black;\n page-break-inside: avoid;\n }\n presentation|notes {\n /*TODO*/\n }\n}\noffice|spreadsheet text|p {\n border: 0px;\n padding: 1px;\n margin: 0px;\n}\noffice|spreadsheet table|table {\n margin: 3px;\n}\noffice|spreadsheet table|table:after {\n /* show sheet name the end of the sheet */\n /*content: attr(table|name);*/ /* gives parsing error in opera */\n}\noffice|spreadsheet table|table-row {\n counter-increment: row;\n}\noffice|spreadsheet table|table-row:before {\n width: 3em;\n background: #cccccc;\n border: 1px solid black;\n text-align: center;\n content: counter(row);\n display: table-cell;\n}\noffice|spreadsheet table|table-cell {\n border: 1px solid #cccccc;\n}\ntable|table {\n display: table;\n}\ndraw|frame table|table {\n width: 100%;\n height: 100%;\n background: white;\n}\ntable|table-header-rows {\n display: table-header-group;\n}\ntable|table-row {\n display: table-row;\n}\ntable|table-column {\n display: table-column;\n}\ntable|table-cell {\n width: 0.889in;\n display: table-cell;\n word-break: break-all; /* prevent long words from extending out the table cell */\n}\ndraw|frame {\n display: block;\n}\ndraw|image {\n display: block;\n width: 100%;\n height: 100%;\n top: 0px;\n left: 0px;\n background-repeat: no-repeat;\n background-size: 100% 100%;\n -moz-background-size: 100% 100%;\n}\n/* only show the first image in frame */\ndraw|frame > draw|image:nth-of-type(n+2) {\n display: none;\n}\ntext|list:before {\n display: none;\n content:"";\n}\ntext|list {\n counter-reset: list;\n}\ntext|list-item {\n display: block;\n}\ntext|number {\n display:none;\n}\n\ntext|a {\n color: blue;\n text-decoration: underline;\n cursor: pointer;\n}\noffice|text[webodfhelper|links="inactive"] text|a {\n cursor: text;\n}\ntext|note-citation {\n vertical-align: super;\n font-size: smaller;\n}\ntext|note-body {\n display: none;\n}\ntext|note:hover text|note-citation {\n background: #dddddd;\n}\ntext|note:hover text|note-body {\n display: block;\n left:1em;\n max-width: 80%;\n position: absolute;\n background: #ffffaa;\n}\nsvg|title, svg|desc {\n display: none;\n}\nvideo {\n width: 100%;\n height: 100%\n}\n\n/* below set up the cursor */\ncursor|cursor {\n display: inline;\n width: 0;\n height: 1em;\n /* making the position relative enables the avatar to use\n the cursor as reference for its absolute position */\n position: relative;\n z-index: 1;\n pointer-events: none;\n}\n\ncursor|cursor > .caret {\n /* IMPORTANT: when changing these values ensure DEFAULT_CARET_TOP and DEFAULT_CARET_HEIGHT\n in Caret.js remain in sync */\n display: inline;\n position: absolute;\n top: 5%; /* push down the caret; 0px can do the job, 5% looks better, 10% is a bit over */\n height: 1em;\n border-left: 2px solid black;\n outline: none;\n}\n\ncursor|cursor > .handle {\n padding: 3px;\n box-shadow: 0px 0px 5px rgba(50, 50, 50, 0.75);\n border: none !important;\n border-radius: 5px;\n opacity: 0.3;\n}\n\ncursor|cursor > .handle > img {\n border-radius: 5px;\n}\n\ncursor|cursor > .handle.active {\n opacity: 0.8;\n}\n\ncursor|cursor > .handle:after {\n content: \' \';\n position: absolute;\n width: 0px;\n height: 0px;\n border-style: solid;\n border-width: 8.7px 5px 0 5px;\n border-color: black transparent transparent transparent;\n\n top: 100%;\n left: 43%;\n}\n\n/** Input Method Editor input pane & behaviours */\n/* not within a cursor */\n#eventTrap {\n height: auto;\n display: block;\n position: absolute;\n width: 1px;\n outline: none;\n opacity: 0;\n color: rgba(255, 255, 255, 0); /* hide the blinking caret by setting the colour to fully transparent */\n overflow: hidden; /* The overflow visibility is used to hide and show characters being entered */\n pointer-events: none;\n}\n\n/* within a cursor */\ncursor|cursor > #composer {\n text-decoration: underline;\n}\n\ncursor|cursor[cursor|composing="true"] > #composer {\n display: inline-block;\n height: auto;\n width: auto;\n}\n\ncursor|cursor[cursor|composing="true"] {\n display: inline-block;\n width: auto;\n height: inherit;\n}\n\ncursor|cursor[cursor|composing="true"] > .caret {\n /* during composition, the caret should be pushed along by the composition text, inline with the text */\n position: static;\n /* as it is now part of an inline-block, it will no longer need correct to top or height values to align properly */\n height: auto !important;\n top: auto !important;\n}\n\neditinfo|editinfo {\n /* Empty or invisible display:inline elements respond very badly to mouse selection.\n Inline blocks are much more reliably selectable in Chrome & friends */\n display: inline-block;\n}\n\n.editInfoMarker {\n position: absolute;\n width: 10px;\n height: 100%;\n left: -20px;\n opacity: 0.8;\n top: 0;\n border-radius: 5px;\n background-color: transparent;\n box-shadow: 0px 0px 5px rgba(50, 50, 50, 0.75);\n}\n.editInfoMarker:hover {\n box-shadow: 0px 0px 8px rgba(0, 0, 0, 1);\n}\n\n.editInfoHandle {\n position: absolute;\n background-color: black;\n padding: 5px;\n border-radius: 5px;\n opacity: 0.8;\n box-shadow: 0px 0px 5px rgba(50, 50, 50, 0.75);\n bottom: 100%;\n margin-bottom: 10px;\n z-index: 3;\n left: -25px;\n}\n.editInfoHandle:after {\n content: \' \';\n position: absolute;\n width: 0px;\n height: 0px;\n border-style: solid;\n border-width: 8.7px 5px 0 5px;\n border-color: black transparent transparent transparent;\n\n top: 100%;\n left: 5px;\n}\n.editInfo {\n font-family: sans-serif;\n font-weight: normal;\n font-style: normal;\n text-decoration: none;\n color: white;\n width: 100%;\n height: 12pt;\n}\n.editInfoColor {\n float: left;\n width: 10pt;\n height: 10pt;\n border: 1px solid white;\n}\n.editInfoAuthor {\n float: left;\n margin-left: 5pt;\n font-size: 10pt;\n text-align: left;\n height: 12pt;\n line-height: 12pt;\n}\n.editInfoTime {\n float: right;\n margin-left: 30pt;\n font-size: 8pt;\n font-style: italic;\n color: yellow;\n height: 12pt;\n line-height: 12pt;\n}\n\n.annotationWrapper {\n display: inline;\n position: relative;\n}\n\n.annotationRemoveButton:before {\n content: \'\u00d7\';\n color: white;\n padding: 5px;\n line-height: 1em;\n}\n\n.annotationRemoveButton {\n width: 20px;\n height: 20px;\n border-radius: 10px;\n background-color: black;\n box-shadow: 0px 0px 5px rgba(50, 50, 50, 0.75);\n position: absolute;\n top: -10px;\n left: -10px;\n z-index: 3;\n text-align: center;\n font-family: sans-serif;\n font-style: normal;\n font-weight: normal;\n text-decoration: none;\n font-size: 15px;\n}\n.annotationRemoveButton:hover {\n cursor: pointer;\n box-shadow: 0px 0px 5px rgba(0, 0, 0, 1);\n}\n\n.annotationNote {\n width: 4cm;\n position: absolute;\n display: inline;\n z-index: 10;\n}\n.annotationNote > office|annotation {\n display: block;\n text-align: left;\n}\n\n.annotationConnector {\n position: absolute;\n display: inline;\n z-index: 2;\n border-top: 1px dashed brown;\n}\n.annotationConnector.angular {\n -moz-transform-origin: left top;\n -webkit-transform-origin: left top;\n -ms-transform-origin: left top;\n transform-origin: left top;\n}\n.annotationConnector.horizontal {\n left: 0;\n}\n.annotationConnector.horizontal:before {\n content: \'\';\n display: inline;\n position: absolute;\n width: 0px;\n height: 0px;\n border-style: solid;\n border-width: 8.7px 5px 0 5px;\n border-color: brown transparent transparent transparent;\n top: -1px;\n left: -5px;\n}\n\noffice|annotation {\n width: 100%;\n height: 100%;\n display: none;\n background: rgb(198, 238, 184);\n background: -moz-linear-gradient(90deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);\n background: -webkit-linear-gradient(90deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);\n background: -o-linear-gradient(90deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);\n background: -ms-linear-gradient(90deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);\n background: linear-gradient(180deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);\n box-shadow: 0 3px 4px -3px #ccc;\n}\n\noffice|annotation > dc|creator {\n display: block;\n font-size: 10pt;\n font-weight: normal;\n font-style: normal;\n font-family: sans-serif;\n color: white;\n background-color: brown;\n padding: 4px;\n}\noffice|annotation > dc|date {\n display: block;\n font-size: 10pt;\n font-weight: normal;\n font-style: normal;\n font-family: sans-serif;\n border: 4px solid transparent;\n color: black;\n}\noffice|annotation > text|list {\n display: block;\n padding: 5px;\n}\n\n/* This is very temporary CSS. This must go once\n * we start bundling webodf-default ODF styles for annotations.\n */\noffice|annotation text|p {\n font-size: 10pt;\n color: black;\n font-weight: normal;\n font-style: normal;\n text-decoration: none;\n font-family: sans-serif;\n}\n\ndc|*::selection {\n background: transparent;\n}\ndc|*::-moz-selection {\n background: transparent;\n}\n\n#annotationsPane {\n background-color: #EAEAEA;\n width: 4cm;\n height: 100%;\n display: none;\n position: absolute;\n outline: 1px solid #ccc;\n}\n\n.annotationHighlight {\n background-color: yellow;\n position: relative;\n}\n\n.selectionOverlay {\n position: absolute;\n pointer-events: none;\n top: 0;\n left: 0;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 15;\n}\n.selectionOverlay > polygon {\n fill-opacity: 0.3;\n stroke-opacity: 0.8;\n stroke-width: 1;\n fill-rule: evenodd;\n}\n\n.selectionOverlay > .draggable {\n fill-opacity: 0.8;\n stroke-opacity: 0;\n stroke-width: 8;\n pointer-events: all;\n display: none;\n\n -moz-transform-origin: center center;\n -webkit-transform-origin: center center;\n -ms-transform-origin: center center;\n transform-origin: center center;\n}\n\n#imageSelector {\n display: none;\n position: absolute;\n border-style: solid;\n border-color: black;\n}\n\n#imageSelector > div {\n width: 5px;\n height: 5px;\n display: block;\n position: absolute;\n border: 1px solid black;\n background-color: #ffffff;\n}\n\n#imageSelector > .topLeft {\n top: -4px;\n left: -4px;\n}\n\n#imageSelector > .topRight {\n top: -4px;\n right: -4px;\n}\n\n#imageSelector > .bottomRight {\n right: -4px;\n bottom: -4px;\n}\n\n#imageSelector > .bottomLeft {\n bottom: -4px;\n left: -4px;\n}\n\n#imageSelector > .topMiddle {\n top: -4px;\n left: 50%;\n margin-left: -2.5px; /* half of the width defined in #imageSelector > div */\n}\n\n#imageSelector > .rightMiddle {\n top: 50%;\n right: -4px;\n margin-top: -2.5px; /* half of the height defined in #imageSelector > div */\n}\n\n#imageSelector > .bottomMiddle {\n bottom: -4px;\n left: 50%;\n margin-left: -2.5px; /* half of the width defined in #imageSelector > div */\n}\n\n#imageSelector > .leftMiddle {\n top: 50%;\n left: -4px;\n margin-top: -2.5px; /* half of the height defined in #imageSelector > div */\n}\n\ndiv.customScrollbars::-webkit-scrollbar\n{\n width: 8px;\n height: 8px;\n background-color: transparent;\n}\n\ndiv.customScrollbars::-webkit-scrollbar-track\n{\n background-color: transparent;\n}\n\ndiv.customScrollbars::-webkit-scrollbar-thumb\n{\n background-color: #444;\n border-radius: 4px;\n}\n';
+var webodf_css = '@namespace draw url(urn:oasis:names:tc:opendocument:xmlns:drawing:1.0);@namespace fo url(urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0);@namespace office url(urn:oasis:names:tc:opendocument:xmlns:office:1.0);@namespace presentation url(urn:oasis:names:tc:opendocument:xmlns:presentation:1.0);@namespace style url(urn:oasis:names:tc:opendocument:xmlns:style:1.0);@namespace svg url(urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0);@namespace table url(urn:oasis:names:tc:opendocument:xmlns:table:1.0);@namespace text url(urn:oasis:names:tc:opendocument:xmlns:text:1.0);@namespace webodfhelper url(urn:webodf:names:helper);@namespace cursor url(urn:webodf:names:cursor);@namespace editinfo url(urn:webodf:names:editinfo);@namespace annotation url(urn:webodf:names:annotation);@namespace dc url(http://purl.org/dc/elements/1.1/);@namespace svgns url(http://www.w3.org/2000/svg);office|document > *, office|document-content > * {display: none;}office|body, office|document {display: inline-block;position: relative;}text|p, text|h {display: block;padding: 0;margin: 0;line-height: normal;position: relative;}text|p::after, text|h::after {content: "\\200B";white-space: pre;}*[webodfhelper|containsparagraphanchor] {position: relative;}text|s {white-space: pre;}text|tab {display: inline;white-space: pre;}text|tracked-changes {display: none;}office|binary-data {display: none;}office|text {display: block;text-align: left;overflow: visible;word-wrap: break-word;}office|text::selection {background: transparent;}.webodf-virtualSelections *::selection {background: transparent;}.webodf-virtualSelections *::-moz-selection {background: transparent;}office|text * draw|text-box {display: block;border: 1px solid #d3d3d3;}office|text draw|frame {z-index: 1;}office|spreadsheet {display: block;border-collapse: collapse;empty-cells: show;font-family: sans-serif;font-size: 10pt;text-align: left;page-break-inside: avoid;overflow: hidden;}office|presentation {display: inline-block;text-align: left;}#shadowContent {display: inline-block;text-align: left;}draw|page {display: block;position: relative;overflow: hidden;}presentation|notes, presentation|footer-decl, presentation|date-time-decl {display: none;}@media print {draw|page {border: 1pt solid black;page-break-inside: avoid;}presentation|notes {}}office|spreadsheet text|p {border: 0px;padding: 1px;margin: 0px;}office|spreadsheet table|table {margin: 3px;}office|spreadsheet table|table:after {}office|spreadsheet table|table-row {counter-increment: row;}office|spreadsheet table|table-row:before {width: 3em;background: #cccccc;border: 1px solid black;text-align: center;content: counter(row);display: table-cell;}office|spreadsheet table|table-cell {border: 1px solid #cccccc;}table|table {display: table;}draw|frame table|table {width: 100%;height: 100%;background: white;}table|table-header-rows {display: table-header-group;}table|table-row {display: table-row;}table|table-column {display: table-column;}table|table-cell {width: 0.889in;display: table-cell;word-break: break-all;}draw|frame {display: block;}draw|image {display: block;width: 100%;height: 100%;top: 0px;left: 0px;background-repeat: no-repeat;background-size: 100% 100%;-moz-background-size: 100% 100%;}draw|frame > draw|image:nth-of-type(n+2) {display: none;}text|list:before {display: none;content:"";}text|list {display: block;}text|list-item {display: block;}text|number {display:none;}text|a {color: blue;text-decoration: underline;cursor: pointer;}.webodf-inactiveLinks text|a {cursor: text;}text|note-citation {vertical-align: super;font-size: smaller;}text|note-body {display: none;}text|note:hover text|note-citation {background: #dddddd;}text|note:hover text|note-body {display: block;left:1em;max-width: 80%;position: absolute;background: #ffffaa;}text|bibliography-source {display: none;}svg|title, svg|desc {display: none;}video {width: 100%;height: 100%}cursor|anchor {display: none;}cursor|cursor {display: none;}.webodf-caretOverlay {position: absolute;top: 5%;height: 1em;z-index: 10;padding-left: 1px;pointer-events: none;}.webodf-caretOverlay .caret {position: absolute;border-left: 2px solid black;top: 0;bottom: 0;right: 0;}.webodf-caretOverlay .handle {position: absolute;margin-top: 5px;padding-top: 3px;margin-left: auto;margin-right: auto;width: 64px;height: 68px;border-radius: 5px;opacity: 0.3;text-align: center;background-color: black;box-shadow: 0px 0px 5px rgb(90, 90, 90);border: 1px solid black;top: -85px;right: -32px;}.webodf-caretOverlay .handle > img {box-shadow: 0px 0px 5px rgb(90, 90, 90) inset;background-color: rgb(200, 200, 200);border-radius: 5px;border: 2px solid;height: 60px;width: 60px;display: block;margin: auto;}.webodf-caretOverlay .handle.active {opacity: 0.8;}.webodf-caretOverlay .handle:after {content: " ";position: absolute;width: 0px;height: 0px;border-style: solid;border-width: 8.7px 5px 0 5px;border-color: black transparent transparent transparent;top: 100%;left: 43%;}.webodf-caretSizer {display: inline-block;width: 0;visibility: hidden;}#eventTrap {display: block;position: absolute;bottom: 0;left: 0;outline: none;opacity: 0;color: rgba(255, 255, 255, 0);pointer-events: none;white-space: pre;overflow: hidden;}cursor|cursor > #composer {text-decoration: underline;}cursor|cursor[cursor|caret-sizer-active="true"],cursor|cursor[cursor|composing="true"] {display: inline;}editinfo|editinfo {display: inline-block;}.editInfoMarker {position: absolute;width: 10px;height: 100%;left: -20px;opacity: 0.8;top: 0;border-radius: 5px;background-color: transparent;box-shadow: 0px 0px 5px rgba(50, 50, 50, 0.75);}.editInfoMarker:hover {box-shadow: 0px 0px 8px rgba(0, 0, 0, 1);}.editInfoHandle {position: absolute;background-color: black;padding: 5px;border-radius: 5px;opacity: 0.8;box-shadow: 0px 0px 5px rgba(50, 50, 50, 0.75);bottom: 100%;margin-bottom: 10px;z-index: 3;left: -25px;}.editInfoHandle:after {content: " ";position: absolute;width: 0px;height: 0px;border-style: solid;border-width: 8.7px 5px 0 5px;border-color: black transparent transparent transparent;top: 100%;left: 5px;}.editInfo {font-family: sans-serif;font-weight: normal;font-style: normal;text-decoration: none;color: white;width: 100%;height: 12pt;}.editInfoColor {float: left;width: 10pt;height: 10pt;border: 1px solid white;}.editInfoAuthor {float: left;margin-left: 5pt;font-size: 10pt;text-align: left;height: 12pt;line-height: 12pt;}.editInfoTime {float: right;margin-left: 30pt;font-size: 8pt;font-style: italic;color: yellow;height: 12pt;line-height: 12pt;}.annotationWrapper {display: inline;position: relative;}.annotationRemoveButton:before {content: "\u00d7";color: white;padding: 5px;line-height: 1em;}.annotationRemoveButton {width: 20px;height: 20px;border-radius: 10px;background-color: black;box-shadow: 0px 0px 5px rgba(50, 50, 50, 0.75);position: absolute;top: -10px;left: -10px;z-index: 3;text-align: center;font-family: sans-serif;font-style: normal;font-weight: normal;text-decoration: none;font-size: 15px;}.annotationRemoveButton:hover {cursor: pointer;box-shadow: 0px 0px 5px rgba(0, 0, 0, 1);}.annotationNote {width: 4cm;position: absolute;display: inline;z-index: 10;top: 0;}.annotationNote > office|annotation {display: block;text-align: left;}.annotationConnector {position: absolute;display: inline;top: 0;z-index: 2;border-top: 1px dashed brown;}.annotationConnector.angular {-moz-transform-origin: left top;-webkit-transform-origin: left top;-ms-transform-origin: left top;transform-origin: left top;}.annotationConnector.horizontal {left: 0;}.annotationConnector.horizontal:before {content: "";display: inline;position: absolute;width: 0px;height: 0px;border-style: solid;border-width: 8.7px 5px 0 5px;border-color: brown transparent transparent transparent;top: -1px;left: -5px;}office|annotation {width: 100%;height: 100%;display: none;background: rgb(198, 238, 184);background: -moz-linear-gradient(90deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);background: -webkit-linear-gradient(90deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);background: -o-linear-gradient(90deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);background: -ms-linear-gradient(90deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);background: linear-gradient(180deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);box-shadow: 0 3px 4px -3px #ccc;}office|annotation > dc|creator {display: block;font-size: 10pt;font-weight: normal;font-style: normal;font-family: sans-serif;color: white;background-color: brown;padding: 4px;}office|annotation > dc|date {display: block;font-size: 10pt;font-weight: normal;font-style: normal;font-family: sans-serif;border: 4px solid transparent;color: black;}office|annotation > text|list {display: block;padding: 5px;}office|annotation text|p {font-size: 10pt;color: black;font-weight: normal;font-style: normal;text-decoration: none;font-family: sans-serif;}#annotationsPane {background-color: #EAEAEA;width: 4cm;height: 100%;display: none;position: absolute;outline: 1px solid #ccc;}.webodf-annotationHighlight {background-color: yellow;position: relative;}.webodf-selectionOverlay {position: absolute;pointer-events: none;top: 0;left: 0;top: 0;left: 0;width: 100%;height: 100%;z-index: 15;}.webodf-selectionOverlay > polygon {fill-opacity: 0.3;stroke-opacity: 0.8;stroke-width: 1;fill-rule: evenodd;}.webodf-selectionOverlay > .webodf-draggable {fill-opacity: 0.8;stroke-opacity: 0;stroke-width: 8;pointer-events: all;display: none;-moz-transform-origin: center center;-webkit-transform-origin: center center;-ms-transform-origin: center center;transform-origin: center center;}#imageSelector {display: none;position: absolute;border-style: solid;border-color: black;}#imageSelector > div {width: 5px;height: 5px;display: block;position: absolute;border: 1px solid black;background-color: #ffffff;}#imageSelector > .topLeft {top: -4px;left: -4px;}#imageSelector > .topRight {top: -4px;right: -4px;}#imageSelector > .bottomRight {right: -4px;bottom: -4px;}#imageSelector > .bottomLeft {bottom: -4px;left: -4px;}#imageSelector > .topMiddle {top: -4px;left: 50%;margin-left: -2.5px;}#imageSelector > .rightMiddle {top: 50%;right: -4px;margin-top: -2.5px;}#imageSelector > .bottomMiddle {bottom: -4px;left: 50%;margin-left: -2.5px;}#imageSelector > .leftMiddle {top: 50%;left: -4px;margin-top: -2.5px;}div.webodf-customScrollbars::-webkit-scrollbar{width: 8px;height: 8px;background-color: transparent;}div.webodf-customScrollbars::-webkit-scrollbar-track{background-color: transparent;}div.webodf-customScrollbars::-webkit-scrollbar-thumb{background-color: #444;border-radius: 4px;}.webodf-hyperlinkTooltip {display: none;color: white;background-color: black;border-radius: 5px;box-shadow: 2px 2px 5px gray;padding: 3px;position: absolute;max-width: 210px;text-align: left;word-break: break-all;z-index: 16;}.webodf-hyperlinkTooltipText {display: block;font-weight: bold;}';
diff --git a/js/3rdparty/webodf/webodf.js b/js/3rdparty/webodf/webodf.js
index bf9a4c59..acab668f 100644
--- a/js/3rdparty/webodf/webodf.js
+++ b/js/3rdparty/webodf/webodf.js
@@ -1,969 +1,11 @@
-// Input 0
-var webodf_version="0.4.2-2050-g8d8fc02-dirty";
-// Input 1
-function Runtime(){}Runtime.prototype.getVariable=function(m){};Runtime.prototype.toJson=function(m){};Runtime.prototype.fromJson=function(m){};Runtime.prototype.byteArrayFromString=function(m,g){};Runtime.prototype.byteArrayToString=function(m,g){};Runtime.prototype.read=function(m,g,b,k){};Runtime.prototype.readFile=function(m,g,b){};Runtime.prototype.readFileSync=function(m,g){};Runtime.prototype.loadXML=function(m,g){};Runtime.prototype.writeFile=function(m,g,b){};
-Runtime.prototype.isFile=function(m,g){};Runtime.prototype.getFileSize=function(m,g){};Runtime.prototype.deleteFile=function(m,g){};Runtime.prototype.log=function(m,g){};Runtime.prototype.setTimeout=function(m,g){};Runtime.prototype.clearTimeout=function(m){};Runtime.prototype.libraryPaths=function(){};Runtime.prototype.currentDirectory=function(){};Runtime.prototype.setCurrentDirectory=function(m){};Runtime.prototype.type=function(){};Runtime.prototype.getDOMImplementation=function(){};
-Runtime.prototype.parseXML=function(m){};Runtime.prototype.exit=function(m){};Runtime.prototype.getWindow=function(){};Runtime.prototype.requestAnimationFrame=function(m){};Runtime.prototype.cancelAnimationFrame=function(m){};Runtime.prototype.assert=function(m,g,b){};var IS_COMPILED_CODE=!0;
-Runtime.byteArrayToString=function(m,g){function b(b){var p="",f,d=b.length;for(f=0;f<d;f+=1)p+=String.fromCharCode(b[f]&255);return p}function k(b){var d="",f,k=b.length,e=[],r,a,c,l;for(f=0;f<k;f+=1)r=b[f],128>r?e.push(r):(f+=1,a=b[f],194<=r&&224>r?e.push((r&31)<<6|a&63):(f+=1,c=b[f],224<=r&&240>r?e.push((r&15)<<12|(a&63)<<6|c&63):(f+=1,l=b[f],240<=r&&245>r&&(r=(r&7)<<18|(a&63)<<12|(c&63)<<6|l&63,r-=65536,e.push((r>>10)+55296,(r&1023)+56320))))),1E3===e.length&&(d+=String.fromCharCode.apply(null,
-e),e.length=0);return d+String.fromCharCode.apply(null,e)}var d;"utf8"===g?d=k(m):("binary"!==g&&this.log("Unsupported encoding: "+g),d=b(m));return d};Runtime.getVariable=function(m){try{return eval(m)}catch(g){}};Runtime.toJson=function(m){return JSON.stringify(m)};Runtime.fromJson=function(m){return JSON.parse(m)};Runtime.getFunctionName=function(m){return void 0===m.name?(m=/function\s+(\w+)/.exec(m))&&m[1]:m.name};
-function BrowserRuntime(m){function g(r){var a=r.length,c,l,h=0;for(c=0;c<a;c+=1)l=r.charCodeAt(c),h+=1+(128<l)+(2048<l),55040<l&&57344>l&&(h+=1,c+=1);return h}function b(r,a,c){var l=r.length,h,b;a=new Uint8Array(new ArrayBuffer(a));c?(a[0]=239,a[1]=187,a[2]=191,b=3):b=0;for(c=0;c<l;c+=1)h=r.charCodeAt(c),128>h?(a[b]=h,b+=1):2048>h?(a[b]=192|h>>>6,a[b+1]=128|h&63,b+=2):55040>=h||57344<=h?(a[b]=224|h>>>12&15,a[b+1]=128|h>>>6&63,a[b+2]=128|h&63,b+=3):(c+=1,h=(h-55296<<10|r.charCodeAt(c)-56320)+65536,
-a[b]=240|h>>>18&7,a[b+1]=128|h>>>12&63,a[b+2]=128|h>>>6&63,a[b+3]=128|h&63,b+=4);return a}function k(b){var a=b.length,c=new Uint8Array(new ArrayBuffer(a)),l;for(l=0;l<a;l+=1)c[l]=b.charCodeAt(l)&255;return c}function d(b,a){var c,l,h;void 0!==a?h=b:a=b;m?(l=m.ownerDocument,h&&(c=l.createElement("span"),c.className=h,c.appendChild(l.createTextNode(h)),m.appendChild(c),m.appendChild(l.createTextNode(" "))),c=l.createElement("span"),0<a.length&&"<"===a[0]?c.innerHTML=a:c.appendChild(l.createTextNode(a)),
-m.appendChild(c),m.appendChild(l.createElement("br"))):console&&console.log(a);"alert"===h&&alert(a)}function n(r,a,c){if(0!==c.status||c.responseText)if(200===c.status||0===c.status){if(c.response&&"string"!==typeof c.response)"binary"===a?(c=c.response,c=new Uint8Array(c)):c=String(c.response);else if("binary"===a)if(null!==c.responseBody&&"undefined"!==String(typeof VBArray)){c=(new VBArray(c.responseBody)).toArray();var l=c.length,h=new Uint8Array(new ArrayBuffer(l));for(a=0;a<l;a+=1)h[a]=c[a];
-c=h}else{(a=c.getResponseHeader("Content-Length"))&&(a=parseInt(a,10));if(a&&a!==c.responseText.length)a:{var l=c.responseText,h=!1,f=g(l);if("number"===typeof a){if(a!==f&&a!==f+3){l=void 0;break a}h=f+3===a;f=a}l=b(l,f,h)}void 0===l&&(l=k(c.responseText));c=l}else c=c.responseText;e[r]=c;r={err:null,data:c}}else r={err:c.responseText||c.statusText,data:null};else r={err:"File "+r+" is empty.",data:null};return r}function p(b,a,c){var l=new XMLHttpRequest;l.open("GET",b,c);l.overrideMimeType&&("binary"!==
-a?l.overrideMimeType("text/plain; charset="+a):l.overrideMimeType("text/plain; charset=x-user-defined"));return l}function f(b,a,c){function l(){var l;4===h.readyState&&(l=n(b,a,h),c(l.err,l.data))}if(e.hasOwnProperty(b))c(null,e[b]);else{var h=p(b,a,!0);h.onreadystatechange=l;try{h.send(null)}catch(f){c(f.message,null)}}}var q=this,e={};this.byteArrayFromString=function(r,a){var c;"utf8"===a?c=b(r,g(r),!1):("binary"!==a&&q.log("unknown encoding: "+a),c=k(r));return c};this.byteArrayToString=Runtime.byteArrayToString;
-this.getVariable=Runtime.getVariable;this.fromJson=Runtime.fromJson;this.toJson=Runtime.toJson;this.readFile=f;this.read=function(b,a,c,l){f(b,"binary",function(h,b){var r=null;if(b){if("string"===typeof b)throw"This should not happen.";r=b.subarray(a,a+c)}l(h,r)})};this.readFileSync=function(b,a){var c=p(b,a,!1),l;try{c.send(null);l=n(b,a,c);if(l.err)throw l.err;if(null===l.data)throw"No data read from "+b+".";}catch(h){throw h;}return l.data};this.writeFile=function(b,a,c){e[b]=a;var l=new XMLHttpRequest,
-h;l.open("PUT",b,!0);l.onreadystatechange=function(){4===l.readyState&&(0!==l.status||l.responseText?200<=l.status&&300>l.status||0===l.status?c(null):c("Status "+String(l.status)+": "+l.responseText||l.statusText):c("File "+b+" is empty."))};h=a.buffer&&!l.sendAsBinary?a.buffer:q.byteArrayToString(a,"binary");try{l.sendAsBinary?l.sendAsBinary(h):l.send(h)}catch(f){q.log("HUH? "+f+" "+a),c(f.message)}};this.deleteFile=function(b,a){delete e[b];var c=new XMLHttpRequest;c.open("DELETE",b,!0);c.onreadystatechange=
-function(){4===c.readyState&&(200>c.status&&300<=c.status?a(c.responseText):a(null))};c.send(null)};this.loadXML=function(b,a){var c=new XMLHttpRequest;c.open("GET",b,!0);c.overrideMimeType&&c.overrideMimeType("text/xml");c.onreadystatechange=function(){4===c.readyState&&(0!==c.status||c.responseText?200===c.status||0===c.status?a(null,c.responseXML):a(c.responseText,null):a("File "+b+" is empty.",null))};try{c.send(null)}catch(l){a(l.message,null)}};this.isFile=function(b,a){q.getFileSize(b,function(c){a(-1!==
-c)})};this.getFileSize=function(b,a){if(e.hasOwnProperty(b)&&"string"!==typeof e[b])a(e[b].length);else{var c=new XMLHttpRequest;c.open("HEAD",b,!0);c.onreadystatechange=function(){if(4===c.readyState){var l=c.getResponseHeader("Content-Length");l?a(parseInt(l,10)):f(b,"binary",function(c,l){c?a(-1):a(l.length)})}};c.send(null)}};this.log=d;this.assert=function(b,a,c){if(!b)throw d("alert","ASSERTION FAILED:\n"+a),c&&c(),a;};this.setTimeout=function(b,a){return setTimeout(function(){b()},a)};this.clearTimeout=
-function(b){clearTimeout(b)};this.libraryPaths=function(){return["lib"]};this.setCurrentDirectory=function(){};this.currentDirectory=function(){return""};this.type=function(){return"BrowserRuntime"};this.getDOMImplementation=function(){return window.document.implementation};this.parseXML=function(b){return(new DOMParser).parseFromString(b,"text/xml")};this.exit=function(b){d("Calling exit with code "+String(b)+", but exit() is not implemented.")};this.getWindow=function(){return window};this.requestAnimationFrame=
-function(b){var a=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame,c=0;if(a)a.bind(window),c=a(b);else return setTimeout(b,15);return c};this.cancelAnimationFrame=function(b){var a=window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.msCancelAnimationFrame;a?(a.bind(window),a(b)):clearTimeout(b)}}
-function NodeJSRuntime(){function m(b){var e=b.length,f,a=new Uint8Array(new ArrayBuffer(e));for(f=0;f<e;f+=1)a[f]=b[f];return a}function g(b,e,f){function a(a,l){if(a)return f(a,null);if(!l)return f("No data for "+b+".",null);if("string"===typeof l)return f(a,l);f(a,m(l))}b=d.resolve(n,b);"binary"!==e?k.readFile(b,e,a):k.readFile(b,null,a)}var b=this,k=require("fs"),d=require("path"),n="",p,f;this.byteArrayFromString=function(b,e){var f=new Buffer(b,e),a,c=f.length,l=new Uint8Array(new ArrayBuffer(c));
-for(a=0;a<c;a+=1)l[a]=f[a];return l};this.byteArrayToString=Runtime.byteArrayToString;this.getVariable=Runtime.getVariable;this.fromJson=Runtime.fromJson;this.toJson=Runtime.toJson;this.readFile=g;this.loadXML=function(f,e){g(f,"utf-8",function(r,a){if(r)return e(r,null);if(!a)return e("No data for "+f+".",null);e(null,b.parseXML(a))})};this.writeFile=function(b,e,f){e=new Buffer(e);b=d.resolve(n,b);k.writeFile(b,e,"binary",function(a){f(a||null)})};this.deleteFile=function(b,e){b=d.resolve(n,b);
-k.unlink(b,e)};this.read=function(b,e,f,a){b=d.resolve(n,b);k.open(b,"r+",666,function(c,l){if(c)a(c,null);else{var h=new Buffer(f);k.read(l,h,0,f,e,function(c){k.close(l);a(c,m(h))})}})};this.readFileSync=function(b,e){var f;f=k.readFileSync(b,"binary"===e?null:e);if(null===f)throw"File "+b+" could not be read.";"binary"===e&&(f=m(f));return f};this.isFile=function(b,f){b=d.resolve(n,b);k.stat(b,function(b,a){f(!b&&a.isFile())})};this.getFileSize=function(b,f){b=d.resolve(n,b);k.stat(b,function(b,
-a){b?f(-1):f(a.size)})};this.log=function(b,f){var d;void 0!==f?d=b:f=b;"alert"===d&&process.stderr.write("\n!!!!! ALERT !!!!!\n");process.stderr.write(f+"\n");"alert"===d&&process.stderr.write("!!!!! ALERT !!!!!\n")};this.assert=function(b,f,d){b||(process.stderr.write("ASSERTION FAILED: "+f),d&&d())};this.setTimeout=function(b,f){return setTimeout(function(){b()},f)};this.clearTimeout=function(b){clearTimeout(b)};this.libraryPaths=function(){return[__dirname]};this.setCurrentDirectory=function(b){n=
-b};this.currentDirectory=function(){return n};this.type=function(){return"NodeJSRuntime"};this.getDOMImplementation=function(){return f};this.parseXML=function(b){return p.parseFromString(b,"text/xml")};this.exit=process.exit;this.getWindow=function(){return null};this.requestAnimationFrame=function(b){return setTimeout(b,15)};this.cancelAnimationFrame=function(b){clearTimeout(b)};p=new (require("xmldom").DOMParser);f=b.parseXML("<a/>").implementation}
-function RhinoRuntime(){function m(b,d){var e;void 0!==d?e=b:d=b;"alert"===e&&print("\n!!!!! ALERT !!!!!");print(d);"alert"===e&&print("!!!!! ALERT !!!!!")}var g=this,b={},k=b.javax.xml.parsers.DocumentBuilderFactory.newInstance(),d,n,p="";k.setValidating(!1);k.setNamespaceAware(!0);k.setExpandEntityReferences(!1);k.setSchema(null);n=b.org.xml.sax.EntityResolver({resolveEntity:function(f,d){var e=new b.java.io.FileReader(d);return new b.org.xml.sax.InputSource(e)}});d=k.newDocumentBuilder();d.setEntityResolver(n);
-this.byteArrayFromString=function(b,d){var e,k=b.length,a=new Uint8Array(new ArrayBuffer(k));for(e=0;e<k;e+=1)a[e]=b.charCodeAt(e)&255;return a};this.byteArrayToString=Runtime.byteArrayToString;this.getVariable=Runtime.getVariable;this.fromJson=Runtime.fromJson;this.toJson=Runtime.toJson;this.loadXML=function(f,k){var e=new b.java.io.File(f),p=null;try{p=d.parse(e)}catch(a){return print(a),k(a,null)}k(null,p)};this.readFile=function(f,d,e){p&&(f=p+"/"+f);var k=new b.java.io.File(f),a="binary"===d?
-"latin1":d;k.isFile()?((f=readFile(f,a))&&"binary"===d&&(f=g.byteArrayFromString(f,"binary")),e(null,f)):e(f+" is not a file.",null)};this.writeFile=function(f,d,e){p&&(f=p+"/"+f);f=new b.java.io.FileOutputStream(f);var k,a=d.length;for(k=0;k<a;k+=1)f.write(d[k]);f.close();e(null)};this.deleteFile=function(f,d){p&&(f=p+"/"+f);var e=new b.java.io.File(f),k=f+Math.random(),k=new b.java.io.File(k);e.rename(k)?(k.deleteOnExit(),d(null)):d("Could not delete "+f)};this.read=function(f,d,e,k){p&&(f=p+"/"+
-f);var a;a=f;var c="binary";(new b.java.io.File(a)).isFile()?("binary"===c&&(c="latin1"),a=readFile(a,c)):a=null;a?k(null,this.byteArrayFromString(a.substring(d,d+e),"binary")):k("Cannot read "+f,null)};this.readFileSync=function(b,d){if(!d)return"";var e=readFile(b,d);if(null===e)throw"File could not be read.";return e};this.isFile=function(f,d){p&&(f=p+"/"+f);var e=new b.java.io.File(f);d(e.isFile())};this.getFileSize=function(f,d){p&&(f=p+"/"+f);var e=new b.java.io.File(f);d(e.length())};this.log=
-m;this.assert=function(b,d,e){b||(m("alert","ASSERTION FAILED: "+d),e&&e())};this.setTimeout=function(b){b();return 0};this.clearTimeout=function(){};this.libraryPaths=function(){return["lib"]};this.setCurrentDirectory=function(b){p=b};this.currentDirectory=function(){return p};this.type=function(){return"RhinoRuntime"};this.getDOMImplementation=function(){return d.getDOMImplementation()};this.parseXML=function(f){f=new b.java.io.StringReader(f);f=new b.org.xml.sax.InputSource(f);return d.parse(f)};
-this.exit=quit;this.getWindow=function(){return null};this.requestAnimationFrame=function(b){b();return 0};this.cancelAnimationFrame=function(){}}Runtime.create=function(){return"undefined"!==String(typeof window)?new BrowserRuntime(window.document.getElementById("logoutput")):"undefined"!==String(typeof require)?new NodeJSRuntime:new RhinoRuntime};var runtime=Runtime.create(),core={},gui={},xmldom={},odf={},ops={};
-(function(){function m(b,d,e){var k=b+"/manifest.json",a,c;runtime.log("Loading manifest: "+k);try{a=runtime.readFileSync(k,"utf-8")}catch(l){if(e)runtime.log("No loadable manifest found.");else throw console.log(String(l)),l;return}e=JSON.parse(a);for(c in e)e.hasOwnProperty(c)&&(d[c]={dir:b,deps:e[c]})}function g(b,d,e){function k(b){if(!l[b]&&!e(b)){if(c[b])throw"Circular dependency detected for "+b+".";c[b]=!0;if(!d[b])throw"Missing dependency information for class "+b+".";var f=d[b],p=f.deps,
-g,n=p.length;for(g=0;g<n;g+=1)k(p[g]);c[b]=!1;l[b]=!0;a.push(f.dir+"/"+b.replace(".","/")+".js")}}var a=[],c={},l={};b.forEach(k);return a}function b(b,d){return d=d+("\n//# sourceURL="+b)+("\n//@ sourceURL="+b)}function k(d){var k,e;for(k=0;k<d.length;k+=1)e=runtime.readFileSync(d[k],"utf-8"),e=b(d[k],e),eval(e)}function d(b){b=b.split(".");var d,e=p,k=b.length;for(d=0;d<k;d+=1){if(!e.hasOwnProperty(b[d]))return!1;e=e[b[d]]}return!0}var n,p={core:core,gui:gui,xmldom:xmldom,odf:odf,ops:ops};runtime.loadClasses=
-function(b,p){if(IS_COMPILED_CODE||0===b.length)return p&&p();var e;if(!(e=n)){e=[];var r=runtime.libraryPaths(),a;runtime.currentDirectory()&&-1===r.indexOf(runtime.currentDirectory())&&m(runtime.currentDirectory(),e,!0);for(a=0;a<r.length;a+=1)m(r[a],e)}n=e;b=g(b,n,d);if(0===b.length)return p&&p();if("BrowserRuntime"===runtime.type()&&p){e=b;r=document.currentScript||document.documentElement.lastChild;a=document.createDocumentFragment();var c,l;for(l=0;l<e.length;l+=1)c=document.createElement("script"),
-c.type="text/javascript",c.charset="utf-8",c.async=!1,c.setAttribute("src",e[l]),a.appendChild(c);p&&(c.onload=p);r.parentNode.insertBefore(a,r)}else k(b),p&&p()};runtime.loadClass=function(b,d){runtime.loadClasses([b],d)}})();(function(){var m=function(g){return g};runtime.getTranslator=function(){return m};runtime.setTranslator=function(g){m=g};runtime.tr=function(g){var b=m(g);return b&&"string"===String(typeof b)?b:g}})();
-(function(m){function g(b){if(b.length){var k=b[0];runtime.readFile(k,"utf8",function(d,g){function p(){var b;(b=eval(m))&&runtime.exit(b)}var f="",f=k.lastIndexOf("/"),m=g,f=-1!==f?k.substring(0,f):".";runtime.setCurrentDirectory(f);d?(runtime.log(d),runtime.exit(1)):null===m?(runtime.log("No code found for "+k),runtime.exit(1)):p.apply(null,b)})}}m=m?Array.prototype.slice.call(m):[];"NodeJSRuntime"===runtime.type()?g(process.argv.slice(2)):"RhinoRuntime"===runtime.type()?g(m):g(m.slice(1))})("undefined"!==
-String(typeof arguments)&&arguments);
-// Input 2
-core.Async=function(){this.forEach=function(m,g,b){function k(d){p!==n&&(d?(p=n,b(d)):(p+=1,p===n&&b(null)))}var d,n=m.length,p=0;for(d=0;d<n;d+=1)g(m[d],k)};this.destroyAll=function(m,g){function b(k,d){if(d)g(d);else if(k<m.length)m[k](function(d){b(k+1,d)});else g()}b(0,void 0)}};
-// Input 3
-function makeBase64(){function m(a){var c,b=a.length,l=new Uint8Array(new ArrayBuffer(b));for(c=0;c<b;c+=1)l[c]=a.charCodeAt(c)&255;return l}function g(a){var c,b="",l,h=a.length-2;for(l=0;l<h;l+=3)c=a[l]<<16|a[l+1]<<8|a[l+2],b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[c>>>18],b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[c>>>12&63],b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[c>>>6&63],b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[c&
-63];l===h+1?(c=a[l]<<4,b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[c>>>6],b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[c&63],b+="=="):l===h&&(c=a[l]<<10|a[l+1]<<2,b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[c>>>12],b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[c>>>6&63],b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[c&63],b+="=");return b}function b(a){a=a.replace(/[^A-Za-z0-9+\/]+/g,
-"");var c=a.length,b=new Uint8Array(new ArrayBuffer(3*c)),l=a.length%4,d=0,e,k;for(e=0;e<c;e+=4)k=(h[a.charAt(e)]||0)<<18|(h[a.charAt(e+1)]||0)<<12|(h[a.charAt(e+2)]||0)<<6|(h[a.charAt(e+3)]||0),b[d]=k>>16,b[d+1]=k>>8&255,b[d+2]=k&255,d+=3;c=3*c-[0,0,2,1][l];return b.subarray(0,c)}function k(a){var c,b,l=a.length,h=0,d=new Uint8Array(new ArrayBuffer(3*l));for(c=0;c<l;c+=1)b=a[c],128>b?d[h++]=b:(2048>b?d[h++]=192|b>>>6:(d[h++]=224|b>>>12&15,d[h++]=128|b>>>6&63),d[h++]=128|b&63);return d.subarray(0,
-h)}function d(a){var c,b,l,h,d=a.length,e=new Uint8Array(new ArrayBuffer(d)),k=0;for(c=0;c<d;c+=1)b=a[c],128>b?e[k++]=b:(c+=1,l=a[c],224>b?e[k++]=(b&31)<<6|l&63:(c+=1,h=a[c],e[k++]=(b&15)<<12|(l&63)<<6|h&63));return e.subarray(0,k)}function n(a){return g(m(a))}function p(a){return String.fromCharCode.apply(String,b(a))}function f(a){return d(m(a))}function q(a){a=d(a);for(var c="",b=0;b<a.length;)c+=String.fromCharCode.apply(String,a.subarray(b,b+45E3)),b+=45E3;return c}function e(a,c,b){var l,h,
-d,e="";for(d=c;d<b;d+=1)c=a.charCodeAt(d)&255,128>c?e+=String.fromCharCode(c):(d+=1,l=a.charCodeAt(d)&255,224>c?e+=String.fromCharCode((c&31)<<6|l&63):(d+=1,h=a.charCodeAt(d)&255,e+=String.fromCharCode((c&15)<<12|(l&63)<<6|h&63)));return e}function r(a,c){function b(){var d=h+1E5;d>a.length&&(d=a.length);l+=e(a,h,d);h=d;d=h===a.length;c(l,d)&&!d&&runtime.setTimeout(b,0)}var l="",h=0;1E5>a.length?c(e(a,0,a.length),!0):("string"!==typeof a&&(a=a.slice()),b())}function a(a){return k(m(a))}function c(a){return String.fromCharCode.apply(String,
-k(a))}function l(a){return String.fromCharCode.apply(String,k(m(a)))}var h=function(a){var c={},b,l;b=0;for(l=a.length;b<l;b+=1)c[a.charAt(b)]=b;return c}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),v,w,z=runtime.getWindow(),x,u;z&&z.btoa?(x=z.btoa,v=function(a){return x(l(a))}):(x=n,v=function(c){return g(a(c))});z&&z.atob?(u=z.atob,w=function(a){a=u(a);return e(a,0,a.length)}):(u=p,w=function(a){return q(b(a))});core.Base64=function(){this.convertByteArrayToBase64=this.convertUTF8ArrayToBase64=
-g;this.convertBase64ToByteArray=this.convertBase64ToUTF8Array=b;this.convertUTF16ArrayToByteArray=this.convertUTF16ArrayToUTF8Array=k;this.convertByteArrayToUTF16Array=this.convertUTF8ArrayToUTF16Array=d;this.convertUTF8StringToBase64=n;this.convertBase64ToUTF8String=p;this.convertUTF8StringToUTF16Array=f;this.convertByteArrayToUTF16String=this.convertUTF8ArrayToUTF16String=q;this.convertUTF8StringToUTF16String=r;this.convertUTF16StringToByteArray=this.convertUTF16StringToUTF8Array=a;this.convertUTF16ArrayToUTF8String=
-c;this.convertUTF16StringToUTF8String=l;this.convertUTF16StringToBase64=v;this.convertBase64ToUTF16String=w;this.fromBase64=p;this.toBase64=n;this.atob=u;this.btoa=x;this.utob=l;this.btou=r;this.encode=v;this.encodeURI=function(a){return v(a).replace(/[+\/]/g,function(a){return"+"===a?"-":"_"}).replace(/\\=+$/,"")};this.decode=function(a){return w(a.replace(/[\-_]/g,function(a){return"-"===a?"+":"/"}))};return this};return core.Base64}core.Base64=makeBase64();
-// Input 4
-core.ByteArray=function(m){this.pos=0;this.data=m;this.readUInt32LE=function(){this.pos+=4;var g=this.data,b=this.pos;return g[--b]<<24|g[--b]<<16|g[--b]<<8|g[--b]};this.readUInt16LE=function(){this.pos+=2;var g=this.data,b=this.pos;return g[--b]<<8|g[--b]}};
-// Input 5
-core.ByteArrayWriter=function(m){function g(b){b>d-k&&(d=Math.max(2*d,k+b),b=new Uint8Array(new ArrayBuffer(d)),b.set(n),n=b)}var b=this,k=0,d=1024,n=new Uint8Array(new ArrayBuffer(d));this.appendByteArrayWriter=function(d){b.appendByteArray(d.getByteArray())};this.appendByteArray=function(b){var d=b.length;g(d);n.set(b,k);k+=d};this.appendArray=function(b){var d=b.length;g(d);n.set(b,k);k+=d};this.appendUInt16LE=function(d){b.appendArray([d&255,d>>8&255])};this.appendUInt32LE=function(d){b.appendArray([d&
-255,d>>8&255,d>>16&255,d>>24&255])};this.appendString=function(d){b.appendByteArray(runtime.byteArrayFromString(d,m))};this.getLength=function(){return k};this.getByteArray=function(){var b=new Uint8Array(new ArrayBuffer(k));b.set(n.subarray(0,k));return b}};
-// Input 6
-core.CSSUnits=function(){var m=this,g={"in":1,cm:2.54,mm:25.4,pt:72,pc:12};this.convert=function(b,k,d){return b*g[d]/g[k]};this.convertMeasure=function(b,k){var d,g;b&&k?(d=parseFloat(b),g=b.replace(d.toString(),""),d=m.convert(d,g,k).toString()):d="";return d};this.getUnits=function(b){return b.substr(b.length-2,b.length)}};
-// Input 7
/*
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
+ This is a generated file. DO NOT EDIT.
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-(function(){function m(){var k,d,g,p,f,m,e,r,a;void 0===b&&(d=(k=runtime.getWindow())&&k.document,m=d.documentElement,e=d.body,b={rangeBCRIgnoresElementBCR:!1,unscaledRangeClientRects:!1,elementBCRIgnoresBodyScroll:!1},d&&(p=d.createElement("div"),p.style.position="absolute",p.style.left="-99999px",p.style.transform="scale(2)",p.style["-webkit-transform"]="scale(2)",f=d.createElement("div"),p.appendChild(f),e.appendChild(p),k=d.createRange(),k.selectNode(f),b.rangeBCRIgnoresElementBCR=0===k.getClientRects().length,
-f.appendChild(d.createTextNode("Rect transform test")),d=f.getBoundingClientRect(),g=k.getBoundingClientRect(),b.unscaledRangeClientRects=2<Math.abs(d.height-g.height),p.style.transform="",p.style["-webkit-transform"]="",d=m.style.overflow,g=e.style.overflow,r=e.style.height,a=e.scrollTop,m.style.overflow="visible",e.style.overflow="visible",e.style.height="200%",e.scrollTop=e.scrollHeight,b.elementBCRIgnoresBodyScroll=k.getBoundingClientRect().top!==f.getBoundingClientRect().top,e.scrollTop=a,e.style.height=
-r,e.style.overflow=g,m.style.overflow=d,k.detach(),e.removeChild(p),k=Object.keys(b).map(function(a){return a+":"+String(b[a])}).join(", "),runtime.log("Detected browser quirks - "+k)));return b}function g(b,d,g){for(b=b?b.firstElementChild:null;b;){if(b.localName===g&&b.namespaceURI===d)return b;b=b.nextElementSibling}return null}var b;core.DomUtils=function(){function b(a,c){for(var l=0,h;a.parentNode!==c;)runtime.assert(null!==a.parentNode,"parent is null"),a=a.parentNode;for(h=c.firstChild;h!==
-a;)l+=1,h=h.nextSibling;return l}function d(a,c){return 0>=a.compareBoundaryPoints(Range.START_TO_START,c)&&0<=a.compareBoundaryPoints(Range.END_TO_END,c)}function n(a,c){var b=null;a.nodeType===Node.TEXT_NODE&&(0===a.length?(a.parentNode.removeChild(a),c.nodeType===Node.TEXT_NODE&&(b=c)):(c.nodeType===Node.TEXT_NODE&&(a.appendData(c.data),c.parentNode.removeChild(c)),b=a));return b}function p(a){for(var c=a.parentNode;a.firstChild;)c.insertBefore(a.firstChild,a);c.removeChild(a);return c}function f(a,
-c){for(var b=a.parentNode,h=a.firstChild,d;h;)d=h.nextSibling,f(h,c),h=d;b&&c(a)&&p(a);return b}function q(a,c){return a===c||Boolean(a.compareDocumentPosition(c)&Node.DOCUMENT_POSITION_CONTAINED_BY)}function e(a,c,b){Object.keys(c).forEach(function(h){var d=h.split(":"),k=d[1],f=b(d[0]),d=c[h],g=typeof d;"object"===g?Object.keys(d).length&&(h=f?a.getElementsByTagNameNS(f,k)[0]||a.ownerDocument.createElementNS(f,h):a.getElementsByTagName(k)[0]||a.ownerDocument.createElement(h),a.appendChild(h),e(h,
-d,b)):f&&(runtime.assert("number"===g||"string"===g,"attempting to map unsupported type '"+g+"' (key: "+h+")"),a.setAttributeNS(f,h,String(d)))})}var r=null;this.splitBoundaries=function(a){var c,l=[],h,d,e;if(a.startContainer.nodeType===Node.TEXT_NODE||a.endContainer.nodeType===Node.TEXT_NODE){h=a.endContainer;d=a.endContainer.nodeType!==Node.TEXT_NODE?a.endOffset===a.endContainer.childNodes.length:!1;e=a.endOffset;c=a.endContainer;if(e<c.childNodes.length)for(c=c.childNodes.item(e),e=0;c.firstChild;)c=
-c.firstChild;else for(;c.lastChild;)c=c.lastChild,e=c.nodeType===Node.TEXT_NODE?c.textContent.length:c.childNodes.length;c===h&&(h=null);a.setEnd(c,e);e=a.endContainer;0!==a.endOffset&&e.nodeType===Node.TEXT_NODE&&(c=e,a.endOffset!==c.length&&(l.push(c.splitText(a.endOffset)),l.push(c)));e=a.startContainer;0!==a.startOffset&&e.nodeType===Node.TEXT_NODE&&(c=e,a.startOffset!==c.length&&(e=c.splitText(a.startOffset),l.push(c),l.push(e),a.setStart(e,0)));if(null!==h){for(e=a.endContainer;e.parentNode&&
-e.parentNode!==h;)e=e.parentNode;d=d?h.childNodes.length:b(e,h);a.setEnd(h,d)}}return l};this.containsRange=d;this.rangesIntersect=function(a,c){return 0>=a.compareBoundaryPoints(Range.END_TO_START,c)&&0<=a.compareBoundaryPoints(Range.START_TO_END,c)};this.getNodesInRange=function(a,c,b){var h=[],d=a.commonAncestorContainer;b=a.startContainer.ownerDocument.createTreeWalker(d.nodeType===Node.TEXT_NODE?d.parentNode:d,b,c,!1);var e;a.endContainer.childNodes[a.endOffset-1]?(d=a.endContainer.childNodes[a.endOffset-
-1],e=Node.DOCUMENT_POSITION_PRECEDING|Node.DOCUMENT_POSITION_CONTAINED_BY):(d=a.endContainer,e=Node.DOCUMENT_POSITION_PRECEDING);a.startContainer.childNodes[a.startOffset]?(a=a.startContainer.childNodes[a.startOffset],b.currentNode=a):a.startOffset===(a.startContainer.nodeType===Node.TEXT_NODE?a.startContainer.length:a.startContainer.childNodes.length)?(a=a.startContainer,b.currentNode=a,b.lastChild(),a=b.nextNode()):(a=a.startContainer,b.currentNode=a);a&&c(a)===NodeFilter.FILTER_ACCEPT&&h.push(a);
-for(a=b.nextNode();a;){c=d.compareDocumentPosition(a);if(0!==c&&0===(c&e))break;h.push(a);a=b.nextNode()}return h};this.normalizeTextNodes=function(a){a&&a.nextSibling&&(a=n(a,a.nextSibling));a&&a.previousSibling&&n(a.previousSibling,a)};this.rangeContainsNode=function(a,c){var b=c.ownerDocument.createRange(),h=c.ownerDocument.createRange(),e;b.setStart(a.startContainer,a.startOffset);b.setEnd(a.endContainer,a.endOffset);h.selectNodeContents(c);e=d(b,h);b.detach();h.detach();return e};this.mergeIntoParent=
-p;this.removeUnwantedNodes=f;this.getElementsByTagNameNS=function(a,c,b){var h=[];a=a.getElementsByTagNameNS(c,b);h.length=b=a.length;for(c=0;c<b;c+=1)h[c]=a.item(c);return h};this.containsNode=function(a,c){return a===c||a.contains(c)};this.comparePoints=function(a,c,l,h){if(a===l)return h-c;var d=a.compareDocumentPosition(l);2===d?d=-1:4===d?d=1:10===d?(c=b(a,l),d=c<h?1:-1):(h=b(l,a),d=h<c?-1:1);return d};this.adaptRangeDifferenceToZoomLevel=function(a,c){return m().unscaledRangeClientRects?a:a/
-c};this.getBoundingClientRect=function(a){var c=a.ownerDocument,b=m(),h=c.body;if((!1===b.unscaledRangeClientRects||b.rangeBCRIgnoresElementBCR)&&a.nodeType===Node.ELEMENT_NODE)return a=a.getBoundingClientRect(),b.elementBCRIgnoresBodyScroll?{left:a.left+h.scrollLeft,right:a.right+h.scrollLeft,top:a.top+h.scrollTop,bottom:a.bottom+h.scrollTop,width:a.width,height:a.height}:a;var d;r?d=r:r=d=c.createRange();b=d;b.selectNode(a);return b.getBoundingClientRect()};this.mapKeyValObjOntoNode=function(a,
-c,b){Object.keys(c).forEach(function(h){var d=h.split(":"),e=d[1],d=b(d[0]),k=c[h];d?(e=a.getElementsByTagNameNS(d,e)[0],e||(e=a.ownerDocument.createElementNS(d,h),a.appendChild(e)),e.textContent=k):runtime.log("Key ignored: "+h)})};this.removeKeyElementsFromNode=function(a,c,b){c.forEach(function(c){var d=c.split(":"),e=d[1];(d=b(d[0]))?(e=a.getElementsByTagNameNS(d,e)[0])?e.parentNode.removeChild(e):runtime.log("Element for "+c+" not found."):runtime.log("Property Name ignored: "+c)})};this.getKeyValRepresentationOfNode=
-function(a,c){for(var b={},h=a.firstElementChild,d;h;){if(d=c(h.namespaceURI))b[d+":"+h.localName]=h.textContent;h=h.nextElementSibling}return b};this.mapObjOntoNode=e;this.getDirectChild=g;(function(a){var c,b;b=runtime.getWindow();null!==b&&(c=b.navigator.appVersion.toLowerCase(),b=-1===c.indexOf("chrome")&&(-1!==c.indexOf("applewebkit")||-1!==c.indexOf("safari")),c=c.indexOf("msie"),b||c)&&(a.containsNode=q)})(this)};return core.DomUtils})();
-// Input 8
-core.Cursor=function(m,g){function b(a){a.parentNode&&(f.push(a.previousSibling),f.push(a.nextSibling),a.parentNode.removeChild(a))}function k(a,c,b){if(c.nodeType===Node.TEXT_NODE){runtime.assert(Boolean(c),"putCursorIntoTextNode: invalid container");var h=c.parentNode;runtime.assert(Boolean(h),"putCursorIntoTextNode: container without parent");runtime.assert(0<=b&&b<=c.length,"putCursorIntoTextNode: offset is out of bounds");0===b?h.insertBefore(a,c):(b!==c.length&&c.splitText(b),h.insertBefore(a,
-c.nextSibling))}else c.nodeType===Node.ELEMENT_NODE&&c.insertBefore(a,c.childNodes.item(b));f.push(a.previousSibling);f.push(a.nextSibling)}var d=m.createElementNS("urn:webodf:names:cursor","cursor"),n=m.createElementNS("urn:webodf:names:cursor","anchor"),p,f=[],q=m.createRange(),e,r=new core.DomUtils;this.getNode=function(){return d};this.getAnchorNode=function(){return n.parentNode?n:d};this.getSelectedRange=function(){e?(q.setStartBefore(d),q.collapse(!0)):(q.setStartAfter(p?n:d),q.setEndBefore(p?
-d:n));return q};this.setSelectedRange=function(a,c){q&&q!==a&&q.detach();q=a;p=!1!==c;(e=a.collapsed)?(b(n),b(d),k(d,a.startContainer,a.startOffset)):(b(n),b(d),k(p?d:n,a.endContainer,a.endOffset),k(p?n:d,a.startContainer,a.startOffset));f.forEach(r.normalizeTextNodes);f.length=0};this.hasForwardSelection=function(){return p};this.remove=function(){b(d);f.forEach(r.normalizeTextNodes);f.length=0};d.setAttributeNS("urn:webodf:names:cursor","memberId",g);n.setAttributeNS("urn:webodf:names:cursor","memberId",
-g)};
-// Input 9
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-core.Destroyable=function(){};core.Destroyable.prototype.destroy=function(m){};
-// Input 10
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-core.EventNotifier=function(m){var g={};this.emit=function(b,k){var d,n;runtime.assert(g.hasOwnProperty(b),'unknown event fired "'+b+'"');n=g[b];for(d=0;d<n.length;d+=1)n[d](k)};this.subscribe=function(b,k){runtime.assert(g.hasOwnProperty(b),'tried to subscribe to unknown event "'+b+'"');g[b].push(k)};this.unsubscribe=function(b,k){var d;runtime.assert(g.hasOwnProperty(b),'tried to unsubscribe from unknown event "'+b+'"');d=g[b].indexOf(k);runtime.assert(-1!==d,'tried to unsubscribe unknown callback from event "'+
-b+'"');-1!==d&&g[b].splice(d,1)};(function(){var b,k;for(b=0;b<m.length;b+=1)k=m[b],runtime.assert(!g.hasOwnProperty(k),'Duplicated event ids: "'+k+'" registered more than once.'),g[k]=[]})()};
-// Input 11
-/*
-
- Copyright (C) 2012 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-core.LoopWatchDog=function(m,g){var b=Date.now(),k=0;this.check=function(){var d;if(m&&(d=Date.now(),d-b>m))throw runtime.log("alert","watchdog timeout"),"timeout!";if(0<g&&(k+=1,k>g))throw runtime.log("alert","watchdog loop overflow"),"loop overflow";}};
-// Input 12
-core.PositionIterator=function(m,g,b,k){function d(){this.acceptNode=function(a){return!a||a.nodeType===l&&0===a.length?w:v}}function n(a){this.acceptNode=function(c){return!c||c.nodeType===l&&0===c.length?w:a.acceptNode(c)}}function p(){var c=r.currentNode,b=c.nodeType;a=b===l?c.length-1:b===h?1:0}function f(){if(null===r.previousSibling()){if(!r.parentNode()||r.currentNode===m)return r.firstChild(),!1;a=0}else p();return!0}function q(){var b=r.currentNode,l;l=c(b);if(b!==m)for(b=b.parentNode;b&&
-b!==m;)c(b)===w&&(r.currentNode=b,l=w),b=b.parentNode;l===w?(a=1,b=e.nextPosition()):b=l===v?!0:e.nextPosition();b&&runtime.assert(c(r.currentNode)===v,"moveToAcceptedNode did not result in walker being on an accepted node");return b}var e=this,r,a,c,l=Node.TEXT_NODE,h=Node.ELEMENT_NODE,v=NodeFilter.FILTER_ACCEPT,w=NodeFilter.FILTER_REJECT;this.nextPosition=function(){var c=r.currentNode,b=c.nodeType;if(c===m)return!1;if(0===a&&b===h)null===r.firstChild()&&(a=1);else if(b===l&&a+1<c.length)a+=1;else if(null!==
-r.nextSibling())a=0;else if(r.parentNode())a=1;else return!1;return!0};this.previousPosition=function(){var c=!0,b=r.currentNode;0===a?c=f():b.nodeType===l?a-=1:null!==r.lastChild()?p():b===m?c=!1:a=0;return c};this.previousNode=f;this.container=function(){var c=r.currentNode,b=c.nodeType;0===a&&b!==l&&(c=c.parentNode);return c};this.rightNode=function(){var b=r.currentNode,d=b.nodeType;if(d===l&&a===b.length)for(b=b.nextSibling;b&&c(b)!==v;)b=b.nextSibling;else d===h&&1===a&&(b=null);return b};this.leftNode=
-function(){var b=r.currentNode;if(0===a)for(b=b.previousSibling;b&&c(b)!==v;)b=b.previousSibling;else if(b.nodeType===h)for(b=b.lastChild;b&&c(b)!==v;)b=b.previousSibling;return b};this.getCurrentNode=function(){return r.currentNode};this.unfilteredDomOffset=function(){if(r.currentNode.nodeType===l)return a;for(var c=0,b=r.currentNode,b=1===a?b.lastChild:b.previousSibling;b;)c+=1,b=b.previousSibling;return c};this.getPreviousSibling=function(){var a=r.currentNode,c=r.previousSibling();r.currentNode=
-a;return c};this.getNextSibling=function(){var a=r.currentNode,c=r.nextSibling();r.currentNode=a;return c};this.setPositionBeforeElement=function(c){runtime.assert(Boolean(c),"setPositionBeforeElement called without element");r.currentNode=c;a=0;return q()};this.setUnfilteredPosition=function(c,b){runtime.assert(Boolean(c),"PositionIterator.setUnfilteredPosition called without container");r.currentNode=c;if(c.nodeType===l)return a=b,runtime.assert(b<=c.length,"Error in setPosition: "+b+" > "+c.length),
-runtime.assert(0<=b,"Error in setPosition: "+b+" < 0"),b===c.length&&(r.nextSibling()?a=0:r.parentNode()?a=1:runtime.assert(!1,"Error in setUnfilteredPosition: position not valid.")),!0;b<c.childNodes.length?(r.currentNode=c.childNodes.item(b),a=0):a=1;return q()};this.moveToEnd=function(){r.currentNode=m;a=1};this.moveToEndOfNode=function(c){c.nodeType===l?e.setUnfilteredPosition(c,c.length):(r.currentNode=c,a=1)};this.isBeforeNode=function(){return 0===a};this.getNodeFilter=function(){return c};
-c=(b?new n(b):new d).acceptNode;c.acceptNode=c;g=g||NodeFilter.SHOW_ALL;runtime.assert(m.nodeType!==Node.TEXT_NODE,"Internet Explorer doesn't allow tree walker roots to be text nodes");r=m.ownerDocument.createTreeWalker(m,g,c,k);a=0;null===r.firstChild()&&(a=1)};
-// Input 13
-core.PositionFilter=function(){};core.PositionFilter.FilterResult={FILTER_ACCEPT:1,FILTER_REJECT:2,FILTER_SKIP:3};core.PositionFilter.prototype.acceptPosition=function(m){};(function(){return core.PositionFilter})();
-// Input 14
-core.PositionFilterChain=function(){var m=[],g=core.PositionFilter.FilterResult.FILTER_ACCEPT,b=core.PositionFilter.FilterResult.FILTER_REJECT;this.acceptPosition=function(k){var d;for(d=0;d<m.length;d+=1)if(m[d].acceptPosition(k)===b)return b;return g};this.addFilter=function(b){m.push(b)}};
-// Input 15
-core.zip_HuftNode=function(){this.n=this.b=this.e=0;this.t=null};core.zip_HuftList=function(){this.list=this.next=null};
-core.RawInflate=function(){function m(a,c,b,l,d,h){this.BMAX=16;this.N_MAX=288;this.status=0;this.root=null;this.m=0;var e=Array(this.BMAX+1),k,f,g,p,n,y,m,r=Array(this.BMAX+1),s,H,L,q=new core.zip_HuftNode,v=Array(this.BMAX);p=Array(this.N_MAX);var F,u=Array(this.BMAX+1),t,O,w;w=this.root=null;for(n=0;n<e.length;n++)e[n]=0;for(n=0;n<r.length;n++)r[n]=0;for(n=0;n<v.length;n++)v[n]=null;for(n=0;n<p.length;n++)p[n]=0;for(n=0;n<u.length;n++)u[n]=0;k=256<c?a[256]:this.BMAX;s=a;H=0;n=c;do e[s[H]]++,H++;
-while(0<--n);if(e[0]===c)this.root=null,this.status=this.m=0;else{for(y=1;y<=this.BMAX&&0===e[y];y++);m=y;h<y&&(h=y);for(n=this.BMAX;0!==n&&0===e[n];n--);g=n;h>n&&(h=n);for(t=1<<y;y<n;y++,t<<=1)if(t-=e[y],0>t){this.status=2;this.m=h;return}t-=e[n];if(0>t)this.status=2,this.m=h;else{e[n]+=t;u[1]=y=0;s=e;H=1;for(L=2;0<--n;)y+=s[H++],u[L++]=y;s=a;n=H=0;do y=s[H++],0!==y&&(p[u[y]++]=n);while(++n<c);c=u[g];u[0]=n=0;s=p;H=0;p=-1;F=r[0]=0;L=null;O=0;for(m=m-1+1;m<=g;m++)for(a=e[m];0<a--;){for(;m>F+r[1+p];){F+=
-r[1+p];p++;O=g-F;O=O>h?h:O;y=m-F;f=1<<y;if(f>a+1)for(f-=a+1,L=m;++y<O;){f<<=1;if(f<=e[++L])break;f-=e[L]}F+y>k&&F<k&&(y=k-F);O=1<<y;r[1+p]=y;L=Array(O);for(f=0;f<O;f++)L[f]=new core.zip_HuftNode;w=null===w?this.root=new core.zip_HuftList:w.next=new core.zip_HuftList;w.next=null;w.list=L;v[p]=L;0<p&&(u[p]=n,q.b=r[p],q.e=16+y,q.t=L,y=(n&(1<<F)-1)>>F-r[p],v[p-1][y].e=q.e,v[p-1][y].b=q.b,v[p-1][y].n=q.n,v[p-1][y].t=q.t)}q.b=m-F;H>=c?q.e=99:s[H]<b?(q.e=256>s[H]?16:15,q.n=s[H++]):(q.e=d[s[H]-b],q.n=l[s[H++]-
-b]);f=1<<m-F;for(y=n>>F;y<O;y+=f)L[y].e=q.e,L[y].b=q.b,L[y].n=q.n,L[y].t=q.t;for(y=1<<m-1;0!==(n&y);y>>=1)n^=y;for(n^=y;(n&(1<<F)-1)!==u[p];)F-=r[p],p--}this.m=r[1];this.status=0!==t&&1!==g?1:0}}}function g(b){for(;c<b;){var l=a,h;h=s.length===y?-1:s[y++];a=l|h<<c;c+=8}}function b(c){return a&F[c]}function k(b){a>>=b;c-=b}function d(a,c,h){var d,e,n;if(0===h)return 0;for(n=0;;){g(u);e=z.list[b(u)];for(d=e.e;16<d;){if(99===d)return-1;k(e.b);d-=16;g(d);e=e.t[b(d)];d=e.e}k(e.b);if(16===d)f&=32767,a[c+
-n++]=p[f++]=e.n;else{if(15===d)break;g(d);v=e.n+b(d);k(d);g(t);e=x.list[b(t)];for(d=e.e;16<d;){if(99===d)return-1;k(e.b);d-=16;g(d);e=e.t[b(d)];d=e.e}k(e.b);g(d);w=f-e.n-b(d);for(k(d);0<v&&n<h;)v--,w&=32767,f&=32767,a[c+n++]=p[f++]=p[w++]}if(n===h)return h}l=-1;return n}function n(a,c,l){var h,e,f,n,p,y,r,s=Array(316);for(h=0;h<s.length;h++)s[h]=0;g(5);y=257+b(5);k(5);g(5);r=1+b(5);k(5);g(4);h=4+b(4);k(4);if(286<y||30<r)return-1;for(e=0;e<h;e++)g(3),s[T[e]]=b(3),k(3);for(e=h;19>e;e++)s[T[e]]=0;u=
-7;e=new m(s,19,19,null,null,u);if(0!==e.status)return-1;z=e.root;u=e.m;n=y+r;for(h=f=0;h<n;)if(g(u),p=z.list[b(u)],e=p.b,k(e),e=p.n,16>e)s[h++]=f=e;else if(16===e){g(2);e=3+b(2);k(2);if(h+e>n)return-1;for(;0<e--;)s[h++]=f}else{17===e?(g(3),e=3+b(3),k(3)):(g(7),e=11+b(7),k(7));if(h+e>n)return-1;for(;0<e--;)s[h++]=0;f=0}u=9;e=new m(s,y,257,L,O,u);0===u&&(e.status=1);if(0!==e.status)return-1;z=e.root;u=e.m;for(h=0;h<r;h++)s[h]=s[h+y];t=6;e=new m(s,r,0,H,U,t);x=e.root;t=e.m;return 0===t&&257<y||0!==e.status?
--1:d(a,c,l)}var p=[],f,q=null,e,r,a,c,l,h,v,w,z,x,u,t,s,y,F=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],L=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],O=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,99,99],H=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],U=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],T=[16,17,18,0,8,7,9,6,
-10,5,11,4,12,3,13,2,14,1,15],X;this.inflate=function(F,T){p.length=65536;c=a=f=0;l=-1;h=!1;v=w=0;z=null;s=F;y=0;var G=new Uint8Array(new ArrayBuffer(T));a:for(var J=0,Q;J<T&&(!h||-1!==l);){if(0<v){if(0!==l)for(;0<v&&J<T;)v--,w&=32767,f&=32767,G[0+J]=p[f]=p[w],J+=1,f+=1,w+=1;else{for(;0<v&&J<T;)v-=1,f&=32767,g(8),G[0+J]=p[f]=b(8),J+=1,f+=1,k(8);0===v&&(l=-1)}if(J===T)break}if(-1===l){if(h)break;g(1);0!==b(1)&&(h=!0);k(1);g(2);l=b(2);k(2);z=null;v=0}switch(l){case 0:Q=G;var ea=0+J,P=T-J,N=void 0,N=
-c&7;k(N);g(16);N=b(16);k(16);g(16);if(N!==(~a&65535))Q=-1;else{k(16);v=N;for(N=0;0<v&&N<P;)v--,f&=32767,g(8),Q[ea+N++]=p[f++]=b(8),k(8);0===v&&(l=-1);Q=N}break;case 1:if(null!==z)Q=d(G,0+J,T-J);else b:{Q=G;ea=0+J;P=T-J;if(null===q){for(var I=void 0,N=Array(288),I=void 0,I=0;144>I;I++)N[I]=8;for(I=144;256>I;I++)N[I]=9;for(I=256;280>I;I++)N[I]=7;for(I=280;288>I;I++)N[I]=8;r=7;I=new m(N,288,257,L,O,r);if(0!==I.status){alert("HufBuild error: "+I.status);Q=-1;break b}q=I.root;r=I.m;for(I=0;30>I;I++)N[I]=
-5;X=5;I=new m(N,30,0,H,U,X);if(1<I.status){q=null;alert("HufBuild error: "+I.status);Q=-1;break b}e=I.root;X=I.m}z=q;x=e;u=r;t=X;Q=d(Q,ea,P)}break;case 2:Q=null!==z?d(G,0+J,T-J):n(G,0+J,T-J);break;default:Q=-1}if(-1===Q)break a;J+=Q}s=new Uint8Array(new ArrayBuffer(0));return G}};
-// Input 16
-core.ScheduledTask=function(m,g){function b(){n&&(runtime.clearTimeout(d),n=!1)}function k(){b();m.apply(void 0,p);p=null}var d,n=!1,p=[];this.trigger=function(){p=Array.prototype.slice.call(arguments);n||(n=!0,d=runtime.setTimeout(k,g))};this.triggerImmediate=function(){p=Array.prototype.slice.call(arguments);k()};this.processRequests=function(){n&&k()};this.cancel=b;this.destroy=function(d){b();d()}};
-// Input 17
-/*
-
- Copyright (C) 2014 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-core.StepIterator=function(m,g){function b(){r=null;c=a=void 0}function k(){void 0===c&&(c=m.acceptPosition(g)===e);return c}function d(a,c){b();return g.setUnfilteredPosition(a,c)}function n(){r||(r=g.container());return r}function p(){void 0===a&&(a=g.unfilteredDomOffset());return a}function f(){for(b();g.nextPosition();)if(b(),k())return!0;return!1}function q(){for(b();g.previousPosition();)if(b(),k())return!0;return!1}var e=core.PositionFilter.FilterResult.FILTER_ACCEPT,r,a,c;this.isStep=k;this.setPosition=
-d;this.container=n;this.offset=p;this.nextStep=f;this.previousStep=q;this.roundToClosestStep=function(){var a=n(),c=p(),b=k();b||(b=q(),b||(d(a,c),b=f()));return b};this.roundToPreviousStep=function(){var a=k();a||(a=q());return a};this.roundToNextStep=function(){var a=k();a||(a=f());return a}};
-// Input 18
-core.UnitTest=function(){};core.UnitTest.prototype.setUp=function(){};core.UnitTest.prototype.tearDown=function(){};core.UnitTest.prototype.description=function(){};core.UnitTest.prototype.tests=function(){};core.UnitTest.prototype.asyncTests=function(){};
-core.UnitTest.provideTestAreaDiv=function(){var m=runtime.getWindow().document,g=m.getElementById("testarea");runtime.assert(!g,'Unclean test environment, found a div with id "testarea".');g=m.createElement("div");g.setAttribute("id","testarea");m.body.appendChild(g);return g};
-core.UnitTest.cleanupTestAreaDiv=function(){var m=runtime.getWindow().document,g=m.getElementById("testarea");runtime.assert(!!g&&g.parentNode===m.body,'Test environment broken, found no div with id "testarea" below body.');m.body.removeChild(g)};core.UnitTest.createOdtDocument=function(m,g){var b="<?xml version='1.0' encoding='UTF-8'?>",b=b+"<office:document";Object.keys(g).forEach(function(k){b+=" xmlns:"+k+'="'+g[k]+'"'});b+=">";b+=m;b+="</office:document>";return runtime.parseXML(b)};
-core.UnitTestLogger=function(){var m=[],g=0,b=0,k="",d="";this.startTest=function(n,p){m=[];g=0;k=n;d=p;b=(new Date).getTime()};this.endTest=function(){var n=(new Date).getTime();return{description:d,suite:[k,d],success:0===g,log:m,time:n-b}};this.debug=function(b){m.push({category:"debug",message:b})};this.fail=function(b){g+=1;m.push({category:"fail",message:b})};this.pass=function(b){m.push({category:"pass",message:b})}};
-core.UnitTestRunner=function(m,g){function b(c){q+=1;a?g.debug(c):g.fail(c)}function k(a,l){var h;try{if(a.length!==l.length)return b("array of length "+a.length+" should be "+l.length+" long"),!1;for(h=0;h<a.length;h+=1)if(a[h]!==l[h])return b(a[h]+" should be "+l[h]+" at array index "+h),!1}catch(d){return!1}return!0}function d(a,l,h){var e=a.attributes,f=e.length,k,n,g;for(k=0;k<f;k+=1)if(n=e.item(k),"xmlns"!==n.prefix&&"urn:webodf:names:steps"!==n.namespaceURI){g=l.getAttributeNS(n.namespaceURI,
-n.localName);if(!l.hasAttributeNS(n.namespaceURI,n.localName))return b("Attribute "+n.localName+" with value "+n.value+" was not present"),!1;if(g!==n.value)return b("Attribute "+n.localName+" was "+g+" should be "+n.value),!1}return h?!0:d(l,a,!0)}function n(a,l){var h,e;h=a.nodeType;e=l.nodeType;if(h!==e)return b("Nodetype '"+h+"' should be '"+e+"'"),!1;if(h===Node.TEXT_NODE){if(a.data===l.data)return!0;b("Textnode data '"+a.data+"' should be '"+l.data+"'");return!1}runtime.assert(h===Node.ELEMENT_NODE,
-"Only textnodes and elements supported.");if(a.namespaceURI!==l.namespaceURI)return b("namespace '"+a.namespaceURI+"' should be '"+l.namespaceURI+"'"),!1;if(a.localName!==l.localName)return b("localName '"+a.localName+"' should be '"+l.localName+"'"),!1;if(!d(a,l,!1))return!1;h=a.firstChild;for(e=l.firstChild;h;){if(!e)return b("Nodetype '"+h.nodeType+"' is unexpected here."),!1;if(!n(h,e))return!1;h=h.nextSibling;e=e.nextSibling}return e?(b("Nodetype '"+e.nodeType+"' is missing here."),!1):!0}function p(a,
-b){return 0===b?a===b&&1/a===1/b:a===b?!0:null===a||null===b?!1:"number"===typeof b&&isNaN(b)?"number"===typeof a&&isNaN(a):Object.prototype.toString.call(b)===Object.prototype.toString.call([])?k(a,b):"object"===typeof b&&"object"===typeof a?b.constructor===Element||b.constructor===Node?n(a,b):r(a,b):!1}function f(a,l,h){"string"===typeof l&&"string"===typeof h||g.debug("WARN: shouldBe() expects string arguments");var d,e;try{e=eval(l)}catch(f){d=f}a=eval(h);d?b(l+" should be "+a+". Threw exception "+
-d):p(e,a)?g.pass(l+" is "+h):String(typeof e)===String(typeof a)?(h=0===e&&0>1/e?"-0":String(e),b(l+" should be "+a+". Was "+h+".")):b(l+" should be "+a+" (of type "+typeof a+"). Was "+e+" (of type "+typeof e+").")}var q=0,e,r,a=!1;this.resourcePrefix=function(){return m};this.beginExpectFail=function(){e=q;a=!0};this.endExpectFail=function(){var c=e===q;a=!1;q=e;c&&(q+=1,g.fail("Expected at least one failed test, but none registered."))};r=function(a,l){var d=Object.keys(a),e=Object.keys(l);d.sort();
-e.sort();return k(d,e)&&Object.keys(a).every(function(d){var h=a[d],e=l[d];return p(h,e)?!0:(b(h+" should be "+e+" for key "+d),!1)})};this.areNodesEqual=n;this.shouldBeNull=function(a,b){f(a,b,"null")};this.shouldBeNonNull=function(a,d){var h,e;try{e=eval(d)}catch(f){h=f}h?b(d+" should be non-null. Threw exception "+h):null!==e?g.pass(d+" is non-null."):b(d+" should be non-null. Was "+e)};this.shouldBe=f;this.testFailed=b;this.countFailedTests=function(){return q};this.name=function(a){var b,d,e=
-[],f=a.length;e.length=f;for(b=0;b<f;b+=1){d=Runtime.getFunctionName(a[b])||"";if(""===d)throw"Found a function without a name.";e[b]={f:a[b],name:d}}return e}};
-core.UnitTester=function(){function m(b,d){return"<span style='color:blue;cursor:pointer' onclick='"+d+"'>"+b+"</span>"}function g(d){b.reporter&&b.reporter(d)}var b=this,k=0,d=new core.UnitTestLogger,n={},p="BrowserRuntime"===runtime.type();this.resourcePrefix="";this.reporter=function(b){var d,e;p?runtime.log("<span>Running "+m(b.description,'runTest("'+b.suite[0]+'","'+b.description+'")')+"</span>"):runtime.log("Running "+b.description);if(!b.success)for(d=0;d<b.log.length;d+=1)e=b.log[d],runtime.log(e.category,
-e.message)};this.runTests=function(f,q,e){function r(b){if(0===b.length)n[a]=h,k+=c.countFailedTests(),q();else{w=b[0].f;var f=b[0].name,p=!0===b[0].expectFail;u=c.countFailedTests();e.length&&-1===e.indexOf(f)?r(b.slice(1)):(l.setUp(),d.startTest(a,f),p&&c.beginExpectFail(),w(function(){p&&c.endExpectFail();g(d.endTest());l.tearDown();h[f]=u===c.countFailedTests();r(b.slice(1))}))}}var a=Runtime.getFunctionName(f)||"",c=new core.UnitTestRunner(b.resourcePrefix,d),l=new f(c),h={},v,w,z,x,u;if(n.hasOwnProperty(a))runtime.log("Test "+
-a+" has already run.");else{p?runtime.log("<span>Running "+m(a,'runSuite("'+a+'");')+": "+l.description()+"</span>"):runtime.log("Running "+a+": "+l.description);z=l.tests();for(v=0;v<z.length;v+=1)if(w=z[v].f,f=z[v].name,x=!0===z[v].expectFail,!e.length||-1!==e.indexOf(f)){u=c.countFailedTests();l.setUp();d.startTest(a,f);x&&c.beginExpectFail();try{w()}catch(t){c.testFailed("Unexpected exception encountered: "+t.toString()+"\n"+t.stack)}x&&c.endExpectFail();g(d.endTest());l.tearDown();h[f]=u===c.countFailedTests()}r(l.asyncTests())}};
-this.countFailedTests=function(){return k};this.results=function(){return n}};
-// Input 19
-core.Utils=function(){function m(g,b){if(b&&Array.isArray(b)){g=g||[];if(!Array.isArray(g))throw"Destination is not an array.";g=g.concat(b.map(function(b){return m(null,b)}))}else if(b&&"object"===typeof b){g=g||{};if("object"!==typeof g)throw"Destination is not an object.";Object.keys(b).forEach(function(k){g[k]=m(g[k],b[k])})}else g=b;return g}this.hashString=function(g){var b=0,k,d;k=0;for(d=g.length;k<d;k+=1)b=(b<<5)-b+g.charCodeAt(k),b|=0;return b};this.mergeObjects=function(g,b){Object.keys(b).forEach(function(k){g[k]=
-m(g[k],b[k])});return g}};
-// Input 20
-/*
-
- WebODF
- Copyright (c) 2010 Jos van den Oever
- Licensed under the ... License:
-
- Project home: http://www.webodf.org/
-*/
-core.Zip=function(m,g){function b(a){var c=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,
-853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,
-4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,
-225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,
-2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,
-2932959818,3654703836,1088359270,936918E3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],b,d,e=a.length,h=0,h=0;b=-1;for(d=0;d<e;d+=1)h=(b^a[d])&255,h=c[h],b=b>>>8^h;return b^-1}function k(a){return new Date((a>>25&127)+1980,(a>>21&15)-1,a>>16&31,a>>11&15,a>>5&63,(a&31)<<1)}function d(a){var c=a.getFullYear();return 1980>c?0:c-1980<<
-25|a.getMonth()+1<<21|a.getDate()<<16|a.getHours()<<11|a.getMinutes()<<5|a.getSeconds()>>1}function n(a,c){var b,d,e,l,f,n,g,p=this;this.load=function(c){if(null!==p.data)c(null,p.data);else{var b=f+34+d+e+256;b+g>h&&(b=h-g);runtime.read(a,g,b,function(b,d){if(b||null===d)c(b,d);else a:{var e=d,h=new core.ByteArray(e),k=h.readUInt32LE(),g;if(67324752!==k)c("File entry signature is wrong."+k.toString()+" "+e.length.toString(),null);else{h.pos+=22;k=h.readUInt16LE();g=h.readUInt16LE();h.pos+=k+g;if(l){e=
-e.subarray(h.pos,h.pos+f);if(f!==e.length){c("The amount of compressed bytes read was "+e.length.toString()+" instead of "+f.toString()+" for "+p.filename+" in "+a+".",null);break a}e=w(e,n)}else e=e.subarray(h.pos,h.pos+n);n!==e.length?c("The amount of bytes read was "+e.length.toString()+" instead of "+n.toString()+" for "+p.filename+" in "+a+".",null):(p.data=e,c(null,e))}}})}};this.set=function(a,c,b,d){p.filename=a;p.data=c;p.compressed=b;p.date=d};this.error=null;c&&(b=c.readUInt32LE(),33639248!==
-b?this.error="Central directory entry has wrong signature at position "+(c.pos-4).toString()+' for file "'+a+'": '+c.data.length.toString():(c.pos+=6,l=c.readUInt16LE(),this.date=k(c.readUInt32LE()),c.readUInt32LE(),f=c.readUInt32LE(),n=c.readUInt32LE(),d=c.readUInt16LE(),e=c.readUInt16LE(),b=c.readUInt16LE(),c.pos+=8,g=c.readUInt32LE(),this.filename=runtime.byteArrayToString(c.data.subarray(c.pos,c.pos+d),"utf8"),this.data=null,c.pos+=d+e+b))}function p(a,c){if(22!==a.length)c("Central directory length should be 22.",
-z);else{var b=new core.ByteArray(a),d;d=b.readUInt32LE();101010256!==d?c("Central directory signature is wrong: "+d.toString(),z):(d=b.readUInt16LE(),0!==d?c("Zip files with non-zero disk numbers are not supported.",z):(d=b.readUInt16LE(),0!==d?c("Zip files with non-zero disk numbers are not supported.",z):(d=b.readUInt16LE(),v=b.readUInt16LE(),d!==v?c("Number of entries is inconsistent.",z):(d=b.readUInt32LE(),b=b.readUInt16LE(),b=h-22-d,runtime.read(m,b,h-b,function(a,b){if(a||null===b)c(a,z);else a:{var d=
-new core.ByteArray(b),e,h;l=[];for(e=0;e<v;e+=1){h=new n(m,d);if(h.error){c(h.error,z);break a}l[l.length]=h}c(null,z)}})))))}}function f(a,c){var b=null,d,e;for(e=0;e<l.length;e+=1)if(d=l[e],d.filename===a){b=d;break}b?b.data?c(null,b.data):b.load(c):c(a+" not found.",null)}function q(a){var c=new core.ByteArrayWriter("utf8"),e=0;c.appendArray([80,75,3,4,20,0,0,0,0,0]);a.data&&(e=a.data.length);c.appendUInt32LE(d(a.date));c.appendUInt32LE(a.data?b(a.data):0);c.appendUInt32LE(e);c.appendUInt32LE(e);
-c.appendUInt16LE(a.filename.length);c.appendUInt16LE(0);c.appendString(a.filename);a.data&&c.appendByteArray(a.data);return c}function e(a,c){var e=new core.ByteArrayWriter("utf8"),h=0;e.appendArray([80,75,1,2,20,0,20,0,0,0,0,0]);a.data&&(h=a.data.length);e.appendUInt32LE(d(a.date));e.appendUInt32LE(a.data?b(a.data):0);e.appendUInt32LE(h);e.appendUInt32LE(h);e.appendUInt16LE(a.filename.length);e.appendArray([0,0,0,0,0,0,0,0,0,0,0,0]);e.appendUInt32LE(c);e.appendString(a.filename);return e}function r(a,
-c){if(a===l.length)c(null);else{var b=l[a];null!==b.data?r(a+1,c):b.load(function(b){b?c(b):r(a+1,c)})}}function a(a,c){r(0,function(b){if(b)c(b);else{var d,h,f=new core.ByteArrayWriter("utf8"),k=[0];for(d=0;d<l.length;d+=1)f.appendByteArrayWriter(q(l[d])),k.push(f.getLength());b=f.getLength();for(d=0;d<l.length;d+=1)h=l[d],f.appendByteArrayWriter(e(h,k[d]));d=f.getLength()-b;f.appendArray([80,75,5,6,0,0,0,0]);f.appendUInt16LE(l.length);f.appendUInt16LE(l.length);f.appendUInt32LE(d);f.appendUInt32LE(b);
-f.appendArray([0,0]);a(f.getByteArray())}})}function c(c,b){a(function(a){runtime.writeFile(c,a,b)},b)}var l,h,v,w=(new core.RawInflate).inflate,z=this,x=new core.Base64;this.load=f;this.save=function(a,c,b,d){var e,h;for(e=0;e<l.length;e+=1)if(h=l[e],h.filename===a){h.set(a,c,b,d);return}h=new n(m);h.set(a,c,b,d);l.push(h)};this.remove=function(a){var c,b;for(c=0;c<l.length;c+=1)if(b=l[c],b.filename===a)return l.splice(c,1),!0;return!1};this.write=function(a){c(m,a)};this.writeAs=c;this.createByteArray=
-a;this.loadContentXmlAsFragments=function(a,c){z.loadAsString(a,function(a,b){if(a)return c.rootElementReady(a);c.rootElementReady(null,b,!0)})};this.loadAsString=function(a,c){f(a,function(a,b){if(a||null===b)return c(a,null);var d=runtime.byteArrayToString(b,"utf8");c(null,d)})};this.loadAsDOM=function(a,c){z.loadAsString(a,function(a,b){if(a||null===b)c(a,null);else{var d=(new DOMParser).parseFromString(b,"text/xml");c(null,d)}})};this.loadAsDataURL=function(a,c,b){f(a,function(a,d){if(a||!d)return b(a,
-null);var e=0,h;c||(c=80===d[1]&&78===d[2]&&71===d[3]?"image/png":255===d[0]&&216===d[1]&&255===d[2]?"image/jpeg":71===d[0]&&73===d[1]&&70===d[2]?"image/gif":"");for(h="data:"+c+";base64,";e<d.length;)h+=x.convertUTF8ArrayToBase64(d.subarray(e,Math.min(e+45E3,d.length))),e+=45E3;b(null,h)})};this.getEntries=function(){return l.slice()};h=-1;null===g?l=[]:runtime.getFileSize(m,function(a){h=a;0>h?g("File '"+m+"' cannot be read.",z):runtime.read(m,h-22,22,function(a,c){a||null===g||null===c?g(a,z):
-p(c,g)})})};
-// Input 21
-xmldom.LSSerializerFilter=function(){};xmldom.LSSerializerFilter.prototype.acceptNode=function(m){};
-// Input 22
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-odf.OdfNodeFilter=function(){this.acceptNode=function(m){return"http://www.w3.org/1999/xhtml"===m.namespaceURI?NodeFilter.FILTER_SKIP:m.namespaceURI&&m.namespaceURI.match(/^urn:webodf:/)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}};
-// Input 23
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-odf.Namespaces={namespaceMap:{db:"urn:oasis:names:tc:opendocument:xmlns:database:1.0",dc:"http://purl.org/dc/elements/1.1/",dr3d:"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0",draw:"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0",chart:"urn:oasis:names:tc:opendocument:xmlns:chart:1.0",fo:"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0",form:"urn:oasis:names:tc:opendocument:xmlns:form:1.0",meta:"urn:oasis:names:tc:opendocument:xmlns:meta:1.0",number:"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0",
-office:"urn:oasis:names:tc:opendocument:xmlns:office:1.0",presentation:"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0",style:"urn:oasis:names:tc:opendocument:xmlns:style:1.0",svg:"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0",table:"urn:oasis:names:tc:opendocument:xmlns:table:1.0",text:"urn:oasis:names:tc:opendocument:xmlns:text:1.0",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace"},prefixMap:{},dbns:"urn:oasis:names:tc:opendocument:xmlns:database:1.0",
-dcns:"http://purl.org/dc/elements/1.1/",dr3dns:"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0",drawns:"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0",chartns:"urn:oasis:names:tc:opendocument:xmlns:chart:1.0",fons:"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0",formns:"urn:oasis:names:tc:opendocument:xmlns:form:1.0",metans:"urn:oasis:names:tc:opendocument:xmlns:meta:1.0",numberns:"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0",officens:"urn:oasis:names:tc:opendocument:xmlns:office:1.0",
-presentationns:"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0",stylens:"urn:oasis:names:tc:opendocument:xmlns:style:1.0",svgns:"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0",tablens:"urn:oasis:names:tc:opendocument:xmlns:table:1.0",textns:"urn:oasis:names:tc:opendocument:xmlns:text:1.0",xlinkns:"http://www.w3.org/1999/xlink",xmlns:"http://www.w3.org/XML/1998/namespace"};
-(function(){var m=odf.Namespaces.namespaceMap,g=odf.Namespaces.prefixMap,b;for(b in m)m.hasOwnProperty(b)&&(g[m[b]]=b)})();odf.Namespaces.forEachPrefix=function(m){var g=odf.Namespaces.namespaceMap,b;for(b in g)g.hasOwnProperty(b)&&m(b,g[b])};odf.Namespaces.lookupNamespaceURI=function(m){var g=null;odf.Namespaces.namespaceMap.hasOwnProperty(m)&&(g=odf.Namespaces.namespaceMap[m]);return g};odf.Namespaces.lookupPrefix=function(m){var g=odf.Namespaces.prefixMap;return g.hasOwnProperty(m)?g[m]:null};
-odf.Namespaces.lookupNamespaceURI.lookupNamespaceURI=odf.Namespaces.lookupNamespaceURI;
-// Input 24
-xmldom.XPathIterator=function(){};xmldom.XPathIterator.prototype.next=function(){};xmldom.XPathIterator.prototype.reset=function(){};
-function createXPathSingleton(){function m(b,a,c){return-1!==b&&(b<a||-1===a)&&(b<c||-1===c)}function g(b){for(var a=[],c=0,d=b.length,h;c<d;){var f=b,k=d,n=a,g="",p=[],q=f.indexOf("[",c),s=f.indexOf("/",c),y=f.indexOf("=",c);m(s,q,y)?(g=f.substring(c,s),c=s+1):m(q,s,y)?(g=f.substring(c,q),c=e(f,q,p)):m(y,s,q)?(g=f.substring(c,y),c=y):(g=f.substring(c,k),c=k);n.push({location:g,predicates:p});if(c<d&&"="===b[c]){h=b.substring(c+1,d);if(2<h.length&&("'"===h[0]||'"'===h[0]))h=h.slice(1,h.length-1);
-else try{h=parseInt(h,10)}catch(F){}c=d}}return{steps:a,value:h}}function b(){var b=null,a=!1;this.setNode=function(a){b=a};this.reset=function(){a=!1};this.next=function(){var c=a?null:b;a=!0;return c}}function k(b,a,c){this.reset=function(){b.reset()};this.next=function(){for(var d=b.next();d;){d.nodeType===Node.ELEMENT_NODE&&(d=d.getAttributeNodeNS(a,c));if(d)break;d=b.next()}return d}}function d(b,a){var c=b.next(),d=null;this.reset=function(){b.reset();c=b.next();d=null};this.next=function(){for(;c;){if(d)if(a&&
-d.firstChild)d=d.firstChild;else{for(;!d.nextSibling&&d!==c;)d=d.parentNode;d===c?c=b.next():d=d.nextSibling}else{do(d=c.firstChild)||(c=b.next());while(c&&!d)}if(d&&d.nodeType===Node.ELEMENT_NODE)return d}return null}}function n(b,a){this.reset=function(){b.reset()};this.next=function(){for(var c=b.next();c&&!a(c);)c=b.next();return c}}function p(b,a,c){a=a.split(":",2);var d=c(a[0]),e=a[1];return new n(b,function(a){return a.localName===e&&a.namespaceURI===d})}function f(d,a,c){var e=new b,h=q(e,
-a,c),f=a.value;return void 0===f?new n(d,function(a){e.setNode(a);h.reset();return null!==h.next()}):new n(d,function(a){e.setNode(a);h.reset();return(a=h.next())?a.nodeValue===f:!1})}var q,e;e=function(b,a,c){for(var d=a,e=b.length,f=0;d<e;)"]"===b[d]?(f-=1,0>=f&&c.push(g(b.substring(a,d)))):"["===b[d]&&(0>=f&&(a=d+1),f+=1),d+=1;return d};q=function(b,a,c){var e,h,n,g;for(e=0;e<a.steps.length;e+=1){n=a.steps[e];h=n.location;if(""===h)b=new d(b,!1);else if("@"===h[0]){h=h.substr(1).split(":",2);g=
-c(h[0]);if(!g)throw"No namespace associated with the prefix "+h[0];b=new k(b,g,h[1])}else"."!==h&&(b=new d(b,!1),-1!==h.indexOf(":")&&(b=p(b,h,c)));for(h=0;h<n.predicates.length;h+=1)g=n.predicates[h],b=f(b,g,c)}return b};return{getODFElementsWithXPath:function(d,a,c){var e=d.ownerDocument,h=[],f=null;if(e&&"function"===typeof e.evaluate)for(c=e.evaluate(a,d,c,XPathResult.UNORDERED_NODE_ITERATOR_TYPE,null),f=c.iterateNext();null!==f;)f.nodeType===Node.ELEMENT_NODE&&h.push(f),f=c.iterateNext();else{h=
-new b;h.setNode(d);d=g(a);h=q(h,d,c);d=[];for(c=h.next();c;)d.push(c),c=h.next();h=d}return h}}}xmldom.XPath=createXPathSingleton();
-// Input 25
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-odf.StyleInfo=function(){function m(a,c){var b,d,e,h,l,f=0;if(b=L[a.localName])if(e=b[a.namespaceURI])f=e.length;for(b=0;b<f;b+=1)d=e[b],h=d.ns,l=d.localname,(d=a.getAttributeNS(h,l))&&a.setAttributeNS(h,y[h]+l,c+d);for(e=a.firstElementChild;e;)m(e,c),e=e.nextElementSibling}function g(a,c){var b,d,e,h,l,f=0;if(b=L[a.localName])if(e=b[a.namespaceURI])f=e.length;for(b=0;b<f;b+=1)if(d=e[b],h=d.ns,l=d.localname,d=a.getAttributeNS(h,l))d=d.replace(c,""),a.setAttributeNS(h,y[h]+l,d);for(e=a.firstElementChild;e;)g(e,
-c),e=e.nextElementSibling}function b(a,c){var b,d,e,h,l,f=0;if(b=L[a.localName])if(e=b[a.namespaceURI])f=e.length;for(b=0;b<f;b+=1)if(h=e[b],d=h.ns,l=h.localname,d=a.getAttributeNS(d,l))c=c||{},h=h.keyname,c.hasOwnProperty(h)?c[h][d]=1:(l={},l[d]=1,c[h]=l);return c}function k(a,c){var d,e;b(a,c);for(d=a.firstChild;d;)d.nodeType===Node.ELEMENT_NODE&&(e=d,k(e,c)),d=d.nextSibling}function d(a,c,b){this.key=a;this.name=c;this.family=b;this.requires={}}function n(a,c,b){var e=a+'"'+c,h=b[e];h||(h=b[e]=
-new d(e,a,c));return h}function p(a,c,b){var d,e,h,l,f,k=0;d=a.getAttributeNS(u,"name");l=a.getAttributeNS(u,"family");d&&l&&(c=n(d,l,b));if(c){if(d=L[a.localName])if(h=d[a.namespaceURI])k=h.length;for(d=0;d<k;d+=1)if(l=h[d],e=l.ns,f=l.localname,e=a.getAttributeNS(e,f))l=l.keyname,l=n(e,l,b),c.requires[l.key]=l}for(a=a.firstElementChild;a;)p(a,c,b),a=a.nextElementSibling;return b}function f(a,c){var b=c[a.family];b||(b=c[a.family]={});b[a.name]=1;Object.keys(a.requires).forEach(function(b){f(a.requires[b],
-c)})}function q(a,c){var b=p(a,null,{});Object.keys(b).forEach(function(a){a=b[a];var d=c[a.family];d&&d.hasOwnProperty(a.name)&&f(a,c)})}function e(a,c){function b(c){(c=l.getAttributeNS(u,c))&&(a[c]=!0)}var d=["font-name","font-name-asian","font-name-complex"],h,l;for(h=c&&c.firstElementChild;h;)l=h,d.forEach(b),e(a,l),h=h.nextElementSibling}function r(a,c){function b(a){var d=h.getAttributeNS(u,a);d&&c.hasOwnProperty(d)&&h.setAttributeNS(u,"style:"+a,c[d])}var d=["font-name","font-name-asian",
-"font-name-complex"],e,h;for(e=a&&a.firstElementChild;e;)h=e,d.forEach(b),r(h,c),e=e.nextElementSibling}var a=odf.Namespaces.chartns,c=odf.Namespaces.dbns,l=odf.Namespaces.dr3dns,h=odf.Namespaces.drawns,v=odf.Namespaces.formns,w=odf.Namespaces.numberns,z=odf.Namespaces.officens,x=odf.Namespaces.presentationns,u=odf.Namespaces.stylens,t=odf.Namespaces.tablens,s=odf.Namespaces.textns,y={"urn:oasis:names:tc:opendocument:xmlns:chart:1.0":"chart:","urn:oasis:names:tc:opendocument:xmlns:database:1.0":"db:",
-"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0":"dr3d:","urn:oasis:names:tc:opendocument:xmlns:drawing:1.0":"draw:","urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0":"fo:","urn:oasis:names:tc:opendocument:xmlns:form:1.0":"form:","urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0":"number:","urn:oasis:names:tc:opendocument:xmlns:office:1.0":"office:","urn:oasis:names:tc:opendocument:xmlns:presentation:1.0":"presentation:","urn:oasis:names:tc:opendocument:xmlns:style:1.0":"style:","urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0":"svg:",
-"urn:oasis:names:tc:opendocument:xmlns:table:1.0":"table:","urn:oasis:names:tc:opendocument:xmlns:text:1.0":"chart:","http://www.w3.org/XML/1998/namespace":"xml:"},F={text:[{ens:u,en:"tab-stop",ans:u,a:"leader-text-style"},{ens:u,en:"drop-cap",ans:u,a:"style-name"},{ens:s,en:"notes-configuration",ans:s,a:"citation-body-style-name"},{ens:s,en:"notes-configuration",ans:s,a:"citation-style-name"},{ens:s,en:"a",ans:s,a:"style-name"},{ens:s,en:"alphabetical-index",ans:s,a:"style-name"},{ens:s,en:"linenumbering-configuration",
-ans:s,a:"style-name"},{ens:s,en:"list-level-style-number",ans:s,a:"style-name"},{ens:s,en:"ruby-text",ans:s,a:"style-name"},{ens:s,en:"span",ans:s,a:"style-name"},{ens:s,en:"a",ans:s,a:"visited-style-name"},{ens:u,en:"text-properties",ans:u,a:"text-line-through-text-style"},{ens:s,en:"alphabetical-index-source",ans:s,a:"main-entry-style-name"},{ens:s,en:"index-entry-bibliography",ans:s,a:"style-name"},{ens:s,en:"index-entry-chapter",ans:s,a:"style-name"},{ens:s,en:"index-entry-link-end",ans:s,a:"style-name"},
-{ens:s,en:"index-entry-link-start",ans:s,a:"style-name"},{ens:s,en:"index-entry-page-number",ans:s,a:"style-name"},{ens:s,en:"index-entry-span",ans:s,a:"style-name"},{ens:s,en:"index-entry-tab-stop",ans:s,a:"style-name"},{ens:s,en:"index-entry-text",ans:s,a:"style-name"},{ens:s,en:"index-title-template",ans:s,a:"style-name"},{ens:s,en:"list-level-style-bullet",ans:s,a:"style-name"},{ens:s,en:"outline-level-style",ans:s,a:"style-name"}],paragraph:[{ens:h,en:"caption",ans:h,a:"text-style-name"},{ens:h,
-en:"circle",ans:h,a:"text-style-name"},{ens:h,en:"connector",ans:h,a:"text-style-name"},{ens:h,en:"control",ans:h,a:"text-style-name"},{ens:h,en:"custom-shape",ans:h,a:"text-style-name"},{ens:h,en:"ellipse",ans:h,a:"text-style-name"},{ens:h,en:"frame",ans:h,a:"text-style-name"},{ens:h,en:"line",ans:h,a:"text-style-name"},{ens:h,en:"measure",ans:h,a:"text-style-name"},{ens:h,en:"path",ans:h,a:"text-style-name"},{ens:h,en:"polygon",ans:h,a:"text-style-name"},{ens:h,en:"polyline",ans:h,a:"text-style-name"},
-{ens:h,en:"rect",ans:h,a:"text-style-name"},{ens:h,en:"regular-polygon",ans:h,a:"text-style-name"},{ens:z,en:"annotation",ans:h,a:"text-style-name"},{ens:v,en:"column",ans:v,a:"text-style-name"},{ens:u,en:"style",ans:u,a:"next-style-name"},{ens:t,en:"body",ans:t,a:"paragraph-style-name"},{ens:t,en:"even-columns",ans:t,a:"paragraph-style-name"},{ens:t,en:"even-rows",ans:t,a:"paragraph-style-name"},{ens:t,en:"first-column",ans:t,a:"paragraph-style-name"},{ens:t,en:"first-row",ans:t,a:"paragraph-style-name"},
-{ens:t,en:"last-column",ans:t,a:"paragraph-style-name"},{ens:t,en:"last-row",ans:t,a:"paragraph-style-name"},{ens:t,en:"odd-columns",ans:t,a:"paragraph-style-name"},{ens:t,en:"odd-rows",ans:t,a:"paragraph-style-name"},{ens:s,en:"notes-configuration",ans:s,a:"default-style-name"},{ens:s,en:"alphabetical-index-entry-template",ans:s,a:"style-name"},{ens:s,en:"bibliography-entry-template",ans:s,a:"style-name"},{ens:s,en:"h",ans:s,a:"style-name"},{ens:s,en:"illustration-index-entry-template",ans:s,a:"style-name"},
-{ens:s,en:"index-source-style",ans:s,a:"style-name"},{ens:s,en:"object-index-entry-template",ans:s,a:"style-name"},{ens:s,en:"p",ans:s,a:"style-name"},{ens:s,en:"table-index-entry-template",ans:s,a:"style-name"},{ens:s,en:"table-of-content-entry-template",ans:s,a:"style-name"},{ens:s,en:"table-index-entry-template",ans:s,a:"style-name"},{ens:s,en:"user-index-entry-template",ans:s,a:"style-name"},{ens:u,en:"page-layout-properties",ans:u,a:"register-truth-ref-style-name"}],chart:[{ens:a,en:"axis",ans:a,
-a:"style-name"},{ens:a,en:"chart",ans:a,a:"style-name"},{ens:a,en:"data-label",ans:a,a:"style-name"},{ens:a,en:"data-point",ans:a,a:"style-name"},{ens:a,en:"equation",ans:a,a:"style-name"},{ens:a,en:"error-indicator",ans:a,a:"style-name"},{ens:a,en:"floor",ans:a,a:"style-name"},{ens:a,en:"footer",ans:a,a:"style-name"},{ens:a,en:"grid",ans:a,a:"style-name"},{ens:a,en:"legend",ans:a,a:"style-name"},{ens:a,en:"mean-value",ans:a,a:"style-name"},{ens:a,en:"plot-area",ans:a,a:"style-name"},{ens:a,en:"regression-curve",
-ans:a,a:"style-name"},{ens:a,en:"series",ans:a,a:"style-name"},{ens:a,en:"stock-gain-marker",ans:a,a:"style-name"},{ens:a,en:"stock-loss-marker",ans:a,a:"style-name"},{ens:a,en:"stock-range-line",ans:a,a:"style-name"},{ens:a,en:"subtitle",ans:a,a:"style-name"},{ens:a,en:"title",ans:a,a:"style-name"},{ens:a,en:"wall",ans:a,a:"style-name"}],section:[{ens:s,en:"alphabetical-index",ans:s,a:"style-name"},{ens:s,en:"bibliography",ans:s,a:"style-name"},{ens:s,en:"illustration-index",ans:s,a:"style-name"},
-{ens:s,en:"index-title",ans:s,a:"style-name"},{ens:s,en:"object-index",ans:s,a:"style-name"},{ens:s,en:"section",ans:s,a:"style-name"},{ens:s,en:"table-of-content",ans:s,a:"style-name"},{ens:s,en:"table-index",ans:s,a:"style-name"},{ens:s,en:"user-index",ans:s,a:"style-name"}],ruby:[{ens:s,en:"ruby",ans:s,a:"style-name"}],table:[{ens:c,en:"query",ans:c,a:"style-name"},{ens:c,en:"table-representation",ans:c,a:"style-name"},{ens:t,en:"background",ans:t,a:"style-name"},{ens:t,en:"table",ans:t,a:"style-name"}],
-"table-column":[{ens:c,en:"column",ans:c,a:"style-name"},{ens:t,en:"table-column",ans:t,a:"style-name"}],"table-row":[{ens:c,en:"query",ans:c,a:"default-row-style-name"},{ens:c,en:"table-representation",ans:c,a:"default-row-style-name"},{ens:t,en:"table-row",ans:t,a:"style-name"}],"table-cell":[{ens:c,en:"column",ans:c,a:"default-cell-style-name"},{ens:t,en:"table-column",ans:t,a:"default-cell-style-name"},{ens:t,en:"table-row",ans:t,a:"default-cell-style-name"},{ens:t,en:"body",ans:t,a:"style-name"},
-{ens:t,en:"covered-table-cell",ans:t,a:"style-name"},{ens:t,en:"even-columns",ans:t,a:"style-name"},{ens:t,en:"covered-table-cell",ans:t,a:"style-name"},{ens:t,en:"even-columns",ans:t,a:"style-name"},{ens:t,en:"even-rows",ans:t,a:"style-name"},{ens:t,en:"first-column",ans:t,a:"style-name"},{ens:t,en:"first-row",ans:t,a:"style-name"},{ens:t,en:"last-column",ans:t,a:"style-name"},{ens:t,en:"last-row",ans:t,a:"style-name"},{ens:t,en:"odd-columns",ans:t,a:"style-name"},{ens:t,en:"odd-rows",ans:t,a:"style-name"},
-{ens:t,en:"table-cell",ans:t,a:"style-name"}],graphic:[{ens:l,en:"cube",ans:h,a:"style-name"},{ens:l,en:"extrude",ans:h,a:"style-name"},{ens:l,en:"rotate",ans:h,a:"style-name"},{ens:l,en:"scene",ans:h,a:"style-name"},{ens:l,en:"sphere",ans:h,a:"style-name"},{ens:h,en:"caption",ans:h,a:"style-name"},{ens:h,en:"circle",ans:h,a:"style-name"},{ens:h,en:"connector",ans:h,a:"style-name"},{ens:h,en:"control",ans:h,a:"style-name"},{ens:h,en:"custom-shape",ans:h,a:"style-name"},{ens:h,en:"ellipse",ans:h,a:"style-name"},
-{ens:h,en:"frame",ans:h,a:"style-name"},{ens:h,en:"g",ans:h,a:"style-name"},{ens:h,en:"line",ans:h,a:"style-name"},{ens:h,en:"measure",ans:h,a:"style-name"},{ens:h,en:"page-thumbnail",ans:h,a:"style-name"},{ens:h,en:"path",ans:h,a:"style-name"},{ens:h,en:"polygon",ans:h,a:"style-name"},{ens:h,en:"polyline",ans:h,a:"style-name"},{ens:h,en:"rect",ans:h,a:"style-name"},{ens:h,en:"regular-polygon",ans:h,a:"style-name"},{ens:z,en:"annotation",ans:h,a:"style-name"}],presentation:[{ens:l,en:"cube",ans:x,
-a:"style-name"},{ens:l,en:"extrude",ans:x,a:"style-name"},{ens:l,en:"rotate",ans:x,a:"style-name"},{ens:l,en:"scene",ans:x,a:"style-name"},{ens:l,en:"sphere",ans:x,a:"style-name"},{ens:h,en:"caption",ans:x,a:"style-name"},{ens:h,en:"circle",ans:x,a:"style-name"},{ens:h,en:"connector",ans:x,a:"style-name"},{ens:h,en:"control",ans:x,a:"style-name"},{ens:h,en:"custom-shape",ans:x,a:"style-name"},{ens:h,en:"ellipse",ans:x,a:"style-name"},{ens:h,en:"frame",ans:x,a:"style-name"},{ens:h,en:"g",ans:x,a:"style-name"},
-{ens:h,en:"line",ans:x,a:"style-name"},{ens:h,en:"measure",ans:x,a:"style-name"},{ens:h,en:"page-thumbnail",ans:x,a:"style-name"},{ens:h,en:"path",ans:x,a:"style-name"},{ens:h,en:"polygon",ans:x,a:"style-name"},{ens:h,en:"polyline",ans:x,a:"style-name"},{ens:h,en:"rect",ans:x,a:"style-name"},{ens:h,en:"regular-polygon",ans:x,a:"style-name"},{ens:z,en:"annotation",ans:x,a:"style-name"}],"drawing-page":[{ens:h,en:"page",ans:h,a:"style-name"},{ens:x,en:"notes",ans:h,a:"style-name"},{ens:u,en:"handout-master",
-ans:h,a:"style-name"},{ens:u,en:"master-page",ans:h,a:"style-name"}],"list-style":[{ens:s,en:"list",ans:s,a:"style-name"},{ens:s,en:"numbered-paragraph",ans:s,a:"style-name"},{ens:s,en:"list-item",ans:s,a:"style-override"},{ens:u,en:"style",ans:u,a:"list-style-name"}],data:[{ens:u,en:"style",ans:u,a:"data-style-name"},{ens:u,en:"style",ans:u,a:"percentage-data-style-name"},{ens:x,en:"date-time-decl",ans:u,a:"data-style-name"},{ens:s,en:"creation-date",ans:u,a:"data-style-name"},{ens:s,en:"creation-time",
-ans:u,a:"data-style-name"},{ens:s,en:"database-display",ans:u,a:"data-style-name"},{ens:s,en:"date",ans:u,a:"data-style-name"},{ens:s,en:"editing-duration",ans:u,a:"data-style-name"},{ens:s,en:"expression",ans:u,a:"data-style-name"},{ens:s,en:"meta-field",ans:u,a:"data-style-name"},{ens:s,en:"modification-date",ans:u,a:"data-style-name"},{ens:s,en:"modification-time",ans:u,a:"data-style-name"},{ens:s,en:"print-date",ans:u,a:"data-style-name"},{ens:s,en:"print-time",ans:u,a:"data-style-name"},{ens:s,
-en:"table-formula",ans:u,a:"data-style-name"},{ens:s,en:"time",ans:u,a:"data-style-name"},{ens:s,en:"user-defined",ans:u,a:"data-style-name"},{ens:s,en:"user-field-get",ans:u,a:"data-style-name"},{ens:s,en:"user-field-input",ans:u,a:"data-style-name"},{ens:s,en:"variable-get",ans:u,a:"data-style-name"},{ens:s,en:"variable-input",ans:u,a:"data-style-name"},{ens:s,en:"variable-set",ans:u,a:"data-style-name"}],"page-layout":[{ens:x,en:"notes",ans:u,a:"page-layout-name"},{ens:u,en:"handout-master",ans:u,
-a:"page-layout-name"},{ens:u,en:"master-page",ans:u,a:"page-layout-name"}]},L,O=xmldom.XPath;this.collectUsedFontFaces=e;this.changeFontFaceNames=r;this.UsedStyleList=function(a,c){var b={};this.uses=function(a){var c=a.localName,d=a.getAttributeNS(h,"name")||a.getAttributeNS(u,"name");a="style"===c?a.getAttributeNS(u,"family"):a.namespaceURI===w?"data":c;return(a=b[a])?0<a[d]:!1};k(a,b);c&&q(c,b)};this.hasDerivedStyles=function(a,c,b){var d=b.getAttributeNS(u,"name");b=b.getAttributeNS(u,"family");
-return O.getODFElementsWithXPath(a,"//style:*[@style:parent-style-name='"+d+"'][@style:family='"+b+"']",c).length?!0:!1};this.prefixStyleNames=function(a,c,b){var d;if(a){for(d=a.firstChild;d;){if(d.nodeType===Node.ELEMENT_NODE){var e=d,l=c,f=e.getAttributeNS(h,"name"),k=void 0;f?k=h:(f=e.getAttributeNS(u,"name"))&&(k=u);k&&e.setAttributeNS(k,y[k]+"name",l+f)}d=d.nextSibling}m(a,c);b&&m(b,c)}};this.removePrefixFromStyleNames=function(a,c,b){var d=RegExp("^"+c);if(a){for(c=a.firstChild;c;){if(c.nodeType===
-Node.ELEMENT_NODE){var e=c,l=d,f=e.getAttributeNS(h,"name"),k=void 0;f?k=h:(f=e.getAttributeNS(u,"name"))&&(k=u);k&&(f=f.replace(l,""),e.setAttributeNS(k,y[k]+"name",f))}c=c.nextSibling}g(a,d);b&&g(b,d)}};this.determineStylesForNode=b;L=function(){var a,c,b,d,e,h={},l,f,k,n;for(b in F)if(F.hasOwnProperty(b))for(d=F[b],c=d.length,a=0;a<c;a+=1)e=d[a],k=e.en,n=e.ens,h.hasOwnProperty(k)?l=h[k]:h[k]=l={},l.hasOwnProperty(n)?f=l[n]:l[n]=f=[],f.push({ns:e.ans,localname:e.a,keyname:b});return h}()};
-// Input 26
-"function"!==typeof Object.create&&(Object.create=function(m){var g=function(){};g.prototype=m;return new g});
-xmldom.LSSerializer=function(){function m(b){var k=b||{},g=function(b){var a={},c;for(c in b)b.hasOwnProperty(c)&&(a[b[c]]=c);return a}(b),f=[k],m=[g],e=0;this.push=function(){e+=1;k=f[e]=Object.create(k);g=m[e]=Object.create(g)};this.pop=function(){f.pop();m.pop();e-=1;k=f[e];g=m[e]};this.getLocalNamespaceDefinitions=function(){return g};this.getQName=function(b){var a=b.namespaceURI,c=0,d;if(!a)return b.localName;if(d=g[a])return d+":"+b.localName;do{d||!b.prefix?(d="ns"+c,c+=1):d=b.prefix;if(k[d]===
-a)break;if(!k[d]){k[d]=a;g[a]=d;break}d=null}while(null===d);return d+":"+b.localName}}function g(b){return b.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&apos;").replace(/"/g,"&quot;")}function b(d,n){var p="",f=k.filter?k.filter.acceptNode(n):NodeFilter.FILTER_ACCEPT,m;if(f===NodeFilter.FILTER_ACCEPT&&n.nodeType===Node.ELEMENT_NODE){d.push();m=d.getQName(n);var e,r=n.attributes,a,c,l,h="",v;e="<"+m;a=r.length;for(c=0;c<a;c+=1)l=r.item(c),"http://www.w3.org/2000/xmlns/"!==
-l.namespaceURI&&(v=k.filter?k.filter.acceptNode(l):NodeFilter.FILTER_ACCEPT,v===NodeFilter.FILTER_ACCEPT&&(v=d.getQName(l),l="string"===typeof l.value?g(l.value):l.value,h+=" "+(v+'="'+l+'"')));a=d.getLocalNamespaceDefinitions();for(c in a)a.hasOwnProperty(c)&&((r=a[c])?"xmlns"!==r&&(e+=" xmlns:"+a[c]+'="'+c+'"'):e+=' xmlns="'+c+'"');p+=e+(h+">")}if(f===NodeFilter.FILTER_ACCEPT||f===NodeFilter.FILTER_SKIP){for(f=n.firstChild;f;)p+=b(d,f),f=f.nextSibling;n.nodeValue&&(p+=g(n.nodeValue))}m&&(p+="</"+
-m+">",d.pop());return p}var k=this;this.filter=null;this.writeToString=function(d,k){if(!d)return"";var g=new m(k);return b(g,d)}};
-// Input 27
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-(function(){function m(b){var a,c=f.length;for(a=0;a<c;a+=1)if("urn:oasis:names:tc:opendocument:xmlns:office:1.0"===b.namespaceURI&&b.localName===f[a])return a;return-1}function g(b,a){var c=new d.UsedStyleList(b,a),e=new odf.OdfNodeFilter;this.acceptNode=function(b){var d=e.acceptNode(b);d===NodeFilter.FILTER_ACCEPT&&b.parentNode===a&&b.nodeType===Node.ELEMENT_NODE&&(d=c.uses(b)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT);return d}}function b(b,a){var c=new g(b,a);this.acceptNode=function(a){var b=
-c.acceptNode(a);b!==NodeFilter.FILTER_ACCEPT||!a.parentNode||a.parentNode.namespaceURI!==odf.Namespaces.textns||"s"!==a.parentNode.localName&&"tab"!==a.parentNode.localName||(b=NodeFilter.FILTER_REJECT);return b}}function k(b,a){if(a){var c=m(a),d,e=b.firstChild;if(-1!==c){for(;e;){d=m(e);if(-1!==d&&d>c)break;e=e.nextSibling}b.insertBefore(a,e)}}}var d=new odf.StyleInfo,n=new core.DomUtils,p=odf.Namespaces.stylens,f="meta settings scripts font-face-decls styles automatic-styles master-styles body".split(" "),
-q=(new Date).getTime()+"_webodf_",e=new core.Base64;odf.ODFElement=function(){};odf.ODFDocumentElement=function(){};odf.ODFDocumentElement.prototype=new odf.ODFElement;odf.ODFDocumentElement.prototype.constructor=odf.ODFDocumentElement;odf.ODFDocumentElement.prototype.fontFaceDecls=null;odf.ODFDocumentElement.prototype.manifest=null;odf.ODFDocumentElement.prototype.settings=null;odf.ODFDocumentElement.namespaceURI="urn:oasis:names:tc:opendocument:xmlns:office:1.0";odf.ODFDocumentElement.localName=
-"document";odf.AnnotationElement=function(){};odf.OdfPart=function(b,a,c,d){var e=this;this.size=0;this.type=null;this.name=b;this.container=c;this.url=null;this.mimetype=a;this.onstatereadychange=this.document=null;this.EMPTY=0;this.LOADING=1;this.DONE=2;this.state=this.EMPTY;this.data="";this.load=function(){null!==d&&(this.mimetype=a,d.loadAsDataURL(b,a,function(a,b){a&&runtime.log(a);e.url=b;if(e.onchange)e.onchange(e);if(e.onstatereadychange)e.onstatereadychange(e)}))}};odf.OdfPart.prototype.load=
-function(){};odf.OdfPart.prototype.getUrl=function(){return this.data?"data:;base64,"+e.toBase64(this.data):null};odf.OdfContainer=function a(c,l){function h(a){for(var b=a.firstChild,c;b;)c=b.nextSibling,b.nodeType===Node.ELEMENT_NODE?h(b):b.nodeType===Node.PROCESSING_INSTRUCTION_NODE&&a.removeChild(b),b=c}function f(a){var b={},c,d,e=a.ownerDocument.createNodeIterator(a,NodeFilter.SHOW_ELEMENT,null,!1);for(a=e.nextNode();a;)"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===a.namespaceURI&&("annotation"===
-a.localName?(c=a.getAttributeNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","name"))&&(b.hasOwnProperty(c)?runtime.log("Warning: annotation name used more than once with <office:annotation/>: '"+c+"'"):b[c]=a):"annotation-end"===a.localName&&((c=a.getAttributeNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","name"))?b.hasOwnProperty(c)?(d=b[c],d.annotationEndElement?runtime.log("Warning: annotation name used more than once with <office:annotation-end/>: '"+c+"'"):d.annotationEndElement=
-a):runtime.log("Warning: annotation end without an annotation start, name: '"+c+"'"):runtime.log("Warning: annotation end without a name found"))),a=e.nextNode()}function m(a,b){for(var c=a&&a.firstChild;c;)c.nodeType===Node.ELEMENT_NODE&&c.setAttributeNS("urn:webodf:names:scope","scope",b),c=c.nextSibling}function z(a){var b={},c;for(a=a.firstChild;a;)a.nodeType===Node.ELEMENT_NODE&&a.namespaceURI===p&&"font-face"===a.localName&&(c=a.getAttributeNS(p,"name"),b[c]=a),a=a.nextSibling;return b}function x(a,
-b){var c=null,d,e,h;if(a)for(c=a.cloneNode(!0),d=c.firstElementChild;d;)e=d.nextElementSibling,(h=d.getAttributeNS("urn:webodf:names:scope","scope"))&&h!==b&&c.removeChild(d),d=e;return c}function u(a,b){var c,e,h,l=null,f={};if(a)for(b.forEach(function(a){d.collectUsedFontFaces(f,a)}),l=a.cloneNode(!0),c=l.firstElementChild;c;)e=c.nextElementSibling,h=c.getAttributeNS(p,"name"),f[h]||l.removeChild(c),c=e;return l}function t(a){var b=M.rootElement.ownerDocument,c;if(a){h(a.documentElement);try{c=
-b.importNode(a.documentElement,!0)}catch(d){}}return c}function s(a){M.state=a;if(M.onchange)M.onchange(M);if(M.onstatereadychange)M.onstatereadychange(M)}function y(a){S=null;M.rootElement=a;a.fontFaceDecls=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","font-face-decls");a.styles=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","styles");a.automaticStyles=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","automatic-styles");a.masterStyles=
-n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","master-styles");a.body=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","body");a.meta=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","meta");f(a)}function F(b){var c=t(b),e=M.rootElement,h;c&&"document-styles"===c.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===c.namespaceURI?(e.fontFaceDecls=n.getDirectChild(c,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","font-face-decls"),
-k(e,e.fontFaceDecls),h=n.getDirectChild(c,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","styles"),e.styles=h||b.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","styles"),k(e,e.styles),h=n.getDirectChild(c,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","automatic-styles"),e.automaticStyles=h||b.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","automatic-styles"),m(e.automaticStyles,"document-styles"),k(e,e.automaticStyles),c=n.getDirectChild(c,"urn:oasis:names:tc:opendocument:xmlns:office:1.0",
-"master-styles"),e.masterStyles=c||b.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","master-styles"),k(e,e.masterStyles),d.prefixStyleNames(e.automaticStyles,q,e.masterStyles)):s(a.INVALID)}function L(b){b=t(b);var c,e,h,l;if(b&&"document-content"===b.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===b.namespaceURI){c=M.rootElement;h=n.getDirectChild(b,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","font-face-decls");if(c.fontFaceDecls&&h){l=c.fontFaceDecls;var f,
-g,y,L,q={};e=z(l);L=z(h);for(h=h.firstElementChild;h;){f=h.nextElementSibling;if(h.namespaceURI===p&&"font-face"===h.localName)if(g=h.getAttributeNS(p,"name"),e.hasOwnProperty(g)){if(!h.isEqualNode(e[g])){y=g;for(var H=e,G=L,F=0,v=void 0,v=y=y.replace(/\d+$/,"");H.hasOwnProperty(v)||G.hasOwnProperty(v);)F+=1,v=y+F;y=v;h.setAttributeNS(p,"style:name",y);l.appendChild(h);e[y]=h;delete L[g];q[g]=y}}else l.appendChild(h),e[g]=h,delete L[g];h=f}l=q}else h&&(c.fontFaceDecls=h,k(c,h));e=n.getDirectChild(b,
-"urn:oasis:names:tc:opendocument:xmlns:office:1.0","automatic-styles");m(e,"document-content");l&&d.changeFontFaceNames(e,l);if(c.automaticStyles&&e)for(l=e.firstChild;l;)c.automaticStyles.appendChild(l),l=e.firstChild;else e&&(c.automaticStyles=e,k(c,e));b=n.getDirectChild(b,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","body");if(null===b)throw"<office:body/> tag is mising.";c.body=b;k(c,c.body)}else s(a.INVALID)}function O(a){a=t(a);var b;a&&"document-meta"===a.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===
-a.namespaceURI&&(b=M.rootElement,b.meta=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","meta"),k(b,b.meta))}function H(a){a=t(a);var b;a&&"document-settings"===a.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===a.namespaceURI&&(b=M.rootElement,b.settings=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","settings"),k(b,b.settings))}function U(a){a=t(a);var b;if(a&&"manifest"===a.localName&&"urn:oasis:names:tc:opendocument:xmlns:manifest:1.0"===
-a.namespaceURI)for(b=M.rootElement,b.manifest=a,a=b.manifest.firstElementChild;a;)"file-entry"===a.localName&&"urn:oasis:names:tc:opendocument:xmlns:manifest:1.0"===a.namespaceURI&&(W[a.getAttributeNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0","full-path")]=a.getAttributeNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0","media-type")),a=a.nextElementSibling}function T(b){var c=b.shift();c?$.loadAsDOM(c.path,function(d,e){c.handler(e);d||M.state===a.INVALID||T(b)}):(f(M.rootElement),
-s(a.DONE))}function X(a){var b="";odf.Namespaces.forEachPrefix(function(a,c){b+=" xmlns:"+a+'="'+c+'"'});return'<?xml version="1.0" encoding="UTF-8"?><office:'+a+" "+b+' office:version="1.2">'}function D(){var a=new xmldom.LSSerializer,b=X("document-meta");a.filter=new odf.OdfNodeFilter;b+=a.writeToString(M.rootElement.meta,odf.Namespaces.namespaceMap);return b+"</office:document-meta>"}function ba(a,b){var c=document.createElementNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0","manifest:file-entry");
-c.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0","manifest:full-path",a);c.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0","manifest:media-type",b);return c}function G(){var a=runtime.parseXML('<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0" manifest:version="1.2"></manifest:manifest>'),b=a.documentElement,c=new xmldom.LSSerializer,d;for(d in W)W.hasOwnProperty(d)&&b.appendChild(ba(d,W[d]));c.filter=new odf.OdfNodeFilter;
-return'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n'+c.writeToString(a,odf.Namespaces.namespaceMap)}function J(){var a=new xmldom.LSSerializer,b=X("document-settings");a.filter=new odf.OdfNodeFilter;M.rootElement.settings.firstElementChild&&(b+=a.writeToString(M.rootElement.settings,odf.Namespaces.namespaceMap));return b+"</office:document-settings>"}function Q(){var a,b,c,e=odf.Namespaces.namespaceMap,h=new xmldom.LSSerializer,l=X("document-styles");b=x(M.rootElement.automaticStyles,
-"document-styles");c=M.rootElement.masterStyles.cloneNode(!0);a=u(M.rootElement.fontFaceDecls,[c,M.rootElement.styles,b]);d.removePrefixFromStyleNames(b,q,c);h.filter=new g(c,b);l+=h.writeToString(a,e);l+=h.writeToString(M.rootElement.styles,e);l+=h.writeToString(b,e);l+=h.writeToString(c,e);return l+"</office:document-styles>"}function ea(){var a,c,d=odf.Namespaces.namespaceMap,e=new xmldom.LSSerializer,h=X("document-content");c=x(M.rootElement.automaticStyles,"document-content");a=u(M.rootElement.fontFaceDecls,
-[c]);e.filter=new b(M.rootElement.body,c);h+=e.writeToString(a,d);h+=e.writeToString(c,d);h+=e.writeToString(M.rootElement.body,d);return h+"</office:document-content>"}function P(b,c){runtime.loadXML(b,function(b,d){if(b)c(b);else{var e=t(d);e&&"document"===e.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===e.namespaceURI?(y(e),s(a.DONE)):s(a.INVALID)}})}function N(a,b){var c;c=M.rootElement;var d=c.meta;d||(c.meta=d=document.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0",
-"meta"),k(c,d));c=d;a&&n.mapKeyValObjOntoNode(c,a,odf.Namespaces.lookupNamespaceURI);b&&n.removeKeyElementsFromNode(c,b,odf.Namespaces.lookupNamespaceURI)}function I(){function b(a,c){var d;c||(c=a);d=document.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0",c);e[a]=d;e.appendChild(d)}var c=new core.Zip("",null),d=runtime.byteArrayFromString("application/vnd.oasis.opendocument.text","utf8"),e=M.rootElement,h=document.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0",
-"text");c.save("mimetype",d,!1,new Date);b("meta");b("settings");b("scripts");b("fontFaceDecls","font-face-decls");b("styles");b("automaticStyles","automatic-styles");b("masterStyles","master-styles");b("body");e.body.appendChild(h);W["/"]="application/vnd.oasis.opendocument.text";W["settings.xml"]="text/xml";W["meta.xml"]="text/xml";W["styles.xml"]="text/xml";W["content.xml"]="text/xml";s(a.DONE);return c}function B(){var a,b=new Date,c=runtime.getWindow();a="WebODF/"+("undefined"!==String(typeof webodf_version)?
-webodf_version:"FromSource");c&&(a=a+" "+c.navigator.userAgent);N({"meta:generator":a},null);a=runtime.byteArrayFromString(J(),"utf8");$.save("settings.xml",a,!0,b);a=runtime.byteArrayFromString(D(),"utf8");$.save("meta.xml",a,!0,b);a=runtime.byteArrayFromString(Q(),"utf8");$.save("styles.xml",a,!0,b);a=runtime.byteArrayFromString(ea(),"utf8");$.save("content.xml",a,!0,b);a=runtime.byteArrayFromString(G(),"utf8");$.save("META-INF/manifest.xml",a,!0,b)}function V(a,b){B();$.writeAs(a,function(a){b(a)})}
-var M=this,$,W={},S;this.onstatereadychange=l;this.state=this.onchange=null;this.setRootElement=y;this.getContentElement=function(){var a;S||(a=M.rootElement.body,S=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","text")||n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","presentation")||n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","spreadsheet"));if(!S)throw"Could not find content element in <office:body/>.";return S};this.getDocumentType=
-function(){var a=M.getContentElement();return a&&a.localName};this.getPart=function(a){return new odf.OdfPart(a,W[a],M,$)};this.getPartData=function(a,b){$.load(a,b)};this.setMetadata=N;this.incrementEditingCycles=function(){var a;for(a=(a=M.rootElement.meta)&&a.firstChild;a&&(a.namespaceURI!==odf.Namespaces.metans||"editing-cycles"!==a.localName);)a=a.nextSibling;for(a=a&&a.firstChild;a&&a.nodeType!==Node.TEXT_NODE;)a=a.nextSibling;a=a?a.data:null;a=a?parseInt(a,10):0;isNaN(a)&&(a=0);N({"meta:editing-cycles":a+
-1},null)};this.createByteArray=function(a,b){B();$.createByteArray(a,b)};this.saveAs=V;this.save=function(a){V(c,a)};this.getUrl=function(){return c};this.setBlob=function(a,b,c){c=e.convertBase64ToByteArray(c);$.save(a,c,!1,new Date);W.hasOwnProperty(a)&&runtime.log(a+" has been overwritten.");W[a]=b};this.removeBlob=function(a){var b=$.remove(a);runtime.assert(b,"file is not found: "+a);delete W[a]};this.state=a.LOADING;this.rootElement=function(a){var b=document.createElementNS(a.namespaceURI,
-a.localName),c;a=new a.Type;for(c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b}({Type:odf.ODFDocumentElement,namespaceURI:odf.ODFDocumentElement.namespaceURI,localName:odf.ODFDocumentElement.localName});$=c?new core.Zip(c,function(b,d){$=d;b?P(c,function(c){b&&($.error=b+"\n"+c,s(a.INVALID))}):T([{path:"styles.xml",handler:F},{path:"content.xml",handler:L},{path:"meta.xml",handler:O},{path:"settings.xml",handler:H},{path:"META-INF/manifest.xml",handler:U}])}):I()};odf.OdfContainer.EMPTY=0;odf.OdfContainer.LOADING=
-1;odf.OdfContainer.DONE=2;odf.OdfContainer.INVALID=3;odf.OdfContainer.SAVING=4;odf.OdfContainer.MODIFIED=5;odf.OdfContainer.getContainer=function(a){return new odf.OdfContainer(a,null)};return odf.OdfContainer})();
-// Input 28
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-odf.OdfUtils=function(){function m(a){return"image"===(a&&a.localName)&&a.namespaceURI===T}function g(a){return null!==a&&a.nodeType===Node.ELEMENT_NODE&&"frame"===a.localName&&a.namespaceURI===T&&"as-char"===a.getAttributeNS(U,"anchor-type")}function b(a){var b;(b="annotation"===(a&&a.localName)&&a.namespaceURI===odf.Namespaces.officens)||(b="div"===(a&&a.localName)&&"annotationWrapper"===a.className);return b}function k(a){return"a"===(a&&a.localName)&&a.namespaceURI===U}function d(a){var b=a&&
-a.localName;return("p"===b||"h"===b)&&a.namespaceURI===U}function n(a){for(;a&&!d(a);)a=a.parentNode;return a}function p(a){return/^[ \t\r\n]+$/.test(a)}function f(a){if(null===a||a.nodeType!==Node.ELEMENT_NODE)return!1;var b=a.localName;return/^(span|p|h|a|meta)$/.test(b)&&a.namespaceURI===U||"span"===b&&"annotationHighlight"===a.className}function q(a){var b=a&&a.localName,c=!1;b&&(a=a.namespaceURI,a===U&&(c="s"===b||"tab"===b||"line-break"===b));return c}function e(a){return q(a)||g(a)||b(a)}function r(a){var b=
-a&&a.localName,c=!1;b&&(a=a.namespaceURI,a===U&&(c="s"===b));return c}function a(a){for(;null!==a.firstChild&&f(a);)a=a.firstChild;return a}function c(a){for(;null!==a.lastChild&&f(a);)a=a.lastChild;return a}function l(a){for(;!d(a)&&null===a.previousSibling;)a=a.parentNode;return d(a)?null:c(a.previousSibling)}function h(b){for(;!d(b)&&null===b.nextSibling;)b=b.parentNode;return d(b)?null:a(b.nextSibling)}function v(a){for(var b=!1;a;)if(a.nodeType===Node.TEXT_NODE)if(0===a.length)a=l(a);else return!p(a.data.substr(a.length-
-1,1));else e(a)?(b=!1===r(a),a=null):a=l(a);return b}function w(b){var c=!1,d;for(b=b&&a(b);b;){d=b.nodeType===Node.TEXT_NODE?b.length:0;if(0<d&&!p(b.data)){c=!0;break}if(e(b)){c=!0;break}b=h(b)}return c}function z(a,b){return p(a.data.substr(b))?!w(h(a)):!1}function x(a,b){var c=a.data,d;if(!p(c[b])||e(a.parentNode))return!1;0<b?p(c[b-1])||(d=!0):v(l(a))&&(d=!0);return!0===d?z(a,b)?!1:!0:!1}function u(a){return(a=/(-?[0-9]*[0-9][0-9]*(\.[0-9]*)?|0+\.[0-9]*[1-9][0-9]*|\.[0-9]*[1-9][0-9]*)((cm)|(mm)|(in)|(pt)|(pc)|(px)|(%))/.exec(a))?
-{value:parseFloat(a[1]),unit:a[3]}:null}function t(a){return(a=u(a))&&(0>a.value||"%"===a.unit)?null:a}function s(a){return(a=u(a))&&"%"!==a.unit?null:a}function y(a){switch(a.namespaceURI){case odf.Namespaces.drawns:case odf.Namespaces.svgns:case odf.Namespaces.dr3dns:return!1;case odf.Namespaces.textns:switch(a.localName){case "note-body":case "ruby-text":return!1}break;case odf.Namespaces.officens:switch(a.localName){case "annotation":case "binary-data":case "event-listeners":return!1}break;default:switch(a.localName){case "cursor":case "editinfo":return!1}}return!0}
-function F(a,b){for(;0<b.length&&!ba.rangeContainsNode(a,b[0]);)b.shift();for(;0<b.length&&!ba.rangeContainsNode(a,b[b.length-1]);)b.pop()}function L(a,c,d){var h;h=ba.getNodesInRange(a,function(a){var c=NodeFilter.FILTER_REJECT;if(q(a.parentNode)||b(a))c=NodeFilter.FILTER_REJECT;else if(a.nodeType===Node.TEXT_NODE){if(d||Boolean(n(a)&&(!p(a.textContent)||x(a,0))))c=NodeFilter.FILTER_ACCEPT}else if(e(a))c=NodeFilter.FILTER_ACCEPT;else if(y(a)||f(a))c=NodeFilter.FILTER_SKIP;return c},NodeFilter.SHOW_ELEMENT|
-NodeFilter.SHOW_TEXT);c||F(a,h);return h}function O(a,c,d){for(;a;){if(d(a)){c[0]!==a&&c.unshift(a);break}if(b(a))break;a=a.parentNode}}function H(a,b){var c=a;if(b<c.childNodes.length-1)c=c.childNodes[b+1];else{for(;!c.nextSibling;)c=c.parentNode;c=c.nextSibling}for(;c.firstChild;)c=c.firstChild;return c}var U=odf.Namespaces.textns,T=odf.Namespaces.drawns,X=odf.Namespaces.xlinkns,D=/^\s*$/,ba=new core.DomUtils;this.isImage=m;this.isCharacterFrame=g;this.isInlineRoot=b;this.isTextSpan=function(a){return"span"===
-(a&&a.localName)&&a.namespaceURI===U};this.isHyperlink=k;this.getHyperlinkTarget=function(a){return a.getAttributeNS(X,"href")};this.isParagraph=d;this.getParagraphElement=n;this.isWithinTrackedChanges=function(a,b){for(;a&&a!==b;){if(a.namespaceURI===U&&"tracked-changes"===a.localName)return!0;a=a.parentNode}return!1};this.isListItem=function(a){return"list-item"===(a&&a.localName)&&a.namespaceURI===U};this.isLineBreak=function(a){return"line-break"===(a&&a.localName)&&a.namespaceURI===U};this.isODFWhitespace=
-p;this.isGroupingElement=f;this.isCharacterElement=q;this.isAnchoredAsCharacterElement=e;this.isSpaceElement=r;this.firstChild=a;this.lastChild=c;this.previousNode=l;this.nextNode=h;this.scanLeftForNonSpace=v;this.lookLeftForCharacter=function(a){var b,c=b=0;a.nodeType===Node.TEXT_NODE&&(c=a.length);0<c?(b=a.data,b=p(b.substr(c-1,1))?1===c?v(l(a))?2:0:p(b.substr(c-2,1))?0:2:1):e(a)&&(b=1);return b};this.lookRightForCharacter=function(a){var b=!1,c=0;a&&a.nodeType===Node.TEXT_NODE&&(c=a.length);0<
-c?b=!p(a.data.substr(0,1)):e(a)&&(b=!0);return b};this.scanLeftForAnyCharacter=function(a){var b=!1,d;for(a=a&&c(a);a;){d=a.nodeType===Node.TEXT_NODE?a.length:0;if(0<d&&!p(a.data)){b=!0;break}if(e(a)){b=!0;break}a=l(a)}return b};this.scanRightForAnyCharacter=w;this.isTrailingWhitespace=z;this.isSignificantWhitespace=x;this.isDowngradableSpaceElement=function(a){return a.namespaceURI===U&&"s"===a.localName?v(l(a))&&w(h(a)):!1};this.getFirstNonWhitespaceChild=function(a){for(a=a&&a.firstChild;a&&a.nodeType===
-Node.TEXT_NODE&&D.test(a.nodeValue);)a=a.nextSibling;return a};this.parseLength=u;this.parseNonNegativeLength=t;this.parseFoFontSize=function(a){var b;b=(b=u(a))&&(0>=b.value||"%"===b.unit)?null:b;return b||s(a)};this.parseFoLineHeight=function(a){return t(a)||s(a)};this.isTextContentContainingNode=y;this.getTextNodes=function(a,b){var c;c=ba.getNodesInRange(a,function(a){var b=NodeFilter.FILTER_REJECT;a.nodeType===Node.TEXT_NODE?Boolean(n(a)&&(!p(a.textContent)||x(a,0)))&&(b=NodeFilter.FILTER_ACCEPT):
-y(a)&&(b=NodeFilter.FILTER_SKIP);return b},NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT);b||F(a,c);return c};this.getTextElements=L;this.getParagraphElements=function(a){var b;b=ba.getNodesInRange(a,function(a){var b=NodeFilter.FILTER_REJECT;if(d(a))b=NodeFilter.FILTER_ACCEPT;else if(y(a)||f(a))b=NodeFilter.FILTER_SKIP;return b},NodeFilter.SHOW_ELEMENT);O(a.startContainer,b,d);return b};this.getImageElements=function(a){var b;b=ba.getNodesInRange(a,function(a){var b=NodeFilter.FILTER_SKIP;m(a)&&(b=
-NodeFilter.FILTER_ACCEPT);return b},NodeFilter.SHOW_ELEMENT);O(a.startContainer,b,m);return b};this.getHyperlinkElements=function(a){var b=[],c=a.cloneRange();a.collapsed&&a.endContainer.nodeType===Node.ELEMENT_NODE&&(a=H(a.endContainer,a.endOffset),a.nodeType===Node.TEXT_NODE&&c.setEnd(a,1));L(c,!0,!1).forEach(function(a){for(a=a.parentNode;!d(a);){if(k(a)&&-1===b.indexOf(a)){b.push(a);break}a=a.parentNode}});c.detach();return b}};
-// Input 29
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.AnnotatableCanvas=function(){};gui.AnnotatableCanvas.prototype.refreshSize=function(){};gui.AnnotatableCanvas.prototype.getZoomLevel=function(){};gui.AnnotatableCanvas.prototype.getSizer=function(){};
-gui.AnnotationViewManager=function(m,g,b,k){function d(a){var b=a.annotationEndElement,d=e.createRange(),f=a.getAttributeNS(odf.Namespaces.officens,"name");b&&(d.setStart(a,a.childNodes.length),d.setEnd(b,0),a=r.getTextNodes(d,!1),a.forEach(function(a){var b=e.createElement("span");b.className="annotationHighlight";b.setAttribute("annotation",f);a.parentNode.insertBefore(b,a);b.appendChild(a)}));d.detach()}function n(c){var d=m.getSizer();c?(b.style.display="inline-block",d.style.paddingRight=a.getComputedStyle(b).width):
-(b.style.display="none",d.style.paddingRight=0);m.refreshSize()}function p(){q.sort(function(a,b){return 0!==(a.compareDocumentPosition(b)&Node.DOCUMENT_POSITION_FOLLOWING)?-1:1})}function f(){var a;for(a=0;a<q.length;a+=1){var d=q[a],e=d.parentNode,f=e.nextElementSibling,k=f.nextElementSibling,g=e.parentNode,n=0,n=q[q.indexOf(d)-1],p=void 0,d=m.getZoomLevel();e.style.left=(b.getBoundingClientRect().left-g.getBoundingClientRect().left)/d+"px";e.style.width=b.getBoundingClientRect().width/d+"px";f.style.width=
-parseFloat(e.style.left)-30+"px";n&&(p=n.parentNode.getBoundingClientRect(),20>=(g.getBoundingClientRect().top-p.bottom)/d?e.style.top=Math.abs(g.getBoundingClientRect().top-p.bottom)/d+20+"px":e.style.top="0px");k.style.left=f.getBoundingClientRect().width/d+"px";var f=k.style,g=k.getBoundingClientRect().left/d,n=k.getBoundingClientRect().top/d,p=e.getBoundingClientRect().left/d,r=e.getBoundingClientRect().top/d,s=0,y=0,s=p-g,s=s*s,y=r-n,y=y*y,g=Math.sqrt(s+y);f.width=g+"px";n=Math.asin((e.getBoundingClientRect().top-
-k.getBoundingClientRect().top)/(d*parseFloat(k.style.width)));k.style.transform="rotate("+n+"rad)";k.style.MozTransform="rotate("+n+"rad)";k.style.WebkitTransform="rotate("+n+"rad)";k.style.msTransform="rotate("+n+"rad)"}}var q=[],e=g.ownerDocument,r=new odf.OdfUtils,a=runtime.getWindow();runtime.assert(Boolean(a),"Expected to be run in an environment which has a global window, like a browser.");this.rerenderAnnotations=f;this.getMinimumHeightForAnnotationPane=function(){return"none"!==b.style.display&&
-0<q.length?(q[q.length-1].parentNode.getBoundingClientRect().bottom-b.getBoundingClientRect().top)/m.getZoomLevel()+"px":null};this.addAnnotation=function(a){n(!0);q.push(a);p();var b=e.createElement("div"),h=e.createElement("div"),g=e.createElement("div"),m=e.createElement("div"),r;b.className="annotationWrapper";a.parentNode.insertBefore(b,a);h.className="annotationNote";h.appendChild(a);k&&(r=e.createElement("div"),r.className="annotationRemoveButton",h.appendChild(r));g.className="annotationConnector horizontal";
-m.className="annotationConnector angular";b.appendChild(h);b.appendChild(g);b.appendChild(m);a.annotationEndElement&&d(a);f()};this.forgetAnnotations=function(){for(;q.length;){var a=q[0],b=q.indexOf(a),d=a.parentNode.parentNode;"div"===d.localName&&(d.parentNode.insertBefore(a,d),d.parentNode.removeChild(d));for(var a=a.getAttributeNS(odf.Namespaces.officens,"name"),a=e.querySelectorAll('span.annotationHighlight[annotation="'+a+'"]'),f=d=void 0,d=0;d<a.length;d+=1){for(f=a.item(d);f.firstChild;)f.parentNode.insertBefore(f.firstChild,
-f);f.parentNode.removeChild(f)}-1!==b&&q.splice(b,1);0===q.length&&n(!1)}}};
-// Input 30
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-(function(){function m(k,d,g,p,f){var q,e=0,r;for(r in k)if(k.hasOwnProperty(r)){if(e===g){q=r;break}e+=1}q?d.getPartData(k[q].href,function(a,c){if(a)runtime.log(a);else if(c){var e="@font-face { font-family: '"+(k[q].family||q)+"'; src: url(data:application/x-font-ttf;charset=binary;base64,"+b.convertUTF8ArrayToBase64(c)+') format("truetype"); }';try{p.insertRule(e,p.cssRules.length)}catch(h){runtime.log("Problem inserting rule in CSS: "+runtime.toJson(h)+"\nRule: "+e)}}else runtime.log("missing font data for "+
-k[q].href);m(k,d,g+1,p,f)}):f&&f()}var g=xmldom.XPath,b=new core.Base64;odf.FontLoader=function(){this.loadFonts=function(b,d){for(var n=b.rootElement.fontFaceDecls;d.cssRules.length;)d.deleteRule(d.cssRules.length-1);if(n){var p={},f,q,e,r;if(n)for(n=g.getODFElementsWithXPath(n,"style:font-face[svg:font-face-src]",odf.Namespaces.lookupNamespaceURI),f=0;f<n.length;f+=1)q=n[f],e=q.getAttributeNS(odf.Namespaces.stylens,"name"),r=q.getAttributeNS(odf.Namespaces.svgns,"font-family"),q=g.getODFElementsWithXPath(q,
-"svg:font-face-src/svg:font-face-uri",odf.Namespaces.lookupNamespaceURI),0<q.length&&(q=q[0].getAttributeNS(odf.Namespaces.xlinkns,"href"),p[e]={href:q,family:r});m(p,b,0,d)}}};return odf.FontLoader})();
-// Input 31
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-odf.Formatting=function(){function m(a){return(a=t[a])?u.mergeObjects({},a):{}}function g(){for(var a=r.rootElement.fontFaceDecls,b={},d,e,a=a&&a.firstElementChild;a;){if(d=a.getAttributeNS(l,"name"))if((e=a.getAttributeNS(c,"font-family"))||0<a.getElementsByTagNameNS(c,"font-face-uri").length)b[d]=e;a=a.nextElementSibling}return b}function b(a){for(var b=r.rootElement.styles.firstElementChild;b;){if(b.namespaceURI===l&&"default-style"===b.localName&&b.getAttributeNS(l,"family")===a)return b;b=b.nextElementSibling}return null}
-function k(a,b,c){var d,e,f;c=c||[r.rootElement.automaticStyles,r.rootElement.styles];for(f=0;f<c.length;f+=1)for(d=c[f],d=d.firstElementChild;d;){e=d.getAttributeNS(l,"name");if(d.namespaceURI===l&&"style"===d.localName&&d.getAttributeNS(l,"family")===b&&e===a||"list-style"===b&&d.namespaceURI===h&&"list-style"===d.localName&&e===a||"data"===b&&d.namespaceURI===v&&e===a)return d;d=d.nextElementSibling}return null}function d(a){for(var b,c,d,e,h={},f=a.firstElementChild;f;){if(f.namespaceURI===l)for(d=
-h[f.nodeName]={},c=f.attributes,b=0;b<c.length;b+=1)e=c.item(b),d[e.name]=e.value;f=f.nextElementSibling}c=a.attributes;for(b=0;b<c.length;b+=1)e=c.item(b),h[e.name]=e.value;return h}function n(a,c){for(var e=r.rootElement.styles,h,f={},g=a.getAttributeNS(l,"family"),n=a;n;)h=d(n),f=u.mergeObjects(h,f),n=(h=n.getAttributeNS(l,"parent-style-name"))?k(h,g,[e]):null;if(n=b(g))h=d(n),f=u.mergeObjects(h,f);!1!==c&&(h=m(g),f=u.mergeObjects(h,f));return f}function p(b,c){function d(a){Object.keys(a).forEach(function(b){Object.keys(a[b]).forEach(function(a){l+=
-"|"+b+":"+a+"|"})})}for(var e=b.nodeType===Node.TEXT_NODE?b.parentNode:b,h,f=[],l="",k=!1;e;)!k&&z.isGroupingElement(e)&&(k=!0),(h=a.determineStylesForNode(e))&&f.push(h),e=e.parentNode;k&&(f.forEach(d),c&&(c[l]=f));return k?f:void 0}function f(a){var b={orderedStyles:[]};a.forEach(function(a){Object.keys(a).forEach(function(c){var d=Object.keys(a[c])[0],e={name:d,family:c,displayName:void 0,isCommonStyle:!1},h;(h=k(d,c))?(c=n(h),b=u.mergeObjects(c,b),e.displayName=h.getAttributeNS(l,"display-name"),
-e.isCommonStyle=h.parentNode===r.rootElement.styles):runtime.log("No style element found for '"+d+"' of family '"+c+"'");b.orderedStyles.push(e)})});return b}function q(a,b){var c={},d=[];b||(b={});a.forEach(function(a){p(a,c)});Object.keys(c).forEach(function(a){b[a]||(b[a]=f(c[a]));d.push(b[a])});return d}function e(a,b){var c=z.parseLength(a),d=b;if(c)switch(c.unit){case "cm":d=c.value;break;case "mm":d=0.1*c.value;break;case "in":d=2.54*c.value;break;case "pt":d=0.035277778*c.value;break;case "pc":case "px":case "em":break;
-default:runtime.log("Unit identifier: "+c.unit+" is not supported.")}return d}var r,a=new odf.StyleInfo,c=odf.Namespaces.svgns,l=odf.Namespaces.stylens,h=odf.Namespaces.textns,v=odf.Namespaces.numberns,w=odf.Namespaces.fons,z=new odf.OdfUtils,x=new core.DomUtils,u=new core.Utils,t={paragraph:{"style:paragraph-properties":{"fo:text-align":"left"}}};this.getSystemDefaultStyleAttributes=m;this.setOdfContainer=function(a){r=a};this.getFontMap=g;this.getAvailableParagraphStyles=function(){for(var a=r.rootElement.styles,
-b,c,d=[],a=a&&a.firstElementChild;a;)"style"===a.localName&&a.namespaceURI===l&&(b=a.getAttributeNS(l,"family"),"paragraph"===b&&(b=a.getAttributeNS(l,"name"),c=a.getAttributeNS(l,"display-name")||b,b&&c&&d.push({name:b,displayName:c}))),a=a.nextElementSibling;return d};this.isStyleUsed=function(b){var c,d=r.rootElement;c=a.hasDerivedStyles(d,odf.Namespaces.lookupNamespaceURI,b);b=(new a.UsedStyleList(d.styles)).uses(b)||(new a.UsedStyleList(d.automaticStyles)).uses(b)||(new a.UsedStyleList(d.body)).uses(b);
-return c||b};this.getDefaultStyleElement=b;this.getStyleElement=k;this.getStyleAttributes=d;this.getInheritedStyleAttributes=n;this.getFirstCommonParentStyleNameOrSelf=function(a){var b=r.rootElement.automaticStyles,c=r.rootElement.styles,d;for(d=k(a,"paragraph",[b]);d;)a=d.getAttributeNS(l,"parent-style-name"),d=k(a,"paragraph",[b]);return(d=k(a,"paragraph",[c]))?a:null};this.hasParagraphStyle=function(a){return Boolean(k(a,"paragraph"))};this.getAppliedStyles=q;this.getAppliedStylesForElement=function(a,
-b){return q([a],b)[0]};this.updateStyle=function(a,b){var d,e;x.mapObjOntoNode(a,b,odf.Namespaces.lookupNamespaceURI);(d=b["style:text-properties"]&&b["style:text-properties"]["style:font-name"])&&!g().hasOwnProperty(d)&&(e=a.ownerDocument.createElementNS(l,"style:font-face"),e.setAttributeNS(l,"style:name",d),e.setAttributeNS(c,"svg:font-family",d),r.rootElement.fontFaceDecls.appendChild(e))};this.createDerivedStyleObject=function(a,b,c){var e=k(a,b);runtime.assert(Boolean(e),"No style element found for '"+
-a+"' of family '"+b+"'");a=e.parentNode===r.rootElement.styles?{"style:parent-style-name":a}:d(e);a["style:family"]=b;u.mergeObjects(a,c);return a};this.getDefaultTabStopDistance=function(){for(var a=b("paragraph"),a=a&&a.firstElementChild,c;a;)a.namespaceURI===l&&"paragraph-properties"===a.localName&&(c=a.getAttributeNS(l,"tab-stop-distance")),a=a.nextElementSibling;c||(c="1.25cm");return z.parseNonNegativeLength(c)};this.getContentSize=function(a,b){var c,d,h,f,g,n,p,m,q,v,u;a:{var t,z,P;c=k(a,
-b);runtime.assert("paragraph"===b||"table"===b,"styleFamily has to be either paragraph or table");if(c){t=c.getAttributeNS(l,"master-page-name")||"Standard";for(c=r.rootElement.masterStyles.lastElementChild;c&&c.getAttributeNS(l,"name")!==t;)c=c.previousElementSibling;t=c.getAttributeNS(l,"page-layout-name");z=x.getElementsByTagNameNS(r.rootElement.automaticStyles,l,"page-layout");for(P=0;P<z.length;P+=1)if(c=z[P],c.getAttributeNS(l,"name")===t)break a}c=null}c||(c=x.getDirectChild(r.rootElement.styles,
-l,"default-page-layout"));if(c=x.getDirectChild(c,l,"page-layout-properties"))d=c.getAttributeNS(l,"print-orientation")||"portrait","portrait"===d?(d=21.001,h=29.7):(d=29.7,h=21.001),d=e(c.getAttributeNS(w,"page-width"),d),h=e(c.getAttributeNS(w,"page-height"),h),f=e(c.getAttributeNS(w,"margin"),null),null===f?(f=e(c.getAttributeNS(w,"margin-left"),2),g=e(c.getAttributeNS(w,"margin-right"),2),n=e(c.getAttributeNS(w,"margin-top"),2),p=e(c.getAttributeNS(w,"margin-bottom"),2)):f=g=n=p=f,m=e(c.getAttributeNS(w,
-"padding"),null),null===m?(m=e(c.getAttributeNS(w,"padding-left"),0),q=e(c.getAttributeNS(w,"padding-right"),0),v=e(c.getAttributeNS(w,"padding-top"),0),u=e(c.getAttributeNS(w,"padding-bottom"),0)):m=q=v=u=m;return{width:d-f-g-m-q,height:h-n-p-v-u}}};
-// Input 32
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-odf.StyleTreeNode=function(m){this.derivedStyles={};this.element=m};
-odf.Style2CSS=function(){function m(a){var b,c,d,e={};if(!a)return e;for(a=a.firstElementChild;a;){if(c=a.namespaceURI!==l||"style"!==a.localName&&"default-style"!==a.localName?a.namespaceURI===w&&"list-style"===a.localName?"list":a.namespaceURI!==l||"page-layout"!==a.localName&&"default-page-layout"!==a.localName?void 0:"page":a.getAttributeNS(l,"family"))(b=a.getAttributeNS(l,"name"))||(b=""),e.hasOwnProperty(c)?d=e[c]:e[c]=d={},d[b]=a;a=a.nextElementSibling}return e}function g(a,b){if(a.hasOwnProperty(b))return a[b];
-var c,d=null;for(c in a)if(a.hasOwnProperty(c)&&(d=g(a[c].derivedStyles,b)))break;return d}function b(a,c,d){var e,h,f;if(!c.hasOwnProperty(a))return null;e=new odf.StyleTreeNode(c[a]);h=e.element.getAttributeNS(l,"parent-style-name");f=null;h&&(f=g(d,h)||b(h,c,d));f?f.derivedStyles[a]=e:d[a]=e;delete c[a];return e}function k(a,c){for(var d in a)a.hasOwnProperty(d)&&b(d,a,c)}function d(a,b,c){var e=[];c=c.derivedStyles;var h;var f=t[a],l;void 0===f?b=null:(l=b?"["+f+'|style-name="'+b+'"]':"","presentation"===
-f&&(f="draw",l=b?'[presentation|style-name="'+b+'"]':""),b=f+"|"+s[a].join(l+","+f+"|")+l);null!==b&&e.push(b);for(h in c)c.hasOwnProperty(h)&&(b=d(a,h,c[h]),e=e.concat(b));return e}function n(a,b){var c="",d,e,h;for(d=0;d<b.length;d+=1)if(e=b[d],h=a.getAttributeNS(e[0],e[1])){h=h.trim();if(G.hasOwnProperty(e[1])){var f=h.indexOf(" "),l=void 0,k=void 0;-1!==f?(l=h.substring(0,f),k=h.substring(f)):(l=h,k="");(l=Q.parseLength(l))&&"pt"===l.unit&&0.75>l.value&&(h="0.75pt"+k)}e[2]&&(c+=e[2]+":"+h+";")}return c}
-function p(b){return(b=u.getDirectChild(b,l,"text-properties"))?Q.parseFoFontSize(b.getAttributeNS(a,"font-size")):null}function f(a,b,c,d){return b+b+c+c+d+d}function q(b,c,d,e){c='text|list[text|style-name="'+c+'"]';var h=d.getAttributeNS(w,"level");d=u.getDirectChild(d,l,"list-level-properties");d=u.getDirectChild(d,l,"list-level-label-alignment");var f,k;d&&(f=d.getAttributeNS(a,"text-indent"),k=d.getAttributeNS(a,"margin-left"));f||(f="-0.6cm");d="-"===f.charAt(0)?f.substring(1):"-"+f;for(h=
-h&&parseInt(h,10);1<h;)c+=" > text|list-item > text|list",h-=1;if(k){h=c+" > text|list-item > *:not(text|list):first-child";h+="{";h=h+("margin-left:"+k+";")+"}";try{b.insertRule(h,b.cssRules.length)}catch(g){runtime.log("cannot load rule: "+h)}}e=c+" > text|list-item > *:not(text|list):first-child:before{"+e+";";e=e+"counter-increment:list;"+("margin-left:"+f+";");e+="width:"+d+";";e+="display:inline-block}";try{b.insertRule(e,b.cssRules.length)}catch(n){runtime.log("cannot load rule: "+e)}}function e(b,
-h,k,g){if("list"===h)for(var m=g.element.firstChild,s,t;m;){if(m.namespaceURI===w)if(s=m,"list-level-style-number"===m.localName){var G=s;t=G.getAttributeNS(l,"num-format");var A=G.getAttributeNS(l,"num-suffix")||"",G=G.getAttributeNS(l,"num-prefix")||"",Y={1:"decimal",a:"lower-latin",A:"upper-latin",i:"lower-roman",I:"upper-roman"},R="";G&&(R+=' "'+G+'"');R=Y.hasOwnProperty(t)?R+(" counter(list, "+Y[t]+")"):t?R+(' "'+t+'"'):R+" ''";t="content:"+R+' "'+A+'"';q(b,k,s,t)}else"list-level-style-image"===
-m.localName?(t="content: none;",q(b,k,s,t)):"list-level-style-bullet"===m.localName&&(t="content: '"+s.getAttributeNS(w,"bullet-char")+"';",q(b,k,s,t));m=m.nextSibling}else if("page"===h){if(t=g.element,G=A=k="",m=u.getDirectChild(t,l,"page-layout-properties"))if(s=t.getAttributeNS(l,"name"),k+=n(m,D),(A=u.getDirectChild(m,l,"background-image"))&&(G=A.getAttributeNS(z,"href"))&&(k=k+("background-image: url('odfkit:"+G+"');")+n(A,F)),"presentation"===ea)for(t=(t=u.getDirectChild(t.parentNode.parentNode,
-c,"master-styles"))&&t.firstElementChild;t;){if(t.namespaceURI===l&&"master-page"===t.localName&&t.getAttributeNS(l,"page-layout-name")===s){G=t.getAttributeNS(l,"name");A="draw|page[draw|master-page-name="+G+"] {"+k+"}";G="office|body, draw|page[draw|master-page-name="+G+"] {"+n(m,ba)+" }";try{b.insertRule(A,b.cssRules.length),b.insertRule(G,b.cssRules.length)}catch(aa){throw aa;}}t=t.nextElementSibling}else if("text"===ea){A="office|text {"+k+"}";G="office|body {width: "+m.getAttributeNS(a,"page-width")+
-";}";try{b.insertRule(A,b.cssRules.length),b.insertRule(G,b.cssRules.length)}catch(ia){throw ia;}}}else{k=d(h,k,g).join(",");m="";if(s=u.getDirectChild(g.element,l,"text-properties")){G=s;t=R="";A=1;s=""+n(G,y);Y=G.getAttributeNS(l,"text-underline-style");"solid"===Y&&(R+=" underline");Y=G.getAttributeNS(l,"text-line-through-style");"solid"===Y&&(R+=" line-through");R.length&&(s+="text-decoration:"+R+";");if(R=G.getAttributeNS(l,"font-name")||G.getAttributeNS(a,"font-family"))Y=J[R],s+="font-family: "+
-(Y||R)+";";Y=G.parentNode;if(G=p(Y)){for(;Y;){if(G=p(Y)){if("%"!==G.unit){t="font-size: "+G.value*A+G.unit+";";break}A*=G.value/100}G=Y;R=Y="";Y=null;"default-style"===G.localName?Y=null:(Y=G.getAttributeNS(l,"parent-style-name"),R=G.getAttributeNS(l,"family"),Y=I.getODFElementsWithXPath(P,Y?"//style:*[@style:name='"+Y+"'][@style:family='"+R+"']":"//style:default-style[@style:family='"+R+"']",odf.Namespaces.lookupNamespaceURI)[0])}t||(t="font-size: "+parseFloat(N)*A+B.getUnits(N)+";");s+=t}m+=s}if(s=
-u.getDirectChild(g.element,l,"paragraph-properties"))t=s,s=""+n(t,L),(A=u.getDirectChild(t,l,"background-image"))&&(G=A.getAttributeNS(z,"href"))&&(s=s+("background-image: url('odfkit:"+G+"');")+n(A,F)),(t=t.getAttributeNS(a,"line-height"))&&"normal"!==t&&(t=Q.parseFoLineHeight(t),s="%"!==t.unit?s+("line-height: "+t.value+t.unit+";"):s+("line-height: "+t.value/100+";")),m+=s;if(s=u.getDirectChild(g.element,l,"graphic-properties"))G=s,s=""+n(G,O),t=G.getAttributeNS(r,"opacity"),A=G.getAttributeNS(r,
-"fill"),G=G.getAttributeNS(r,"fill-color"),"solid"===A||"hatch"===A?G&&"none"!==G?(t=isNaN(parseFloat(t))?1:parseFloat(t)/100,A=G.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,f),(G=(A=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(A))?{r:parseInt(A[1],16),g:parseInt(A[2],16),b:parseInt(A[3],16)}:null)&&(s+="background-color: rgba("+G.r+","+G.g+","+G.b+","+t+");")):s+="background: none;":"none"===A&&(s+="background: none;"),m+=s;if(s=u.getDirectChild(g.element,l,"drawing-page-properties"))t=""+n(s,
-O),"true"===s.getAttributeNS(x,"background-visible")&&(t+="background: none;"),m+=t;if(s=u.getDirectChild(g.element,l,"table-cell-properties"))s=""+n(s,H),m+=s;if(s=u.getDirectChild(g.element,l,"table-row-properties"))s=""+n(s,T),m+=s;if(s=u.getDirectChild(g.element,l,"table-column-properties"))s=""+n(s,U),m+=s;if(s=u.getDirectChild(g.element,l,"table-properties"))t=s,s=""+n(t,X),t=t.getAttributeNS(v,"border-model"),"collapsing"===t?s+="border-collapse:collapse;":"separating"===t&&(s+="border-collapse:separate;"),
-m+=s;if(0!==m.length)try{b.insertRule(k+"{"+m+"}",b.cssRules.length)}catch(ga){throw ga;}}for(var da in g.derivedStyles)g.derivedStyles.hasOwnProperty(da)&&e(b,h,da,g.derivedStyles[da])}var r=odf.Namespaces.drawns,a=odf.Namespaces.fons,c=odf.Namespaces.officens,l=odf.Namespaces.stylens,h=odf.Namespaces.svgns,v=odf.Namespaces.tablens,w=odf.Namespaces.textns,z=odf.Namespaces.xlinkns,x=odf.Namespaces.presentationns,u=new core.DomUtils,t={graphic:"draw","drawing-page":"draw",paragraph:"text",presentation:"presentation",
-ruby:"text",section:"text",table:"table","table-cell":"table","table-column":"table","table-row":"table",text:"text",list:"text",page:"office"},s={graphic:"circle connected control custom-shape ellipse frame g line measure page page-thumbnail path polygon polyline rect regular-polygon".split(" "),paragraph:"alphabetical-index-entry-template h illustration-index-entry-template index-source-style object-index-entry-template p table-index-entry-template table-of-content-entry-template user-index-entry-template".split(" "),
-presentation:"caption circle connector control custom-shape ellipse frame g line measure page-thumbnail path polygon polyline rect regular-polygon".split(" "),"drawing-page":"caption circle connector control page custom-shape ellipse frame g line measure page-thumbnail path polygon polyline rect regular-polygon".split(" "),ruby:["ruby","ruby-text"],section:"alphabetical-index bibliography illustration-index index-title object-index section table-of-content table-index user-index".split(" "),table:["background",
-"table"],"table-cell":"body covered-table-cell even-columns even-rows first-column first-row last-column last-row odd-columns odd-rows table-cell".split(" "),"table-column":["table-column"],"table-row":["table-row"],text:"a index-entry-chapter index-entry-link-end index-entry-link-start index-entry-page-number index-entry-span index-entry-tab-stop index-entry-text index-title-template linenumbering-configuration list-level-style-number list-level-style-bullet outline-level-style span".split(" "),
-list:["list-item"]},y=[[a,"color","color"],[a,"background-color","background-color"],[a,"font-weight","font-weight"],[a,"font-style","font-style"]],F=[[l,"repeat","background-repeat"]],L=[[a,"background-color","background-color"],[a,"text-align","text-align"],[a,"text-indent","text-indent"],[a,"padding","padding"],[a,"padding-left","padding-left"],[a,"padding-right","padding-right"],[a,"padding-top","padding-top"],[a,"padding-bottom","padding-bottom"],[a,"border-left","border-left"],[a,"border-right",
-"border-right"],[a,"border-top","border-top"],[a,"border-bottom","border-bottom"],[a,"margin","margin"],[a,"margin-left","margin-left"],[a,"margin-right","margin-right"],[a,"margin-top","margin-top"],[a,"margin-bottom","margin-bottom"],[a,"border","border"]],O=[[a,"background-color","background-color"],[a,"min-height","min-height"],[r,"stroke","border"],[h,"stroke-color","border-color"],[h,"stroke-width","border-width"],[a,"border","border"],[a,"border-left","border-left"],[a,"border-right","border-right"],
-[a,"border-top","border-top"],[a,"border-bottom","border-bottom"]],H=[[a,"background-color","background-color"],[a,"border-left","border-left"],[a,"border-right","border-right"],[a,"border-top","border-top"],[a,"border-bottom","border-bottom"],[a,"border","border"]],U=[[l,"column-width","width"]],T=[[l,"row-height","height"],[a,"keep-together",null]],X=[[l,"width","width"],[a,"margin-left","margin-left"],[a,"margin-right","margin-right"],[a,"margin-top","margin-top"],[a,"margin-bottom","margin-bottom"]],
-D=[[a,"background-color","background-color"],[a,"padding","padding"],[a,"padding-left","padding-left"],[a,"padding-right","padding-right"],[a,"padding-top","padding-top"],[a,"padding-bottom","padding-bottom"],[a,"border","border"],[a,"border-left","border-left"],[a,"border-right","border-right"],[a,"border-top","border-top"],[a,"border-bottom","border-bottom"],[a,"margin","margin"],[a,"margin-left","margin-left"],[a,"margin-right","margin-right"],[a,"margin-top","margin-top"],[a,"margin-bottom","margin-bottom"]],
-ba=[[a,"page-width","width"],[a,"page-height","height"]],G={border:!0,"border-left":!0,"border-right":!0,"border-top":!0,"border-bottom":!0,"stroke-width":!0},J={},Q=new odf.OdfUtils,ea,P,N,I=xmldom.XPath,B=new core.CSSUnits;this.style2css=function(a,b,c,d,h){for(var f,l,g,n;b.cssRules.length;)b.deleteRule(b.cssRules.length-1);f=null;d&&(f=d.ownerDocument,P=d.parentNode);h&&(f=h.ownerDocument,P=h.parentNode);if(f)for(n in odf.Namespaces.forEachPrefix(function(a,c){l="@namespace "+a+" url("+c+");";
-try{b.insertRule(l,b.cssRules.length)}catch(d){}}),J=c,ea=a,N=runtime.getWindow().getComputedStyle(document.body,null).getPropertyValue("font-size")||"12pt",a=m(d),d=m(h),h={},t)if(t.hasOwnProperty(n))for(g in c=h[n]={},k(a[n],c),k(d[n],c),c)c.hasOwnProperty(g)&&e(b,n,g,c[g])}};
-// Input 33
-/*
-
- Copyright (C) 2014 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- This file is part of WebODF.
-
- WebODF is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License (GNU AGPL)
- as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- WebODF is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with WebODF. If not, see <http://www.gnu.org/licenses/>.
- @licend
-
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-(function(){function m(g,b){var k=this;this.getDistance=function(b){var g=k.x-b.x;b=k.y-b.y;return Math.sqrt(g*g+b*b)};this.getCenter=function(b){return new m((k.x+b.x)/2,(k.y+b.y)/2)};k.x=g;k.y=b}gui.ZoomHelper=function(){function g(a,b,d,e){a=e?"translate3d("+a+"px, "+b+"px, 0) scale3d("+d+", "+d+", 1)":"translate("+a+"px, "+b+"px) scale("+d+")";c.style.WebkitTransform=a;c.style.MozTransform=a;c.style.msTransform=a;c.style.OTransform=a;c.style.transform=a}function b(a){a?g(-l.x,-l.y,w,!0):(g(0,
-0,w,!0),g(0,0,w,!1))}function k(a){if(u&&F){var b=u.style.overflow,c=u.classList.contains("customScrollbars");a&&c||!a&&!c||(a?(u.classList.add("customScrollbars"),u.style.overflow="hidden",runtime.requestAnimationFrame(function(){u.style.overflow=b})):u.classList.remove("customScrollbars"))}}function d(){g(-l.x,-l.y,w,!0);u.scrollLeft=0;u.scrollTop=0;k(!1)}function n(){g(0,0,w,!0);u.scrollLeft=l.x;u.scrollTop=l.y;k(!0)}function p(a){return new m(a.pageX-c.offsetLeft,a.pageY-c.offsetTop)}function f(a){h&&
-(l.x-=a.x-h.x,l.y-=a.y-h.y,l=new m(Math.min(Math.max(l.x,c.offsetLeft),(c.offsetLeft+c.offsetWidth)*w-u.clientWidth),Math.min(Math.max(l.y,c.offsetTop),(c.offsetTop+c.offsetHeight)*w-u.clientHeight)));h=a}function q(a){var b=a.touches.length,c=0<b?p(a.touches[0]):null;a=1<b?p(a.touches[1]):null;c&&a?(v=c.getDistance(a),z=w,h=c.getCenter(a),d(),y=s.PINCH):c&&(h=c,y=s.SCROLL)}function e(a){var e=a.touches.length,h=0<e?p(a.touches[0]):null,e=1<e?p(a.touches[1]):null;if(h&&e)if(a.preventDefault(),y===
-s.SCROLL)y=s.PINCH,d(),v=h.getDistance(e);else{a=h.getCenter(e);h=h.getDistance(e)/v;f(a);var e=w,k=Math.min(x,c.offsetParent.clientWidth/c.offsetWidth);w=z*h;w=Math.min(Math.max(w,k),x);h=w/e;l.x+=(h-1)*(a.x+l.x);l.y+=(h-1)*(a.y+l.y);b(!0)}else h&&(y===s.PINCH?(y=s.SCROLL,n()):f(h))}function r(){y===s.PINCH&&(t.emit(gui.ZoomHelper.signalZoomChanged,w),n(),b(!1));y=s.NONE}function a(){u&&(u.removeEventListener("touchstart",q,!1),u.removeEventListener("touchmove",e,!1),u.removeEventListener("touchend",
-r,!1))}var c,l,h,v,w,z,x=4,u,t=new core.EventNotifier([gui.ZoomHelper.signalZoomChanged]),s={NONE:0,SCROLL:1,PINCH:2},y=s.NONE,F=runtime.getWindow().hasOwnProperty("ontouchstart");this.subscribe=function(a,b){t.subscribe(a,b)};this.unsubscribe=function(a,b){t.unsubscribe(a,b)};this.getZoomLevel=function(){return w};this.setZoomLevel=function(a){c&&(w=a,b(!1),t.emit(gui.ZoomHelper.signalZoomChanged,w))};this.destroy=function(b){a();k(!1);b()};this.setZoomableElement=function(d){a();c=d;u=c.offsetParent;
-b(!1);u&&(u.addEventListener("touchstart",q,!1),u.addEventListener("touchmove",e,!1),u.addEventListener("touchend",r,!1));k(!0)};z=w=1;l=new m(0,0)};gui.ZoomHelper.signalZoomChanged="zoomChanged"})();
-// Input 34
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.Canvas=function(){};ops.Canvas.prototype.getZoomLevel=function(){};ops.Canvas.prototype.getElement=function(){};ops.Canvas.prototype.getZoomHelper=function(){};
-// Input 35
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
+ Copyright (C) 2010-2015 KO GmbH <copyright@kogmbh.com>
@licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-(function(){function m(){function a(d){c=!0;runtime.setTimeout(function(){try{d()}catch(e){runtime.log(String(e))}c=!1;0<b.length&&a(b.pop())},10)}var b=[],c=!1;this.clearQueue=function(){b.length=0};this.addToQueue=function(d){if(0===b.length&&!c)return a(d);b.push(d)}}function g(a){function b(){for(;0<c.cssRules.length;)c.deleteRule(0);c.insertRule("#shadowContent draw|page {display:none;}",0);c.insertRule("office|presentation draw|page {display:none;}",1);c.insertRule("#shadowContent draw|page:nth-of-type("+
-d+") {display:block;}",2);c.insertRule("office|presentation draw|page:nth-of-type("+d+") {display:block;}",3)}var c=a.sheet,d=1;this.showFirstPage=function(){d=1;b()};this.showNextPage=function(){d+=1;b()};this.showPreviousPage=function(){1<d&&(d-=1,b())};this.showPage=function(a){0<a&&(d=a,b())};this.css=a;this.destroy=function(b){a.parentNode.removeChild(a);b()}}function b(a){for(;a.firstChild;)a.removeChild(a.firstChild)}function k(a){a=a.sheet;for(var b=a.cssRules;b.length;)a.deleteRule(b.length-
-1)}function d(a,b,c){(new odf.Style2CSS).style2css(a.getDocumentType(),c.sheet,b.getFontMap(),a.rootElement.styles,a.rootElement.automaticStyles)}function n(a,b,c){var d=null;a=a.rootElement.body.getElementsByTagNameNS(H,c+"-decl");c=b.getAttributeNS(H,"use-"+c+"-name");var e;if(c&&0<a.length)for(b=0;b<a.length;b+=1)if(e=a[b],e.getAttributeNS(H,"name")===c){d=e.textContent;break}return d}function p(a,c,d,e){var h=a.ownerDocument;c=a.getElementsByTagNameNS(c,d);for(a=0;a<c.length;a+=1)b(c[a]),e&&(d=
-c[a],d.appendChild(h.createTextNode(e)))}function f(a,b,c){b.setAttributeNS("urn:webodf:names:helper","styleid",a);var d,e=b.getAttributeNS(F,"anchor-type"),h=b.getAttributeNS(s,"x"),f=b.getAttributeNS(s,"y"),l=b.getAttributeNS(s,"width"),k=b.getAttributeNS(s,"height"),g=b.getAttributeNS(x,"min-height"),n=b.getAttributeNS(x,"min-width");if("as-char"===e)d="display: inline-block;";else if(e||h||f)d="position: absolute;";else if(l||k||g||n)d="display: block;";h&&(d+="left: "+h+";");f&&(d+="top: "+f+
-";");l&&(d+="width: "+l+";");k&&(d+="height: "+k+";");g&&(d+="min-height: "+g+";");n&&(d+="min-width: "+n+";");d&&(d="draw|"+b.localName+'[webodfhelper|styleid="'+a+'"] {'+d+"}",c.insertRule(d,c.cssRules.length))}function q(a){for(a=a.firstChild;a;){if(a.namespaceURI===u&&"binary-data"===a.localName)return"data:image/png;base64,"+a.textContent.replace(/[\r\n\s]/g,"");a=a.nextSibling}return""}function e(a,b,c,d){function e(b){b&&(b='draw|image[webodfhelper|styleid="'+a+'"] {'+("background-image: url("+
-b+");")+"}",d.insertRule(b,d.cssRules.length))}function h(a){e(a.url)}c.setAttributeNS("urn:webodf:names:helper","styleid",a);var f=c.getAttributeNS(L,"href"),l;if(f)try{l=b.getPart(f),l.onchange=h,l.load()}catch(k){runtime.log("slight problem: "+String(k))}else f=q(c),e(f)}function r(a){var b=a.ownerDocument;D.getElementsByTagNameNS(a,F,"line-break").forEach(function(a){a.hasChildNodes()||a.appendChild(b.createElement("br"))})}function a(a){var b=a.ownerDocument;D.getElementsByTagNameNS(a,F,"s").forEach(function(a){for(var c,
-d;a.firstChild;)a.removeChild(a.firstChild);a.appendChild(b.createTextNode(" "));d=parseInt(a.getAttributeNS(F,"c"),10);if(1<d)for(a.removeAttributeNS(F,"c"),c=1;c<d;c+=1)a.parentNode.insertBefore(a.cloneNode(!0),a)})}function c(a){D.getElementsByTagNameNS(a,F,"tab").forEach(function(a){a.textContent="\t"})}function l(a,b){function c(a,d){var f=l.documentElement.namespaceURI;"video/"===d.substr(0,6)?(e=l.createElementNS(f,"video"),e.setAttribute("controls","controls"),h=l.createElementNS(f,"source"),
-a&&h.setAttribute("src",a),h.setAttribute("type",d),e.appendChild(h),b.parentNode.appendChild(e)):b.innerHtml="Unrecognised Plugin"}function d(a){c(a.url,a.mimetype)}var e,h,f,l=b.ownerDocument,k;if(f=b.getAttributeNS(L,"href"))try{k=a.getPart(f),k.onchange=d,k.load()}catch(g){runtime.log("slight problem: "+String(g))}else runtime.log("using MP4 data fallback"),f=q(b),c(f,"video/mp4")}function h(a){var b=a.getElementsByTagName("head")[0],c,d;c=a.styleSheets.length;for(d=b.firstElementChild;d&&("style"!==
-d.localName||!d.hasAttribute("webodfcss"));)d=d.nextElementSibling;if(d)return c=parseInt(d.getAttribute("webodfcss"),10),d.setAttribute("webodfcss",c+1),d;"string"===String(typeof webodf_css)?c=webodf_css:(d="webodf.css",runtime.currentDirectory&&(d=runtime.currentDirectory(),0<d.length&&"/"!==d.substr(-1)&&(d+="/"),d+="../webodf.css"),c=runtime.readFileSync(d,"utf-8"));d=a.createElementNS(b.namespaceURI,"style");d.setAttribute("media","screen, print, handheld, projection");d.setAttribute("type",
-"text/css");d.setAttribute("webodfcss","1");d.appendChild(a.createTextNode(c));b.appendChild(d);return d}function v(a){var b=parseInt(a.getAttribute("webodfcss"),10);1===b?a.parentNode.removeChild(a):a.setAttribute("count",b-1)}function w(a){var b=a.getElementsByTagName("head")[0],c=a.createElementNS(b.namespaceURI,"style"),d="";c.setAttribute("type","text/css");c.setAttribute("media","screen, print, handheld, projection");odf.Namespaces.forEachPrefix(function(a,b){d+="@namespace "+a+" url("+b+");\n"});
-d+="@namespace webodfhelper url(urn:webodf:names:helper);\n";c.appendChild(a.createTextNode(d));b.appendChild(c);return c}var z=odf.Namespaces.drawns,x=odf.Namespaces.fons,u=odf.Namespaces.officens,t=odf.Namespaces.stylens,s=odf.Namespaces.svgns,y=odf.Namespaces.tablens,F=odf.Namespaces.textns,L=odf.Namespaces.xlinkns,O=odf.Namespaces.xmlns,H=odf.Namespaces.presentationns,U=runtime.getWindow(),T=xmldom.XPath,X=new odf.OdfUtils,D=new core.DomUtils;odf.OdfCanvas=function(q){function s(a,b,c){function d(a,
-b,c,h){ka.addToQueue(function(){e(a,b,c,h)})}var h,f;h=b.getElementsByTagNameNS(z,"image");for(b=0;b<h.length;b+=1)f=h.item(b),d("image"+String(b),a,f,c)}function L(a,b){function c(a,b){ka.addToQueue(function(){l(a,b)})}var d,e,h;e=b.getElementsByTagNameNS(z,"plugin");for(d=0;d<e.length;d+=1)h=e.item(d),c(a,h)}function x(){var a;a=S.firstChild;var b=Z.getZoomLevel();a&&(S.style.WebkitTransformOrigin="0% 0%",S.style.MozTransformOrigin="0% 0%",S.style.msTransformOrigin="0% 0%",S.style.OTransformOrigin=
-"0% 0%",S.style.transformOrigin="0% 0%",A&&((a=A.getMinimumHeightForAnnotationPane())?S.style.minHeight=a:S.style.removeProperty("min-height")),q.style.width=Math.round(b*S.offsetWidth)+"px",q.style.height=Math.round(b*S.offsetHeight)+"px")}function ea(a){ma?(fa.parentNode||S.appendChild(fa),A&&A.forgetAnnotations(),A=new gui.AnnotationViewManager(I,a.body,fa,ca),D.getElementsByTagNameNS(a.body,u,"annotation").forEach(A.addAnnotation),A.rerenderAnnotations(),x()):fa.parentNode&&(S.removeChild(fa),
-A.forgetAnnotations(),x())}function P(e){function h(){k(R);k(aa);k(ia);b(q);q.style.display="inline-block";var l=M.rootElement;q.ownerDocument.importNode(l,!0);$.setOdfContainer(M);var g=M,m=R;(new odf.FontLoader).loadFonts(g,m.sheet);d(M,$,aa);m=M;g=ia.sheet;b(q);S=B.createElementNS(q.namespaceURI,"div");S.style.display="inline-block";S.style.background="white";S.style.setProperty("float","left","important");S.appendChild(l);q.appendChild(S);fa=B.createElementNS(q.namespaceURI,"div");fa.id="annotationsPane";
-ga=B.createElementNS(q.namespaceURI,"div");ga.id="shadowContent";ga.style.position="absolute";ga.style.top=0;ga.style.left=0;m.getContentElement().appendChild(ga);var v=l.body,w,x=[],D;for(w=v.firstElementChild;w&&w!==v;)if(w.namespaceURI===z&&(x[x.length]=w),w.firstElementChild)w=w.firstElementChild;else{for(;w&&w!==v&&!w.nextElementSibling;)w=w.parentNode;w&&w.nextElementSibling&&(w=w.nextElementSibling)}for(D=0;D<x.length;D+=1)w=x[D],f("frame"+String(D),w,g);x=T.getODFElementsWithXPath(v,".//*[*[@text:anchor-type='paragraph']]",
-odf.Namespaces.lookupNamespaceURI);for(w=0;w<x.length;w+=1)v=x[w],v.setAttributeNS&&v.setAttributeNS("urn:webodf:names:helper","containsparagraphanchor",!0);var v=ga,P,A,N;N=0;var I,K,x=m.rootElement.ownerDocument;if((w=l.body.firstElementChild)&&w.namespaceURI===u&&("presentation"===w.localName||"drawing"===w.localName))for(w=w.firstElementChild;w;){D=w.getAttributeNS(z,"master-page-name");if(D){for(P=m.rootElement.masterStyles.firstElementChild;P&&(P.getAttributeNS(t,"name")!==D||"master-page"!==
-P.localName||P.namespaceURI!==t);)P=P.nextElementSibling;D=P}else D=null;if(D){P=w.getAttributeNS("urn:webodf:names:helper","styleid");A=x.createElementNS(z,"draw:page");K=D.firstElementChild;for(I=0;K;)"true"!==K.getAttributeNS(H,"placeholder")&&(N=K.cloneNode(!0),A.appendChild(N),f(P+"_"+I,N,g)),K=K.nextElementSibling,I+=1;K=I=N=void 0;var Q=A.getElementsByTagNameNS(z,"frame");for(N=0;N<Q.length;N+=1)I=Q[N],(K=I.getAttributeNS(H,"class"))&&!/^(date-time|footer|header|page-number)$/.test(K)&&I.parentNode.removeChild(I);
-v.appendChild(A);N=String(v.getElementsByTagNameNS(z,"page").length);p(A,F,"page-number",N);p(A,H,"header",n(m,w,"header"));p(A,H,"footer",n(m,w,"footer"));f(P,A,g);A.setAttributeNS(z,"draw:master-page-name",D.getAttributeNS(t,"name"))}w=w.nextElementSibling}v=q.namespaceURI;x=l.body.getElementsByTagNameNS(y,"table-cell");for(w=0;w<x.length;w+=1)D=x.item(w),D.hasAttributeNS(y,"number-columns-spanned")&&D.setAttributeNS(v,"colspan",D.getAttributeNS(y,"number-columns-spanned")),D.hasAttributeNS(y,"number-rows-spanned")&&
-D.setAttributeNS(v,"rowspan",D.getAttributeNS(y,"number-rows-spanned"));r(l.body);a(l.body);c(l.body);s(m,l.body,g);L(m,l.body);D=l.body;m=q.namespaceURI;w={};var x={},V;P=U.document.getElementsByTagNameNS(F,"list-style");for(v=0;v<P.length;v+=1)I=P.item(v),(K=I.getAttributeNS(t,"name"))&&(x[K]=I);D=D.getElementsByTagNameNS(F,"list");for(v=0;v<D.length;v+=1)if(I=D.item(v),P=I.getAttributeNS(O,"id")){A=I.getAttributeNS(F,"continue-list");I.setAttributeNS(m,"id",P);N="text|list#"+P+" > text|list-item > *:first-child:before {";
-if(K=I.getAttributeNS(F,"style-name")){I=x[K];V=X.getFirstNonWhitespaceChild(I);I=void 0;if(V)if("list-level-style-number"===V.localName){I=V.getAttributeNS(t,"num-format");K=V.getAttributeNS(t,"num-suffix")||"";var Q="",Q={1:"decimal",a:"lower-latin",A:"upper-latin",i:"lower-roman",I:"upper-roman"},W=void 0,W=V.getAttributeNS(t,"num-prefix")||"",W=Q.hasOwnProperty(I)?W+(" counter(list, "+Q[I]+")"):I?W+("'"+I+"';"):W+" ''";K&&(W+=" '"+K+"'");I=Q="content: "+W+";"}else"list-level-style-image"===V.localName?
-I="content: none;":"list-level-style-bullet"===V.localName&&(I="content: '"+V.getAttributeNS(F,"bullet-char")+"';");V=I}if(A){for(I=w[A];I;)I=w[I];N+="counter-increment:"+A+";";V?(V=V.replace("list",A),N+=V):N+="content:counter("+A+");"}else A="",V?(V=V.replace("list",P),N+=V):N+="content: counter("+P+");",N+="counter-increment:"+P+";",g.insertRule("text|list#"+P+" {counter-reset:"+P+"}",g.cssRules.length);N+="}";w[P]=A;N&&g.insertRule(N,g.cssRules.length)}S.insertBefore(ga,S.firstChild);Z.setZoomableElement(S);
-ea(l);if(!e&&(l=[M],da.hasOwnProperty("statereadychange")))for(g=da.statereadychange,V=0;V<g.length;V+=1)g[V].apply(null,l)}M.state===odf.OdfContainer.DONE?h():(runtime.log("WARNING: refreshOdf called but ODF was not DONE."),la=runtime.setTimeout(function C(){M.state===odf.OdfContainer.DONE?h():(runtime.log("will be back later..."),la=runtime.setTimeout(C,500))},100))}function N(a){ka.clearQueue();q.innerHTML=runtime.tr("Loading")+" "+a+"...";q.removeAttribute("style");M=new odf.OdfContainer(a,function(a){M=
-a;P(!1)})}runtime.assert(null!==q&&void 0!==q,"odf.OdfCanvas constructor needs DOM element");runtime.assert(null!==q.ownerDocument&&void 0!==q.ownerDocument,"odf.OdfCanvas constructor needs DOM");var I=this,B=q.ownerDocument,V=new core.Async,M,$=new odf.Formatting,W,S=null,fa=null,ma=!1,ca=!1,A=null,Y,R,aa,ia,ga,da={},la,ja,na=!1,ha=!1,ka=new m,Z=new gui.ZoomHelper;this.refreshCSS=function(){na=!0;ja.trigger()};this.refreshSize=function(){ja.trigger()};this.odfContainer=function(){return M};this.setOdfContainer=
-function(a,b){M=a;P(!0===b)};this.load=this.load=N;this.save=function(a){M.save(a)};this.addListener=function(a,b){switch(a){case "click":var c=q,d=a;c.addEventListener?c.addEventListener(d,b,!1):c.attachEvent?c.attachEvent("on"+d,b):c["on"+d]=b;break;default:c=da.hasOwnProperty(a)?da[a]:da[a]=[],b&&-1===c.indexOf(b)&&c.push(b)}};this.getFormatting=function(){return $};this.getAnnotationViewManager=function(){return A};this.refreshAnnotations=function(){ea(M.rootElement)};this.rerenderAnnotations=
-function(){A&&(ha=!0,ja.trigger())};this.getSizer=function(){return S};this.enableAnnotations=function(a,b){a!==ma&&(ma=a,ca=b,M&&ea(M.rootElement))};this.addAnnotation=function(a){A&&(A.addAnnotation(a),x())};this.forgetAnnotations=function(){A&&(A.forgetAnnotations(),x())};this.getZoomHelper=function(){return Z};this.setZoomLevel=function(a){Z.setZoomLevel(a)};this.getZoomLevel=function(){return Z.getZoomLevel()};this.fitToContainingElement=function(a,b){var c=Z.getZoomLevel(),d=q.offsetHeight/
-c,c=a/(q.offsetWidth/c);b/d<c&&(c=b/d);Z.setZoomLevel(c)};this.fitToWidth=function(a){var b=q.offsetWidth/Z.getZoomLevel();Z.setZoomLevel(a/b)};this.fitSmart=function(a,b){var c,d;d=Z.getZoomLevel();c=q.offsetWidth/d;d=q.offsetHeight/d;c=a/c;void 0!==b&&b/d<c&&(c=b/d);Z.setZoomLevel(Math.min(1,c))};this.fitToHeight=function(a){var b=q.offsetHeight/Z.getZoomLevel();Z.setZoomLevel(a/b)};this.showFirstPage=function(){W.showFirstPage()};this.showNextPage=function(){W.showNextPage()};this.showPreviousPage=
-function(){W.showPreviousPage()};this.showPage=function(a){W.showPage(a);x()};this.getElement=function(){return q};this.addCssForFrameWithImage=function(a){var b=a.getAttributeNS(z,"name"),c=a.firstElementChild;f(b,a,ia.sheet);c&&e(b+"img",M,c,ia.sheet)};this.destroy=function(a){var b=B.getElementsByTagName("head")[0],c=[W.destroy,ja.destroy];runtime.clearTimeout(la);fa&&fa.parentNode&&fa.parentNode.removeChild(fa);Z.destroy(function(){S&&(q.removeChild(S),S=null)});v(Y);b.removeChild(R);b.removeChild(aa);
-b.removeChild(ia);V.destroyAll(c,a)};Y=h(B);W=new g(w(B));R=w(B);aa=w(B);ia=w(B);ja=new core.ScheduledTask(function(){na&&(d(M,$,aa),na=!1);ha&&(A&&A.rerenderAnnotations(),ha=!1);x()},0);Z.subscribe(gui.ZoomHelper.signalZoomChanged,x)}})();
-// Input 36
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- This file is part of WebODF.
+ This file is the compiled version of the WebODF library.
WebODF is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License (GNU AGPL)
@@ -982,2401 +24,613 @@ b.removeChild(ia);V.destroyAll(c,a)};Y=h(B);W=new g(w(B));R=w(B);aa=w(B);ia=w(B)
@source: http://www.webodf.org/
@source: https://github.com/kogmbh/WebODF/
*/
-ops.MemberProperties=function(){};
-ops.Member=function(m,g){var b=new ops.MemberProperties;this.getMemberId=function(){return m};this.getProperties=function(){return b};this.setProperties=function(k){Object.keys(k).forEach(function(d){b[d]=k[d]})};this.removeProperties=function(k){Object.keys(k).forEach(function(d){"fullName"!==d&&"color"!==d&&"imageUrl"!==d&&b.hasOwnProperty(d)&&delete b[d]})};runtime.assert(Boolean(m),"No memberId was supplied!");g.fullName||(g.fullName=runtime.tr("Unknown Author"));g.color||(g.color="black");g.imageUrl||
-(g.imageUrl="avatar-joe.png");b=g};
-// Input 37
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.SelectionMover=function(m,g){function b(){r.setUnfilteredPosition(m.getNode(),0);return r}function k(a,b){var d,e=null;a&&0<a.length&&(d=b?a.item(a.length-1):a.item(0));d&&(e={top:d.top,left:b?d.right:d.left,bottom:d.bottom});return e}function d(a,b,e,f){var n=a.nodeType;e.setStart(a,b);e.collapse(!f);f=k(e.getClientRects(),!0===f);!f&&0<b&&(e.setStart(a,b-1),e.setEnd(a,b),f=k(e.getClientRects(),!0));f||(n===Node.ELEMENT_NODE&&0<b&&a.childNodes.length>=b?f=d(a,b-1,e,!0):a.nodeType===Node.TEXT_NODE&&
-0<b?f=d(a,b-1,e,!0):a.previousSibling?f=d(a.previousSibling,a.previousSibling.nodeType===Node.TEXT_NODE?a.previousSibling.textContent.length:a.previousSibling.childNodes.length,e,!0):a.parentNode&&a.parentNode!==g?f=d(a.parentNode,0,e,!1):(e.selectNode(g),f=k(e.getClientRects(),!1)));runtime.assert(Boolean(f),"No visible rectangle found");return f}function n(c,d,e){for(var f=b(),k=new core.LoopWatchDog(1E4),g=0,n=0;0<c&&f.nextPosition();)k.check(),e.acceptPosition(f)===a&&(g+=1,d.acceptPosition(f)===
-a&&(n+=g,g=0,c-=1));return n}function p(c,d,e){for(var f=b(),k=new core.LoopWatchDog(1E4),g=0,n=0;0<c&&f.previousPosition();)k.check(),e.acceptPosition(f)===a&&(g+=1,d.acceptPosition(f)===a&&(n+=g,g=0,c-=1));return n}function f(c,e){var h=b(),f=0,k=0,n=0>c?-1:1;for(c=Math.abs(c);0<c;){for(var m=e,p=n,r=h,q=r.container(),y=0,F=null,L=void 0,O=10,H=void 0,U=0,T=void 0,X=void 0,D=void 0,H=void 0,ba=g.ownerDocument.createRange(),G=new core.LoopWatchDog(1E4),H=d(q,r.unfilteredDomOffset(),ba),T=H.top,X=
-H.left,D=T;!0===(0>p?r.previousPosition():r.nextPosition());)if(G.check(),m.acceptPosition(r)===a&&(y+=1,q=r.container(),H=d(q,r.unfilteredDomOffset(),ba),H.top!==T)){if(H.top!==D&&D!==T)break;D=H.top;H=Math.abs(X-H.left);if(null===F||H<O)F=q,L=r.unfilteredDomOffset(),O=H,U=y}null!==F?(r.setUnfilteredPosition(F,L),y=U):y=0;ba.detach();f+=y;if(0===f)break;k+=f;c-=1}return k*n}function q(c,f){var h,k,n,m,p=b(),r=e.getParagraphElement(p.getCurrentNode()),q=0,s=g.ownerDocument.createRange();0>c?(h=p.previousPosition,
-k=-1):(h=p.nextPosition,k=1);for(n=d(p.container(),p.unfilteredDomOffset(),s);h.call(p);)if(f.acceptPosition(p)===a){if(e.getParagraphElement(p.getCurrentNode())!==r)break;m=d(p.container(),p.unfilteredDomOffset(),s);if(m.bottom!==n.bottom&&(n=m.top>=n.top&&m.bottom<n.bottom||m.top<=n.top&&m.bottom>n.bottom,!n))break;q+=k;n=m}s.detach();return q}var e=new odf.OdfUtils,r,a=core.PositionFilter.FilterResult.FILTER_ACCEPT;this.getStepCounter=function(){return{convertForwardStepsBetweenFilters:n,convertBackwardStepsBetweenFilters:p,
-countLinesSteps:f,countStepsToLineBoundary:q}};(function(){r=gui.SelectionMover.createPositionIterator(g);var a=g.ownerDocument.createRange();a.setStart(r.container(),r.unfilteredDomOffset());a.collapse(!0);m.setSelectedRange(a)})()};
-gui.SelectionMover.createPositionIterator=function(m){var g=new function(){this.acceptNode=function(b){return b&&"urn:webodf:names:cursor"!==b.namespaceURI&&"urn:webodf:names:editinfo"!==b.namespaceURI?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}};return new core.PositionIterator(m,5,g,!1)};(function(){return gui.SelectionMover})();
-// Input 38
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.Document=function(){};ops.Document.prototype.getMemberIds=function(){};ops.Document.prototype.removeCursor=function(m){};ops.Document.prototype.getDocumentElement=function(){};ops.Document.prototype.getRootNode=function(){};ops.Document.prototype.getDOMDocument=function(){};ops.Document.prototype.cloneDocumentElement=function(){};ops.Document.prototype.setDocumentElement=function(m){};ops.Document.prototype.subscribe=function(m,g){};ops.Document.prototype.unsubscribe=function(m,g){};
-ops.Document.prototype.getCanvas=function(){};ops.Document.prototype.createRootFilter=function(m){};ops.Document.signalCursorAdded="cursor/added";ops.Document.signalCursorRemoved="cursor/removed";ops.Document.signalCursorMoved="cursor/moved";ops.Document.signalMemberAdded="member/added";ops.Document.signalMemberUpdated="member/updated";ops.Document.signalMemberRemoved="member/removed";
-// Input 39
-ops.OdtCursor=function(m,g){var b=this,k={},d,n,p,f=new core.EventNotifier([ops.OdtCursor.signalCursorUpdated]);this.removeFromDocument=function(){p.remove()};this.subscribe=function(b,d){f.subscribe(b,d)};this.unsubscribe=function(b,d){f.unsubscribe(b,d)};this.getStepCounter=function(){return n.getStepCounter()};this.getMemberId=function(){return m};this.getNode=function(){return p.getNode()};this.getAnchorNode=function(){return p.getAnchorNode()};this.getSelectedRange=function(){return p.getSelectedRange()};
-this.setSelectedRange=function(d,e){p.setSelectedRange(d,e);f.emit(ops.OdtCursor.signalCursorUpdated,b)};this.hasForwardSelection=function(){return p.hasForwardSelection()};this.getDocument=function(){return g};this.getSelectionType=function(){return d};this.setSelectionType=function(b){k.hasOwnProperty(b)?d=b:runtime.log("Invalid selection type: "+b)};this.resetSelectionType=function(){b.setSelectionType(ops.OdtCursor.RangeSelection)};p=new core.Cursor(g.getDOMDocument(),m);n=new gui.SelectionMover(p,
-g.getRootNode());k[ops.OdtCursor.RangeSelection]=!0;k[ops.OdtCursor.RegionSelection]=!0;b.resetSelectionType()};ops.OdtCursor.RangeSelection="Range";ops.OdtCursor.RegionSelection="Region";ops.OdtCursor.signalCursorUpdated="cursorUpdated";(function(){return ops.OdtCursor})();
-// Input 40
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.Operation=function(){};ops.Operation.prototype.init=function(m){};ops.Operation.prototype.execute=function(m){};ops.Operation.prototype.spec=function(){};
-// Input 41
-/*
-
- Copyright (C) 2010-2014 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- This file is part of WebODF.
-
- WebODF is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License (GNU AGPL)
- as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- WebODF is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with WebODF. If not, see <http://www.gnu.org/licenses/>.
- @licend
-
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-(function(){var m=0;ops.StepsCache=function(g,b,k){function d(a,c,d){this.nodeId=a;this.steps=c;this.node=d;this.previousBookmark=this.nextBookmark=null;this.setIteratorPosition=function(a){a.setPositionBeforeElement(d);do if(b.acceptPosition(a)===t)break;while(a.nextPosition())}}function n(a,c,d){this.nodeId=a;this.steps=c;this.node=d;this.previousBookmark=this.nextBookmark=null;this.setIteratorPosition=function(a){a.setUnfilteredPosition(d,0);do if(b.acceptPosition(a)===t)break;while(a.nextPosition())}}
-function p(a,b){var c="["+a.nodeId;b&&(c+=" => "+b.nodeId);return c+"]"}function f(){for(var a=x,b,c,d,e=new core.LoopWatchDog(0,1E5);a;){e.check();(b=a.previousBookmark)?runtime.assert(b.nextBookmark===a,"Broken bookmark link to previous @"+p(b,a)):(runtime.assert(a===x,"Broken bookmark link @"+p(a)),runtime.assert(void 0===u||x.steps<=u,"Base point is damaged @"+p(a)));(c=a.nextBookmark)&&runtime.assert(c.previousBookmark===a,"Broken bookmark link to next @"+p(a,c));if(void 0===u||a.steps<=u)runtime.assert(z.containsNode(g,
-a.node),"Disconnected node is being reported as undamaged @"+p(a)),b&&(d=a.node.compareDocumentPosition(b.node),runtime.assert(0===d||0!==(d&Node.DOCUMENT_POSITION_PRECEDING),"Bookmark order with previous does not reflect DOM order @"+p(b,a))),c&&z.containsNode(g,c.node)&&(d=a.node.compareDocumentPosition(c.node),runtime.assert(0===d||0!==(d&Node.DOCUMENT_POSITION_FOLLOWING),"Bookmark order with next does not reflect DOM order @"+p(a,c)));a=a.nextBookmark}}function q(a){var b="";a.nodeType===Node.ELEMENT_NODE&&
-(b=a.getAttributeNS(l,"nodeId"));return b}function e(a){var b=m.toString();a.setAttributeNS(l,"nodeId",b);m+=1;return b}function r(a){var b,c,d=new core.LoopWatchDog(0,1E4);void 0!==u&&a>u&&(a=u);for(b=Math.floor(a/k)*k;!c&&0!==b;)c=h[b],b-=k;for(c=c||x;c.nextBookmark&&c.nextBookmark.steps<=a;)d.check(),c=c.nextBookmark;return c}function a(a){a.previousBookmark&&(a.previousBookmark.nextBookmark=a.nextBookmark);a.nextBookmark&&(a.nextBookmark.previousBookmark=a.previousBookmark)}function c(a){for(var b,
-c=null;!c&&a&&a!==g;)(b=q(a))&&(c=v[b])&&c.node!==a&&(runtime.log("Cloned node detected. Creating new bookmark"),c=null,a.removeAttributeNS(l,"nodeId")),a=a.parentNode;return c}var l="urn:webodf:names:steps",h={},v={},w=new odf.OdfUtils,z=new core.DomUtils,x,u,t=core.PositionFilter.FilterResult.FILTER_ACCEPT,s;this.updateCache=function(b,c,f){var l;l=c.getCurrentNode();if(c.isBeforeNode()&&w.isParagraph(l)){f||(b+=1);c=b;var n,m,p;if(void 0!==u&&u<c){n=r(u);for(f=n.nextBookmark;f&&f.steps<=c;)m=f.nextBookmark,
-p=Math.ceil(f.steps/k)*k,h[p]===f&&delete h[p],z.containsNode(g,f.node)?f.steps=c+1:(a(f),delete v[f.nodeId]),f=m;u=c}else n=r(c);c=n;f=q(l)||e(l);(n=v[f])?n.node===l?n.steps=b:(runtime.log("Cloned node detected. Creating new bookmark"),f=e(l),n=v[f]=new d(f,b,l)):n=v[f]=new d(f,b,l);l=n;c!==l&&c.nextBookmark!==l&&(a(l),b=c.nextBookmark,l.nextBookmark=c.nextBookmark,l.previousBookmark=c,c.nextBookmark=l,b&&(b.previousBookmark=l));b=Math.ceil(l.steps/k)*k;c=h[b];if(!c||l.steps>c.steps)h[b]=l;s()}};
-this.setToClosestStep=function(a,b){var c;s();c=r(a);c.setIteratorPosition(b);return c.steps};this.setToClosestDomPoint=function(a,b,d){var e,f;s();if(a===g&&0===b)e=x;else if(a===g&&b===g.childNodes.length)for(f in e=x,h)h.hasOwnProperty(f)&&(a=h[f],a.steps>e.steps&&(e=a));else if(e=c(a.childNodes.item(b)||a),!e)for(d.setUnfilteredPosition(a,b);!e&&d.previousNode();)e=c(d.getCurrentNode());e=e||x;void 0!==u&&e.steps>u&&(e=r(u));e.setIteratorPosition(d);return e.steps};this.damageCacheAfterStep=function(a){0>
-a&&(a=0);void 0===u?u=a:a<u&&(u=a);s()};(function(){var a=q(g)||e(g);x=new n(a,0,g);s=ops.StepsCache.ENABLE_CACHE_VERIFICATION?f:function(){}})()};ops.StepsCache.ENABLE_CACHE_VERIFICATION=!1;ops.StepsCache.Bookmark=function(){};ops.StepsCache.Bookmark.prototype.setIteratorPosition=function(g){}})();
-// Input 42
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-(function(){ops.StepsTranslator=function(m,g,b,k){function d(){var a=m();a!==p&&(runtime.log("Undo detected. Resetting steps cache"),p=a,f=new ops.StepsCache(p,b,k),e=g(p))}function n(a,c){if(!c||b.acceptPosition(a)===r)return!0;for(;a.previousPosition();)if(b.acceptPosition(a)===r){if(c(0,a.container(),a.unfilteredDomOffset()))return!0;break}for(;a.nextPosition();)if(b.acceptPosition(a)===r){if(c(1,a.container(),a.unfilteredDomOffset()))return!0;break}return!1}var p=m(),f=new ops.StepsCache(p,b,
-k),q=new core.DomUtils,e=g(m()),r=core.PositionFilter.FilterResult.FILTER_ACCEPT;this.convertStepsToDomPoint=function(a){var c,l;if(isNaN(a))throw new TypeError("Requested steps is not numeric ("+a+")");if(0>a)throw new RangeError("Requested steps is negative ("+a+")");d();for(c=f.setToClosestStep(a,e);c<a&&e.nextPosition();)(l=b.acceptPosition(e)===r)&&(c+=1),f.updateCache(c,e,l);if(c!==a)throw new RangeError("Requested steps ("+a+") exceeds available steps ("+c+")");return{node:e.container(),offset:e.unfilteredDomOffset()}};
-this.convertDomPointToSteps=function(a,c,l){var h;d();q.containsNode(p,a)||(c=0>q.comparePoints(p,0,a,c),a=p,c=c?0:p.childNodes.length);e.setUnfilteredPosition(a,c);n(e,l)||e.setUnfilteredPosition(a,c);l=e.container();c=e.unfilteredDomOffset();a=f.setToClosestDomPoint(l,c,e);if(0>q.comparePoints(e.container(),e.unfilteredDomOffset(),l,c))return 0<a?a-1:a;for(;(e.container()!==l||e.unfilteredDomOffset()!==c)&&e.nextPosition();)(h=b.acceptPosition(e)===r)&&(a+=1),f.updateCache(a,e,h);return a+0};this.prime=
-function(){var a,c;d();for(a=f.setToClosestStep(0,e);e.nextPosition();)(c=b.acceptPosition(e)===r)&&(a+=1),f.updateCache(a,e,c)};this.handleStepsInserted=function(a){d();f.damageCacheAfterStep(a.position)};this.handleStepsRemoved=function(a){d();f.damageCacheAfterStep(a.position-1)}};ops.StepsTranslator.PREVIOUS_STEP=0;ops.StepsTranslator.NEXT_STEP=1;return ops.StepsTranslator})();
-// Input 43
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.TextPositionFilter=function(m){function g(d,k,e){var g,a;if(k){if(b.isInlineRoot(k)&&b.isGroupingElement(e))return p;g=b.lookLeftForCharacter(k);if(1===g||2===g&&(b.scanRightForAnyCharacter(e)||b.scanRightForAnyCharacter(b.nextNode(d))))return n}g=null===k&&b.isParagraph(d);a=b.lookRightForCharacter(e);if(g)return a?n:b.scanRightForAnyCharacter(e)?p:n;if(!a)return p;k=k||b.previousNode(d);return b.scanLeftForAnyCharacter(k)?p:n}var b=new odf.OdfUtils,k=Node.ELEMENT_NODE,d=Node.TEXT_NODE,n=core.PositionFilter.FilterResult.FILTER_ACCEPT,
-p=core.PositionFilter.FilterResult.FILTER_REJECT;this.acceptPosition=function(f){var q=f.container(),e=q.nodeType,r,a,c;if(e!==k&&e!==d)return p;if(e===d){if(!b.isGroupingElement(q.parentNode)||b.isWithinTrackedChanges(q.parentNode,m()))return p;e=f.unfilteredDomOffset();r=q.data;runtime.assert(e!==r.length,"Unexpected offset.");if(0<e){f=r[e-1];if(!b.isODFWhitespace(f))return n;if(1<e)if(f=r[e-2],!b.isODFWhitespace(f))a=n;else{if(!b.isODFWhitespace(r.substr(0,e)))return p}else c=b.previousNode(q),
-b.scanLeftForNonSpace(c)&&(a=n);if(a===n)return b.isTrailingWhitespace(q,e)?p:n;a=r[e];return b.isODFWhitespace(a)?p:b.scanLeftForAnyCharacter(b.previousNode(q))?p:n}c=f.leftNode();a=q;q=q.parentNode;a=g(q,c,a)}else!b.isGroupingElement(q)||b.isWithinTrackedChanges(q,m())?a=p:(c=f.leftNode(),a=f.rightNode(),a=g(q,c,a));return a}};
-// Input 44
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OdtDocument=function(m){function g(){var a=m.odfContainer().getContentElement(),b=a&&a.localName;runtime.assert("text"===b,"Unsupported content element type '"+b+"' for OdtDocument");return a}function b(){return a.getDocumentElement().ownerDocument}function k(a){for(;a&&!(a.namespaceURI===odf.Namespaces.officens&&"text"===a.localName||a.namespaceURI===odf.Namespaces.officens&&"annotation"===a.localName);)a=a.parentNode;return a}function d(a){this.acceptPosition=function(b){b=b.container();var c;
-c="string"===typeof a?h[a].getNode():a;return k(b)===k(c)?z:x}}function n(a,b,c,d){d=gui.SelectionMover.createPositionIterator(d);var e;1===c.length?e=c[0]:(e=new core.PositionFilterChain,c.forEach(e.addFilter));c=new core.StepIterator(e,d);c.setPosition(a,b);return c}function p(a){var b=gui.SelectionMover.createPositionIterator(g());a=t.convertStepsToDomPoint(a);b.setUnfilteredPosition(a.node,a.offset);return b}function f(a){return c.getParagraphElement(a)}function q(a,b){return m.getFormatting().getStyleElement(a,
-b)}function e(a){return q(a,"paragraph")}function r(a,b,c){a=a.childNodes.item(b)||a;return(a=f(a))&&l.containsNode(c,a)?a:c}var a=this,c,l,h={},v={},w=new core.EventNotifier([ops.Document.signalMemberAdded,ops.Document.signalMemberUpdated,ops.Document.signalMemberRemoved,ops.Document.signalCursorAdded,ops.Document.signalCursorRemoved,ops.Document.signalCursorMoved,ops.OdtDocument.signalParagraphChanged,ops.OdtDocument.signalParagraphStyleModified,ops.OdtDocument.signalCommonStyleCreated,ops.OdtDocument.signalCommonStyleDeleted,
-ops.OdtDocument.signalTableAdded,ops.OdtDocument.signalOperationStart,ops.OdtDocument.signalOperationEnd,ops.OdtDocument.signalProcessingBatchStart,ops.OdtDocument.signalProcessingBatchEnd,ops.OdtDocument.signalUndoStackChanged,ops.OdtDocument.signalStepsInserted,ops.OdtDocument.signalStepsRemoved]),z=core.PositionFilter.FilterResult.FILTER_ACCEPT,x=core.PositionFilter.FilterResult.FILTER_REJECT,u,t,s;this.getDocumentElement=function(){return m.odfContainer().rootElement};this.getDOMDocument=function(){return this.getDocumentElement().ownerDocument};
-this.cloneDocumentElement=function(){var b=a.getDocumentElement(),c=m.getAnnotationViewManager();c&&c.forgetAnnotations();b=b.cloneNode(!0);m.refreshAnnotations();return b};this.setDocumentElement=function(a){var b=m.odfContainer();b.setRootElement(a);m.setOdfContainer(b,!0);m.refreshCSS()};this.getDOMDocument=b;this.getRootElement=k;this.createStepIterator=n;this.getIteratorAtPosition=p;this.convertDomPointToCursorStep=function(a,b,c){return t.convertDomPointToSteps(a,b,c)};this.convertDomToCursorRange=
-function(a,b){var c,d;c=b&&b(a.anchorNode,a.anchorOffset);c=t.convertDomPointToSteps(a.anchorNode,a.anchorOffset,c);b||a.anchorNode!==a.focusNode||a.anchorOffset!==a.focusOffset?(d=b&&b(a.focusNode,a.focusOffset),d=t.convertDomPointToSteps(a.focusNode,a.focusOffset,d)):d=c;return{position:c,length:d-c}};this.convertCursorToDomRange=function(a,c){var d=b().createRange(),e,h;e=t.convertStepsToDomPoint(a);c?(h=t.convertStepsToDomPoint(a+c),0<c?(d.setStart(e.node,e.offset),d.setEnd(h.node,h.offset)):
-(d.setStart(h.node,h.offset),d.setEnd(e.node,e.offset))):d.setStart(e.node,e.offset);return d};this.getStyleElement=q;this.upgradeWhitespacesAtPosition=function(a){a=p(a);var b,d,e;a.previousPosition();a.previousPosition();for(e=-1;1>=e;e+=1){b=a.container();d=a.unfilteredDomOffset();if(b.nodeType===Node.TEXT_NODE&&" "===b.data[d]&&c.isSignificantWhitespace(b,d)){runtime.assert(" "===b.data[d],"upgradeWhitespaceToElement: textNode.data[offset] should be a literal space");var h=b.ownerDocument.createElementNS(odf.Namespaces.textns,
-"text:s"),f=b.parentNode,l=b;h.appendChild(b.ownerDocument.createTextNode(" "));1===b.length?f.replaceChild(h,b):(b.deleteData(d,1),0<d&&(d<b.length&&b.splitText(d),l=b.nextSibling),f.insertBefore(h,l));b=h;a.moveToEndOfNode(b)}a.nextPosition()}};this.downgradeWhitespacesAtPosition=function(a){var b=p(a),d;a=b.container();for(b=b.unfilteredDomOffset();!c.isSpaceElement(a)&&a.childNodes.item(b);)a=a.childNodes.item(b),b=0;a.nodeType===Node.TEXT_NODE&&(a=a.parentNode);c.isDowngradableSpaceElement(a)&&
-(b=a.firstChild,d=a.lastChild,l.mergeIntoParent(a),d!==b&&l.normalizeTextNodes(d),l.normalizeTextNodes(b))};this.getParagraphStyleElement=e;this.getParagraphElement=f;this.getParagraphStyleAttributes=function(a){return(a=e(a))?m.getFormatting().getInheritedStyleAttributes(a,!1):null};this.getTextNodeAtStep=function(c,d){var e=p(c),f=e.container(),l,k=0,g=null;f.nodeType===Node.TEXT_NODE?(l=f,k=e.unfilteredDomOffset(),0<l.length&&(0<k&&(l=l.splitText(k)),l.parentNode.insertBefore(b().createTextNode(""),
-l),l=l.previousSibling,k=0)):(l=b().createTextNode(""),k=0,f.insertBefore(l,e.rightNode()));if(d){if(h[d]&&a.getCursorPosition(d)===c){for(g=h[d].getNode();g.nextSibling&&"cursor"===g.nextSibling.localName;)g.parentNode.insertBefore(g.nextSibling,g);0<l.length&&l.nextSibling!==g&&(l=b().createTextNode(""),k=0);g.parentNode.insertBefore(l,g)}}else for(;l.nextSibling&&"cursor"===l.nextSibling.localName;)l.parentNode.insertBefore(l.nextSibling,l);for(;l.previousSibling&&l.previousSibling.nodeType===
-Node.TEXT_NODE;)e=l.previousSibling,e.appendData(l.data),k=e.length,l=e,l.parentNode.removeChild(l.nextSibling);for(;l.nextSibling&&l.nextSibling.nodeType===Node.TEXT_NODE;)e=l.nextSibling,l.appendData(e.data),l.parentNode.removeChild(e);return{textNode:l,offset:k}};this.fixCursorPositions=function(){Object.keys(h).forEach(function(b){var c=h[b],d=k(c.getNode()),e=a.createRootFilter(d),f,l,g,m=!1;g=c.getSelectedRange();f=r(g.startContainer,g.startOffset,d);l=n(g.startContainer,g.startOffset,[u,e],
-f);g.collapsed?d=l:(f=r(g.endContainer,g.endOffset,d),d=n(g.endContainer,g.endOffset,[u,e],f));l.isStep()&&d.isStep()?l.container()!==d.container()||l.offset()!==d.offset()||g.collapsed&&c.getAnchorNode()===c.getNode()||(m=!0,g.setStart(l.container(),l.offset()),g.collapse(!0)):(m=!0,runtime.assert(l.roundToClosestStep(),"No walkable step found for cursor owned by "+b),g.setStart(l.container(),l.offset()),runtime.assert(d.roundToClosestStep(),"No walkable step found for cursor owned by "+b),g.setEnd(d.container(),
-d.offset()));m&&(c.setSelectedRange(g,c.hasForwardSelection()),a.emit(ops.Document.signalCursorMoved,c))})};this.getCursorPosition=function(a){return(a=h[a])?t.convertDomPointToSteps(a.getNode(),0):0};this.getCursorSelection=function(a){a=h[a];var b=0,c=0;a&&(b=t.convertDomPointToSteps(a.getNode(),0),c=t.convertDomPointToSteps(a.getAnchorNode(),0));return{position:c,length:b-c}};this.getPositionFilter=function(){return u};this.getOdfCanvas=function(){return m};this.getCanvas=function(){return m};
-this.getRootNode=g;this.addMember=function(a){runtime.assert(void 0===v[a.getMemberId()],"This member already exists");v[a.getMemberId()]=a};this.getMember=function(a){return v.hasOwnProperty(a)?v[a]:null};this.removeMember=function(a){delete v[a]};this.getCursor=function(a){return h[a]};this.getMemberIds=function(){var a=[],b;for(b in h)h.hasOwnProperty(b)&&a.push(h[b].getMemberId());return a};this.addCursor=function(b){runtime.assert(Boolean(b),"OdtDocument::addCursor without cursor");var c=b.getMemberId(),
-d=a.convertCursorToDomRange(0,0);runtime.assert("string"===typeof c,"OdtDocument::addCursor has cursor without memberid");runtime.assert(!h[c],"OdtDocument::addCursor is adding a duplicate cursor with memberid "+c);b.setSelectedRange(d,!0);h[c]=b};this.removeCursor=function(b){var c=h[b];return c?(c.removeFromDocument(),delete h[b],a.emit(ops.Document.signalCursorRemoved,b),!0):!1};this.moveCursor=function(b,c,d,e){b=h[b];c=a.convertCursorToDomRange(c,d);b&&(b.setSelectedRange(c,0<=d),b.setSelectionType(e||
-ops.OdtCursor.RangeSelection))};this.getFormatting=function(){return m.getFormatting()};this.emit=function(a,b){w.emit(a,b)};this.subscribe=function(a,b){w.subscribe(a,b)};this.unsubscribe=function(a,b){w.unsubscribe(a,b)};this.createRootFilter=function(a){return new d(a)};this.close=function(a){a()};this.destroy=function(a){a()};u=new ops.TextPositionFilter(g);c=new odf.OdfUtils;l=new core.DomUtils;t=new ops.StepsTranslator(g,gui.SelectionMover.createPositionIterator,u,500);w.subscribe(ops.OdtDocument.signalStepsInserted,
-t.handleStepsInserted);w.subscribe(ops.OdtDocument.signalStepsRemoved,t.handleStepsRemoved);w.subscribe(ops.OdtDocument.signalOperationEnd,function(b){var c=b.spec(),d=c.memberid,c=(new Date(c.timestamp)).toISOString(),e=m.odfContainer();b.isEdit&&(d=a.getMember(d).getProperties().fullName,e.setMetadata({"dc:creator":d,"dc:date":c},null),s||(e.incrementEditingCycles(),e.setMetadata(null,["meta:editing-duration","meta:document-statistic"])),s=b)})};ops.OdtDocument.signalParagraphChanged="paragraph/changed";
-ops.OdtDocument.signalTableAdded="table/added";ops.OdtDocument.signalCommonStyleCreated="style/created";ops.OdtDocument.signalCommonStyleDeleted="style/deleted";ops.OdtDocument.signalParagraphStyleModified="paragraphstyle/modified";ops.OdtDocument.signalOperationStart="operation/start";ops.OdtDocument.signalOperationEnd="operation/end";ops.OdtDocument.signalProcessingBatchStart="router/batchstart";ops.OdtDocument.signalProcessingBatchEnd="router/batchend";ops.OdtDocument.signalUndoStackChanged="undo/changed";
-ops.OdtDocument.signalStepsInserted="steps/inserted";ops.OdtDocument.signalStepsRemoved="steps/removed";(function(){return ops.OdtDocument})();
-// Input 45
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OpAddAnnotation=function(){function m(b,d,e){var k=b.getTextNodeAtStep(e,g);k&&(b=k.textNode,e=b.parentNode,k.offset!==b.length&&b.splitText(k.offset),e.insertBefore(d,b.nextSibling),0===b.length&&e.removeChild(b))}var g,b,k,d,n,p;this.init=function(f){g=f.memberid;b=parseInt(f.timestamp,10);k=parseInt(f.position,10);d=parseInt(f.length,10)||0;n=f.name};this.isEdit=!0;this.group=void 0;this.execute=function(f){var q=f.getCursor(g),e,r;r=new core.DomUtils;p=f.getDOMDocument();var a=new Date(b),
-c,l,h,v;c=p.createElementNS(odf.Namespaces.officens,"office:annotation");c.setAttributeNS(odf.Namespaces.officens,"office:name",n);e=p.createElementNS(odf.Namespaces.dcns,"dc:creator");e.setAttributeNS("urn:webodf:names:editinfo","editinfo:memberid",g);e.textContent=f.getMember(g).getProperties().fullName;l=p.createElementNS(odf.Namespaces.dcns,"dc:date");l.appendChild(p.createTextNode(a.toISOString()));a=p.createElementNS(odf.Namespaces.textns,"text:list");h=p.createElementNS(odf.Namespaces.textns,
-"text:list-item");v=p.createElementNS(odf.Namespaces.textns,"text:p");h.appendChild(v);a.appendChild(h);c.appendChild(e);c.appendChild(l);c.appendChild(a);d&&(e=p.createElementNS(odf.Namespaces.officens,"office:annotation-end"),e.setAttributeNS(odf.Namespaces.officens,"office:name",n),c.annotationEndElement=e,m(f,e,k+d));m(f,c,k);f.emit(ops.OdtDocument.signalStepsInserted,{position:k,length:d});q&&(e=p.createRange(),r=r.getElementsByTagNameNS(c,odf.Namespaces.textns,"p")[0],e.selectNodeContents(r),
-q.setSelectedRange(e,!1),f.emit(ops.Document.signalCursorMoved,q));f.getOdfCanvas().addAnnotation(c);f.fixCursorPositions();return!0};this.spec=function(){return{optype:"AddAnnotation",memberid:g,timestamp:b,position:k,length:d,name:n}}};
-// Input 46
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OpAddCursor=function(){var m,g;this.init=function(b){m=b.memberid;g=b.timestamp};this.isEdit=!1;this.group=void 0;this.execute=function(b){var g=b.getCursor(m);if(g)return!1;g=new ops.OdtCursor(m,b);b.addCursor(g);b.emit(ops.Document.signalCursorAdded,g);return!0};this.spec=function(){return{optype:"AddCursor",memberid:m,timestamp:g}}};
-// Input 47
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- This file is part of WebODF.
-
- WebODF is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License (GNU AGPL)
- as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- WebODF is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with WebODF. If not, see <http://www.gnu.org/licenses/>.
- @licend
-
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OpAddMember=function(){var m,g,b;this.init=function(k){m=k.memberid;g=parseInt(k.timestamp,10);b=k.setProperties};this.isEdit=!1;this.group=void 0;this.execute=function(g){var d;if(g.getMember(m))return!1;d=new ops.Member(m,b);g.addMember(d);g.emit(ops.Document.signalMemberAdded,d);return!0};this.spec=function(){return{optype:"AddMember",memberid:m,timestamp:g,setProperties:b}}};
-// Input 48
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OpAddStyle=function(){var m,g,b,k,d,n,p=odf.Namespaces.stylens;this.init=function(f){m=f.memberid;g=f.timestamp;b=f.styleName;k=f.styleFamily;d="true"===f.isAutomaticStyle||!0===f.isAutomaticStyle;n=f.setProperties};this.isEdit=!0;this.group=void 0;this.execute=function(f){var g=f.getOdfCanvas().odfContainer(),e=f.getFormatting(),m=f.getDOMDocument().createElementNS(p,"style:style");if(!m)return!1;n&&e.updateStyle(m,n);m.setAttributeNS(p,"style:family",k);m.setAttributeNS(p,"style:name",b);d?
-g.rootElement.automaticStyles.appendChild(m):g.rootElement.styles.appendChild(m);f.getOdfCanvas().refreshCSS();d||f.emit(ops.OdtDocument.signalCommonStyleCreated,{name:b,family:k});return!0};this.spec=function(){return{optype:"AddStyle",memberid:m,timestamp:g,styleName:b,styleFamily:k,isAutomaticStyle:d,setProperties:n}}};
-// Input 49
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-odf.ObjectNameGenerator=function(m,g){function b(a,b){var c={};this.generateName=function(){var d=b(),e=0,f;do f=a+e,e+=1;while(c[f]||d[f]);c[f]=!0;return f}}function k(){var a={};[m.rootElement.automaticStyles,m.rootElement.styles].forEach(function(b){for(b=b.firstElementChild;b;)b.namespaceURI===d&&"style"===b.localName&&(a[b.getAttributeNS(d,"name")]=!0),b=b.nextElementSibling});return a}var d=odf.Namespaces.stylens,n=odf.Namespaces.drawns,p=odf.Namespaces.xlinkns,f=new core.DomUtils,q=(new core.Utils).hashString(g),
-e=null,r=null,a=null,c={},l={};this.generateStyleName=function(){null===e&&(e=new b("auto"+q+"_",function(){return k()}));return e.generateName()};this.generateFrameName=function(){null===r&&(f.getElementsByTagNameNS(m.rootElement.body,n,"frame").forEach(function(a){c[a.getAttributeNS(n,"name")]=!0}),r=new b("fr"+q+"_",function(){return c}));return r.generateName()};this.generateImageName=function(){null===a&&(f.getElementsByTagNameNS(m.rootElement.body,n,"image").forEach(function(a){a=a.getAttributeNS(p,
-"href");a=a.substring(9,a.lastIndexOf("."));l[a]=!0}),a=new b("img"+q+"_",function(){return l}));return a.generateName()}};
-// Input 50
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-odf.TextStyleApplicator=function(m,g,b){function k(b){function d(a,b){return"object"===typeof a&&"object"===typeof b?Object.keys(a).every(function(e){return d(a[e],b[e])}):a===b}var a={};this.isStyleApplied=function(c){c=g.getAppliedStylesForElement(c,a);return d(b,c)}}function d(d){var k={};this.applyStyleToContainer=function(a){var c;c=a.getAttributeNS(f,"style-name");var l=a.ownerDocument;c=c||"";if(!k.hasOwnProperty(c)){var h=c,n;n=c?g.createDerivedStyleObject(c,"text",d):d;l=l.createElementNS(q,
-"style:style");g.updateStyle(l,n);l.setAttributeNS(q,"style:name",m.generateStyleName());l.setAttributeNS(q,"style:family","text");l.setAttributeNS("urn:webodf:names:scope","scope","document-content");b.appendChild(l);k[h]=l}c=k[c].getAttributeNS(q,"name");a.setAttributeNS(f,"text:style-name",c)}}function n(b,d){var a=b.ownerDocument,c=b.parentNode,l,h,g=new core.LoopWatchDog(1E4);h=[];"span"!==c.localName||c.namespaceURI!==f?(l=a.createElementNS(f,"text:span"),c.insertBefore(l,b),c=!1):(b.previousSibling&&
-!p.rangeContainsNode(d,c.firstChild)?(l=c.cloneNode(!1),c.parentNode.insertBefore(l,c.nextSibling)):l=c,c=!0);h.push(b);for(a=b.nextSibling;a&&p.rangeContainsNode(d,a);)g.check(),h.push(a),a=a.nextSibling;h.forEach(function(a){a.parentNode!==l&&l.appendChild(a)});if(a&&c)for(h=l.cloneNode(!1),l.parentNode.insertBefore(h,l.nextSibling);a;)g.check(),c=a.nextSibling,h.appendChild(a),a=c;return l}var p=new core.DomUtils,f=odf.Namespaces.textns,q=odf.Namespaces.stylens;this.applyStyle=function(b,f,a){var c=
-{},l,h,g,m;runtime.assert(a&&a.hasOwnProperty("style:text-properties"),"applyStyle without any text properties");c["style:text-properties"]=a["style:text-properties"];g=new d(c);m=new k(c);b.forEach(function(a){l=m.isStyleApplied(a);!1===l&&(h=n(a,f),g.applyStyleToContainer(h))})}};
-// Input 51
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OpApplyDirectStyling=function(){function m(b,d,k){var a=b.getOdfCanvas().odfContainer(),c=f.splitBoundaries(d),l=p.getTextNodes(d,!1);d={startContainer:d.startContainer,startOffset:d.startOffset,endContainer:d.endContainer,endOffset:d.endOffset};(new odf.TextStyleApplicator(new odf.ObjectNameGenerator(a,g),b.getFormatting(),a.rootElement.automaticStyles)).applyStyle(l,d,k);c.forEach(f.normalizeTextNodes)}var g,b,k,d,n,p=new odf.OdfUtils,f=new core.DomUtils;this.init=function(f){g=f.memberid;b=
-f.timestamp;k=parseInt(f.position,10);d=parseInt(f.length,10);n=f.setProperties};this.isEdit=!0;this.group=void 0;this.execute=function(f){var e=f.convertCursorToDomRange(k,d),r=p.getParagraphElements(e);m(f,e,n);e.detach();f.getOdfCanvas().refreshCSS();f.fixCursorPositions();r.forEach(function(a){f.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:a,memberId:g,timeStamp:b})});f.getOdfCanvas().rerenderAnnotations();return!0};this.spec=function(){return{optype:"ApplyDirectStyling",memberid:g,
-timestamp:b,position:k,length:d,setProperties:n}}};
-// Input 52
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OpApplyHyperlink=function(){function m(b){for(;b;){if(f.isHyperlink(b))return!0;b=b.parentNode}return!1}var g,b,k,d,n,p=new core.DomUtils,f=new odf.OdfUtils;this.init=function(f){g=f.memberid;b=f.timestamp;k=f.position;d=f.length;n=f.hyperlink};this.isEdit=!0;this.group=void 0;this.execute=function(q){var e=q.getDOMDocument(),r=q.convertCursorToDomRange(k,d),a=p.splitBoundaries(r),c=[],l=f.getTextNodes(r,!1);if(0===l.length)return!1;l.forEach(function(a){var b=f.getParagraphElement(a);runtime.assert(!1===
-m(a),"The given range should not contain any link.");var d=n,l=e.createElementNS(odf.Namespaces.textns,"text:a");l.setAttributeNS(odf.Namespaces.xlinkns,"xlink:type","simple");l.setAttributeNS(odf.Namespaces.xlinkns,"xlink:href",d);a.parentNode.insertBefore(l,a);l.appendChild(a);-1===c.indexOf(b)&&c.push(b)});a.forEach(p.normalizeTextNodes);r.detach();q.getOdfCanvas().refreshSize();q.getOdfCanvas().rerenderAnnotations();c.forEach(function(a){q.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:a,
-memberId:g,timeStamp:b})});return!0};this.spec=function(){return{optype:"ApplyHyperlink",memberid:g,timestamp:b,position:k,length:d,hyperlink:n}}};
-// Input 53
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OpInsertImage=function(){var m,g,b,k,d,n,p,f,q=odf.Namespaces.drawns,e=odf.Namespaces.svgns,r=odf.Namespaces.textns,a=odf.Namespaces.xlinkns;this.init=function(a){m=a.memberid;g=a.timestamp;b=a.position;k=a.filename;d=a.frameWidth;n=a.frameHeight;p=a.frameStyleName;f=a.frameName};this.isEdit=!0;this.group=void 0;this.execute=function(c){var l=c.getOdfCanvas(),h=c.getTextNodeAtStep(b,m),v,w;if(!h)return!1;v=h.textNode;w=c.getParagraphElement(v);var h=h.offset!==v.length?v.splitText(h.offset):v.nextSibling,
-z=c.getDOMDocument(),x=z.createElementNS(q,"draw:image"),z=z.createElementNS(q,"draw:frame");x.setAttributeNS(a,"xlink:href",k);x.setAttributeNS(a,"xlink:type","simple");x.setAttributeNS(a,"xlink:show","embed");x.setAttributeNS(a,"xlink:actuate","onLoad");z.setAttributeNS(q,"draw:style-name",p);z.setAttributeNS(q,"draw:name",f);z.setAttributeNS(r,"text:anchor-type","as-char");z.setAttributeNS(e,"svg:width",d);z.setAttributeNS(e,"svg:height",n);z.appendChild(x);v.parentNode.insertBefore(z,h);c.emit(ops.OdtDocument.signalStepsInserted,
-{position:b,length:1});0===v.length&&v.parentNode.removeChild(v);l.addCssForFrameWithImage(z);l.refreshCSS();c.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:w,memberId:m,timeStamp:g});l.rerenderAnnotations();return!0};this.spec=function(){return{optype:"InsertImage",memberid:m,timestamp:g,filename:k,position:b,frameWidth:d,frameHeight:n,frameStyleName:p,frameName:f}}};
-// Input 54
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OpInsertTable=function(){function m(b,a){var c;if(1===e.length)c=e[0];else if(3===e.length)switch(b){case 0:c=e[0];break;case k-1:c=e[2];break;default:c=e[1]}else c=e[b];if(1===c.length)return c[0];if(3===c.length)switch(a){case 0:return c[0];case d-1:return c[2];default:return c[1]}return c[a]}var g,b,k,d,n,p,f,q,e;this.init=function(m){g=m.memberid;b=m.timestamp;n=m.position;k=m.initialRows;d=m.initialColumns;p=m.tableName;f=m.tableStyleName;q=m.tableColumnStyleName;e=m.tableCellStyleMatrix};
-this.isEdit=!0;this.group=void 0;this.execute=function(e){var a=e.getTextNodeAtStep(n),c=e.getRootNode();if(a){var l=e.getDOMDocument(),h=l.createElementNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0","table:table"),v=l.createElementNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0","table:table-column"),w,z,x,u;f&&h.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0","table:style-name",f);p&&h.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0","table:name",p);v.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0",
-"table:number-columns-repeated",d);q&&v.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0","table:style-name",q);h.appendChild(v);for(x=0;x<k;x+=1){v=l.createElementNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0","table:table-row");for(u=0;u<d;u+=1)w=l.createElementNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0","table:table-cell"),(z=m(x,u))&&w.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0","table:style-name",z),z=l.createElementNS("urn:oasis:names:tc:opendocument:xmlns:text:1.0",
-"text:p"),w.appendChild(z),v.appendChild(w);h.appendChild(v)}a=e.getParagraphElement(a.textNode);c.insertBefore(h,a.nextSibling);e.emit(ops.OdtDocument.signalStepsInserted,{position:n,length:d*k+1});e.getOdfCanvas().refreshSize();e.emit(ops.OdtDocument.signalTableAdded,{tableElement:h,memberId:g,timeStamp:b});e.getOdfCanvas().rerenderAnnotations();return!0}return!1};this.spec=function(){return{optype:"InsertTable",memberid:g,timestamp:b,position:n,initialRows:k,initialColumns:d,tableName:p,tableStyleName:f,
-tableColumnStyleName:q,tableCellStyleMatrix:e}}};
-// Input 55
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OpInsertText=function(){var m,g,b,k,d;this.init=function(n){m=n.memberid;g=n.timestamp;b=n.position;d=n.text;k="true"===n.moveCursor||!0===n.moveCursor};this.isEdit=!0;this.group=void 0;this.execute=function(n){var p,f,q,e=null,r=n.getDOMDocument(),a,c=0,l,h=n.getCursor(m),v;n.upgradeWhitespacesAtPosition(b);if(p=n.getTextNodeAtStep(b)){f=p.textNode;e=f.nextSibling;q=f.parentNode;a=n.getParagraphElement(f);for(v=0;v<d.length;v+=1)if(" "===d[v]&&(0===v||v===d.length-1||" "===d[v-1])||"\t"===d[v])0===
-c?(p.offset!==f.length&&(e=f.splitText(p.offset)),0<v&&f.appendData(d.substring(0,v))):c<v&&(c=d.substring(c,v),q.insertBefore(r.createTextNode(c),e)),c=v+1,l=" "===d[v]?"text:s":"text:tab",l=r.createElementNS("urn:oasis:names:tc:opendocument:xmlns:text:1.0",l),l.appendChild(r.createTextNode(d[v])),q.insertBefore(l,e);0===c?f.insertData(p.offset,d):c<d.length&&(p=d.substring(c),q.insertBefore(r.createTextNode(p),e));q=f.parentNode;e=f.nextSibling;q.removeChild(f);q.insertBefore(f,e);0===f.length&&
-f.parentNode.removeChild(f);n.emit(ops.OdtDocument.signalStepsInserted,{position:b,length:d.length});h&&k&&(n.moveCursor(m,b+d.length,0),n.emit(ops.Document.signalCursorMoved,h));0<b&&(1<b&&n.downgradeWhitespacesAtPosition(b-2),n.downgradeWhitespacesAtPosition(b-1));n.downgradeWhitespacesAtPosition(b);n.downgradeWhitespacesAtPosition(b+d.length-1);n.downgradeWhitespacesAtPosition(b+d.length);n.getOdfCanvas().refreshSize();n.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:a,memberId:m,
-timeStamp:g});n.getOdfCanvas().rerenderAnnotations();return!0}return!1};this.spec=function(){return{optype:"InsertText",memberid:m,timestamp:g,position:b,text:d,moveCursor:k}}};
-// Input 56
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OpMoveCursor=function(){var m,g,b,k,d;this.init=function(n){m=n.memberid;g=n.timestamp;b=n.position;k=n.length||0;d=n.selectionType||ops.OdtCursor.RangeSelection};this.isEdit=!1;this.group=void 0;this.execute=function(g){var p=g.getCursor(m),f;if(!p)return!1;f=g.convertCursorToDomRange(b,k);p.setSelectedRange(f,0<=k);p.setSelectionType(d);g.emit(ops.Document.signalCursorMoved,p);return!0};this.spec=function(){return{optype:"MoveCursor",memberid:m,timestamp:g,position:b,length:k,selectionType:d}}};
-// Input 57
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OpRemoveAnnotation=function(){var m,g,b,k,d;this.init=function(n){m=n.memberid;g=n.timestamp;b=parseInt(n.position,10);k=parseInt(n.length,10);d=new core.DomUtils};this.isEdit=!0;this.group=void 0;this.execute=function(g){function m(b){q.parentNode.insertBefore(b,q)}for(var f=g.getIteratorAtPosition(b).container(),q;f.namespaceURI!==odf.Namespaces.officens||"annotation"!==f.localName;)f=f.parentNode;if(null===f)return!1;q=f;f=q.annotationEndElement;g.getOdfCanvas().forgetAnnotations();d.getElementsByTagNameNS(q,
-"urn:webodf:names:cursor","cursor").forEach(m);d.getElementsByTagNameNS(q,"urn:webodf:names:cursor","anchor").forEach(m);q.parentNode.removeChild(q);f&&f.parentNode.removeChild(f);g.emit(ops.OdtDocument.signalStepsRemoved,{position:0<b?b-1:b,length:k});g.fixCursorPositions();g.getOdfCanvas().refreshAnnotations();return!0};this.spec=function(){return{optype:"RemoveAnnotation",memberid:m,timestamp:g,position:b,length:k}}};
-// Input 58
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OpRemoveBlob=function(){var m,g,b;this.init=function(k){m=k.memberid;g=k.timestamp;b=k.filename};this.isEdit=!0;this.group=void 0;this.execute=function(g){g.getOdfCanvas().odfContainer().removeBlob(b);return!0};this.spec=function(){return{optype:"RemoveBlob",memberid:m,timestamp:g,filename:b}}};
-// Input 59
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OpRemoveCursor=function(){var m,g;this.init=function(b){m=b.memberid;g=b.timestamp};this.isEdit=!1;this.group=void 0;this.execute=function(b){return b.removeCursor(m)?!0:!1};this.spec=function(){return{optype:"RemoveCursor",memberid:m,timestamp:g}}};
-// Input 60
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OpRemoveHyperlink=function(){var m,g,b,k,d=new core.DomUtils,n=new odf.OdfUtils;this.init=function(d){m=d.memberid;g=d.timestamp;b=d.position;k=d.length};this.isEdit=!0;this.group=void 0;this.execute=function(p){var f=p.convertCursorToDomRange(b,k),q=n.getHyperlinkElements(f);runtime.assert(1===q.length,"The given range should only contain a single link.");q=d.mergeIntoParent(q[0]);f.detach();p.getOdfCanvas().refreshSize();p.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:n.getParagraphElement(q),
-memberId:m,timeStamp:g});p.getOdfCanvas().rerenderAnnotations();return!0};this.spec=function(){return{optype:"RemoveHyperlink",memberid:m,timestamp:g,position:b,length:k}}};
-// Input 61
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- This file is part of WebODF.
-
- WebODF is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License (GNU AGPL)
- as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- WebODF is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with WebODF. If not, see <http://www.gnu.org/licenses/>.
- @licend
-
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OpRemoveMember=function(){var m,g;this.init=function(b){m=b.memberid;g=parseInt(b.timestamp,10)};this.isEdit=!1;this.group=void 0;this.execute=function(b){if(!b.getMember(m))return!1;b.removeMember(m);b.emit(ops.Document.signalMemberRemoved,m);return!0};this.spec=function(){return{optype:"RemoveMember",memberid:m,timestamp:g}}};
-// Input 62
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OpRemoveStyle=function(){var m,g,b,k;this.init=function(d){m=d.memberid;g=d.timestamp;b=d.styleName;k=d.styleFamily};this.isEdit=!0;this.group=void 0;this.execute=function(d){var g=d.getStyleElement(b,k);if(!g)return!1;g.parentNode.removeChild(g);d.getOdfCanvas().refreshCSS();d.emit(ops.OdtDocument.signalCommonStyleDeleted,{name:b,family:k});return!0};this.spec=function(){return{optype:"RemoveStyle",memberid:m,timestamp:g,styleName:b,styleFamily:k}}};
-// Input 63
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OpRemoveText=function(){function m(b){function d(a){return f.hasOwnProperty(a.namespaceURI)||"br"===a.localName&&n.isLineBreak(a.parentNode)||a.nodeType===Node.TEXT_NODE&&f.hasOwnProperty(a.parentNode.namespaceURI)}function g(a){if(n.isCharacterElement(a))return!1;if(a.nodeType===Node.TEXT_NODE)return 0===a.textContent.length;for(a=a.firstChild;a;){if(f.hasOwnProperty(a.namespaceURI)||!g(a))return!1;a=a.nextSibling}return!0}function a(c){var f;c.nodeType===Node.TEXT_NODE?(f=c.parentNode,f.removeChild(c)):
-f=p.removeUnwantedNodes(c,d);return f&&!n.isParagraph(f)&&f!==b&&g(f)?a(f):f}this.isEmpty=g;this.mergeChildrenIntoParent=a}var g,b,k,d,n,p,f={};this.init=function(m){runtime.assert(0<=m.length,"OpRemoveText only supports positive lengths");g=m.memberid;b=m.timestamp;k=parseInt(m.position,10);d=parseInt(m.length,10);n=new odf.OdfUtils;p=new core.DomUtils;f[odf.Namespaces.dbns]=!0;f[odf.Namespaces.dcns]=!0;f[odf.Namespaces.dr3dns]=!0;f[odf.Namespaces.drawns]=!0;f[odf.Namespaces.chartns]=!0;f[odf.Namespaces.formns]=
-!0;f[odf.Namespaces.numberns]=!0;f[odf.Namespaces.officens]=!0;f[odf.Namespaces.presentationns]=!0;f[odf.Namespaces.stylens]=!0;f[odf.Namespaces.svgns]=!0;f[odf.Namespaces.tablens]=!0;f[odf.Namespaces.textns]=!0};this.isEdit=!0;this.group=void 0;this.execute=function(f){var e,r,a,c,l=f.getCursor(g),h=new m(f.getRootNode());f.upgradeWhitespacesAtPosition(k);f.upgradeWhitespacesAtPosition(k+d);r=f.convertCursorToDomRange(k,d);p.splitBoundaries(r);e=f.getParagraphElement(r.startContainer);a=n.getTextElements(r,
-!1,!0);c=n.getParagraphElements(r);r.detach();a.forEach(function(a){a.parentNode?h.mergeChildrenIntoParent(a):runtime.log("WARN: text element has already been removed from it's container")});r=c.reduce(function(a,b){var c,d=a,e=b,f,l=null;h.isEmpty(a)&&(b.parentNode!==a.parentNode&&(f=b.parentNode,a.parentNode.insertBefore(b,a.nextSibling)),e=a,d=b,l=d.getElementsByTagNameNS("urn:webodf:names:editinfo","editinfo").item(0)||d.firstChild);for(;e.firstChild;)c=e.firstChild,e.removeChild(c),"editinfo"!==
-c.localName&&d.insertBefore(c,l);f&&h.isEmpty(f)&&h.mergeChildrenIntoParent(f);h.mergeChildrenIntoParent(e);return d});f.emit(ops.OdtDocument.signalStepsRemoved,{position:k,length:d});f.downgradeWhitespacesAtPosition(k);f.fixCursorPositions();f.getOdfCanvas().refreshSize();f.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:r||e,memberId:g,timeStamp:b});l&&(l.resetSelectionType(),f.emit(ops.Document.signalCursorMoved,l));f.getOdfCanvas().rerenderAnnotations();return!0};this.spec=function(){return{optype:"RemoveText",
-memberid:g,timestamp:b,position:k,length:d}}};
-// Input 64
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OpSetBlob=function(){var m,g,b,k,d;this.init=function(n){m=n.memberid;g=n.timestamp;b=n.filename;k=n.mimetype;d=n.content};this.isEdit=!0;this.group=void 0;this.execute=function(g){g.getOdfCanvas().odfContainer().setBlob(b,k,d);return!0};this.spec=function(){return{optype:"SetBlob",memberid:m,timestamp:g,filename:b,mimetype:k,content:d}}};
-// Input 65
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OpSetParagraphStyle=function(){var m,g,b,k;this.init=function(d){m=d.memberid;g=d.timestamp;b=d.position;k=d.styleName};this.isEdit=!0;this.group=void 0;this.execute=function(d){var n;n=d.getIteratorAtPosition(b);return(n=d.getParagraphElement(n.container()))?(""!==k?n.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:text:1.0","text:style-name",k):n.removeAttributeNS("urn:oasis:names:tc:opendocument:xmlns:text:1.0","style-name"),d.getOdfCanvas().refreshSize(),d.emit(ops.OdtDocument.signalParagraphChanged,
-{paragraphElement:n,timeStamp:g,memberId:m}),d.getOdfCanvas().rerenderAnnotations(),!0):!1};this.spec=function(){return{optype:"SetParagraphStyle",memberid:m,timestamp:g,position:b,styleName:k}}};
-// Input 66
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OpSplitParagraph=function(){var m,g,b,k,d;this.init=function(n){m=n.memberid;g=n.timestamp;b=n.position;k="true"===n.moveCursor||!0===n.moveCursor;d=new odf.OdfUtils};this.isEdit=!0;this.group=void 0;this.execute=function(n){var p,f,q,e,r,a,c,l=n.getCursor(m);n.upgradeWhitespacesAtPosition(b);p=n.getTextNodeAtStep(b);if(!p)return!1;f=n.getParagraphElement(p.textNode);if(!f)return!1;q=d.isListItem(f.parentNode)?f.parentNode:f;0===p.offset?(c=p.textNode.previousSibling,a=null):(c=p.textNode,a=p.offset>=
-p.textNode.length?null:p.textNode.splitText(p.offset));for(e=p.textNode;e!==q;){e=e.parentNode;r=e.cloneNode(!1);a&&r.appendChild(a);if(c)for(;c&&c.nextSibling;)r.appendChild(c.nextSibling);else for(;e.firstChild;)r.appendChild(e.firstChild);e.parentNode.insertBefore(r,e.nextSibling);c=e;a=r}d.isListItem(a)&&(a=a.childNodes.item(0));0===p.textNode.length&&p.textNode.parentNode.removeChild(p.textNode);n.emit(ops.OdtDocument.signalStepsInserted,{position:b,length:1});l&&k&&(n.moveCursor(m,b+1,0),n.emit(ops.Document.signalCursorMoved,
-l));n.fixCursorPositions();n.getOdfCanvas().refreshSize();n.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:f,memberId:m,timeStamp:g});n.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:a,memberId:m,timeStamp:g});n.getOdfCanvas().rerenderAnnotations();return!0};this.spec=function(){return{optype:"SplitParagraph",memberid:m,timestamp:g,position:b,moveCursor:k}}};
-// Input 67
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- This file is part of WebODF.
-
- WebODF is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License (GNU AGPL)
- as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- WebODF is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with WebODF. If not, see <http://www.gnu.org/licenses/>.
- @licend
-
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OpUpdateMember=function(){function m(b){var d="//dc:creator[@editinfo:memberid='"+g+"']";b=xmldom.XPath.getODFElementsWithXPath(b.getRootNode(),d,function(b){return"editinfo"===b?"urn:webodf:names:editinfo":odf.Namespaces.lookupNamespaceURI(b)});for(d=0;d<b.length;d+=1)b[d].textContent=k.fullName}var g,b,k,d;this.init=function(n){g=n.memberid;b=parseInt(n.timestamp,10);k=n.setProperties;d=n.removedProperties};this.isEdit=!1;this.group=void 0;this.execute=function(b){var p=b.getMember(g);if(!p)return!1;
-d&&p.removeProperties(d);k&&(p.setProperties(k),k.fullName&&m(b));b.emit(ops.Document.signalMemberUpdated,p);return!0};this.spec=function(){return{optype:"UpdateMember",memberid:g,timestamp:b,setProperties:k,removedProperties:d}}};
-// Input 68
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- This file is part of WebODF.
-
- WebODF is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License (GNU AGPL)
- as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- WebODF is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with WebODF. If not, see <http://www.gnu.org/licenses/>.
- @licend
-
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OpUpdateMetadata=function(){var m,g,b,k;this.init=function(d){m=d.memberid;g=parseInt(d.timestamp,10);b=d.setProperties;k=d.removedProperties};this.isEdit=!0;this.group=void 0;this.execute=function(d){d=d.getOdfCanvas().odfContainer();var g=[];k&&(g=k.attributes.split(","));d.setMetadata(b,g);return!0};this.spec=function(){return{optype:"UpdateMetadata",memberid:m,timestamp:g,setProperties:b,removedProperties:k}}};
-// Input 69
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OpUpdateParagraphStyle=function(){function m(b,d){var e,g,a=d?d.split(","):[];for(e=0;e<a.length;e+=1)g=a[e].split(":"),b.removeAttributeNS(odf.Namespaces.lookupNamespaceURI(g[0]),g[1])}var g,b,k,d,n,p=odf.Namespaces.stylens;this.init=function(f){g=f.memberid;b=f.timestamp;k=f.styleName;d=f.setProperties;n=f.removedProperties};this.isEdit=!0;this.group=void 0;this.execute=function(b){var g=b.getFormatting(),e,r,a;return(e=""!==k?b.getParagraphStyleElement(k):g.getDefaultStyleElement("paragraph"))?
-(r=e.getElementsByTagNameNS(p,"paragraph-properties").item(0),a=e.getElementsByTagNameNS(p,"text-properties").item(0),d&&g.updateStyle(e,d),n&&(g=n["style:paragraph-properties"],r&&g&&(m(r,g.attributes),0===r.attributes.length&&e.removeChild(r)),g=n["style:text-properties"],a&&g&&(m(a,g.attributes),0===a.attributes.length&&e.removeChild(a)),m(e,n.attributes)),b.getOdfCanvas().refreshCSS(),b.emit(ops.OdtDocument.signalParagraphStyleModified,k),b.getOdfCanvas().rerenderAnnotations(),!0):!1};this.spec=
-function(){return{optype:"UpdateParagraphStyle",memberid:g,timestamp:b,styleName:k,setProperties:d,removedProperties:n}}};
-// Input 70
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OperationFactory=function(){var m;this.register=function(g,b){m[g]=b};this.create=function(g){var b=null,k=m[g.optype];k&&(b=new k,b.init(g));return b};m={AddMember:ops.OpAddMember,UpdateMember:ops.OpUpdateMember,RemoveMember:ops.OpRemoveMember,AddCursor:ops.OpAddCursor,ApplyDirectStyling:ops.OpApplyDirectStyling,SetBlob:ops.OpSetBlob,RemoveBlob:ops.OpRemoveBlob,InsertImage:ops.OpInsertImage,InsertTable:ops.OpInsertTable,InsertText:ops.OpInsertText,RemoveText:ops.OpRemoveText,SplitParagraph:ops.OpSplitParagraph,
-SetParagraphStyle:ops.OpSetParagraphStyle,UpdateParagraphStyle:ops.OpUpdateParagraphStyle,AddStyle:ops.OpAddStyle,RemoveStyle:ops.OpRemoveStyle,MoveCursor:ops.OpMoveCursor,RemoveCursor:ops.OpRemoveCursor,AddAnnotation:ops.OpAddAnnotation,RemoveAnnotation:ops.OpRemoveAnnotation,UpdateMetadata:ops.OpUpdateMetadata,ApplyHyperlink:ops.OpApplyHyperlink,RemoveHyperlink:ops.OpRemoveHyperlink}};
-// Input 71
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OperationRouter=function(){};ops.OperationRouter.prototype.setOperationFactory=function(m){};ops.OperationRouter.prototype.setPlaybackFunction=function(m){};ops.OperationRouter.prototype.push=function(m){};ops.OperationRouter.prototype.close=function(m){};ops.OperationRouter.prototype.subscribe=function(m,g){};ops.OperationRouter.prototype.unsubscribe=function(m,g){};ops.OperationRouter.prototype.hasLocalUnsyncedOps=function(){};ops.OperationRouter.prototype.hasSessionHostConnection=function(){};
-ops.OperationRouter.signalProcessingBatchStart="router/batchstart";ops.OperationRouter.signalProcessingBatchEnd="router/batchend";
-// Input 72
-/*
-
- Copyright (C) 2012 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.TrivialOperationRouter=function(){var m=new core.EventNotifier([ops.OperationRouter.signalProcessingBatchStart,ops.OperationRouter.signalProcessingBatchEnd]),g,b,k=0;this.setOperationFactory=function(b){g=b};this.setPlaybackFunction=function(d){b=d};this.push=function(d){k+=1;m.emit(ops.OperationRouter.signalProcessingBatchStart,{});d.forEach(function(d){d=d.spec();d.timestamp=(new Date).getTime();d=g.create(d);d.group="g"+k;b(d)});m.emit(ops.OperationRouter.signalProcessingBatchEnd,{})};this.close=
-function(b){b()};this.subscribe=function(b,g){m.subscribe(b,g)};this.unsubscribe=function(b,g){m.unsubscribe(b,g)};this.hasLocalUnsyncedOps=function(){return!1};this.hasSessionHostConnection=function(){return!0}};
-// Input 73
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.Session=function(m){function g(b){d.emit(ops.OdtDocument.signalProcessingBatchStart,b)}function b(b){d.emit(ops.OdtDocument.signalProcessingBatchEnd,b)}var k=new ops.OperationFactory,d=new ops.OdtDocument(m),n=null;this.setOperationFactory=function(b){k=b;n&&n.setOperationFactory(k)};this.setOperationRouter=function(m){n&&(n.unsubscribe(ops.OperationRouter.signalProcessingBatchStart,g),n.unsubscribe(ops.OperationRouter.signalProcessingBatchEnd,b));n=m;n.subscribe(ops.OperationRouter.signalProcessingBatchStart,
-g);n.subscribe(ops.OperationRouter.signalProcessingBatchEnd,b);m.setPlaybackFunction(function(b){d.emit(ops.OdtDocument.signalOperationStart,b);return b.execute(d)?(d.emit(ops.OdtDocument.signalOperationEnd,b),!0):!1});m.setOperationFactory(k)};this.getOperationFactory=function(){return k};this.getOdtDocument=function(){return d};this.enqueue=function(b){n.push(b)};this.close=function(b){n.close(function(f){f?b(f):d.close(b)})};this.destroy=function(b){d.destroy(b)};this.setOperationRouter(new ops.TrivialOperationRouter)};
-// Input 74
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- This file is part of WebODF.
-
- WebODF is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License (GNU AGPL)
- as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- WebODF is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with WebODF. If not, see <http://www.gnu.org/licenses/>.
- @licend
-
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.AnnotationController=function(m,g){function b(){var b=p.getCursor(g),b=b&&b.getNode(),a=!1;if(b){a:{for(a=p.getRootNode();b&&b!==a;){if(b.namespaceURI===e&&"annotation"===b.localName){b=!0;break a}b=b.parentNode}b=!1}a=!b}a!==f&&(f=a,q.emit(gui.AnnotationController.annotatableChanged,f))}function k(d){d.getMemberId()===g&&b()}function d(d){d===g&&b()}function n(d){d.getMemberId()===g&&b()}var p=m.getOdtDocument(),f=!1,q=new core.EventNotifier([gui.AnnotationController.annotatableChanged]),e=odf.Namespaces.officens;
-this.isAnnotatable=function(){return f};this.addAnnotation=function(){var b=new ops.OpAddAnnotation,a=p.getCursorSelection(g),c=a.length,a=a.position;f&&(a=0<=c?a:a+c,c=Math.abs(c),b.init({memberid:g,position:a,length:c,name:g+Date.now()}),m.enqueue([b]))};this.removeAnnotation=function(b){var a,c;a=p.convertDomPointToCursorStep(b,0)+1;c=p.convertDomPointToCursorStep(b,b.childNodes.length);b=new ops.OpRemoveAnnotation;b.init({memberid:g,position:a,length:c-a});c=new ops.OpMoveCursor;c.init({memberid:g,
-position:0<a?a-1:a,length:0});m.enqueue([b,c])};this.subscribe=function(b,a){q.subscribe(b,a)};this.unsubscribe=function(b,a){q.unsubscribe(b,a)};this.destroy=function(b){p.unsubscribe(ops.Document.signalCursorAdded,k);p.unsubscribe(ops.Document.signalCursorRemoved,d);p.unsubscribe(ops.Document.signalCursorMoved,n);b()};p.subscribe(ops.Document.signalCursorAdded,k);p.subscribe(ops.Document.signalCursorRemoved,d);p.subscribe(ops.Document.signalCursorMoved,n);b()};
-gui.AnnotationController.annotatableChanged="annotatable/changed";(function(){return gui.AnnotationController})();
-// Input 75
-gui.Avatar=function(m,g){var b=this,k,d,n;this.setColor=function(b){d.style.borderColor=b};this.setImageUrl=function(g){b.isVisible()?d.src=g:n=g};this.isVisible=function(){return"block"===k.style.display};this.show=function(){n&&(d.src=n,n=void 0);k.style.display="block"};this.hide=function(){k.style.display="none"};this.markAsFocussed=function(b){b?k.classList.add("active"):k.classList.remove("active")};this.destroy=function(b){m.removeChild(k);b()};(function(){var b=m.ownerDocument,f=b.documentElement.namespaceURI;
-k=b.createElementNS(f,"div");d=b.createElementNS(f,"img");d.width=64;d.height=64;k.appendChild(d);k.style.width="64px";k.style.height="70px";k.style.position="absolute";k.style.top="-80px";k.style.left="-34px";k.style.display=g?"block":"none";k.className="handle";m.appendChild(k)})()};
-// Input 76
-gui.Caret=function(m,g,b){function k(){q.style.opacity="0"===q.style.opacity?"1":"0";v.trigger()}function d(a,b){var c=a.getBoundingClientRect(),d=0,e=0;c&&b&&(d=Math.max(c.top,b.top),e=Math.min(c.bottom,b.bottom));return e-d}function n(){Object.keys(u).forEach(function(a){t[a]=u[a]})}function p(){var h,f,l,g;if(!1===u.isShown||m.getSelectionType()!==ops.OdtCursor.RangeSelection||!b&&!m.getSelectedRange().collapsed)u.visibility="hidden",q.style.visibility="hidden",v.cancel();else{u.visibility="visible";
-q.style.visibility="visible";if(!1===u.isFocused)q.style.opacity="1",v.cancel();else{if(w||t.visibility!==u.visibility)q.style.opacity="1",v.cancel();v.trigger()}if(x||z||t.visibility!==u.visibility){h=m.getSelectedRange().cloneRange();f=m.getNode();var k=null;f.previousSibling&&(l=f.previousSibling.nodeType===Node.TEXT_NODE?f.previousSibling.textContent.length:f.previousSibling.childNodes.length,h.setStart(f.previousSibling,0<l?l-1:0),h.setEnd(f.previousSibling,l),(l=h.getBoundingClientRect())&&
-l.height&&(k=l));f.nextSibling&&(h.setStart(f.nextSibling,0),h.setEnd(f.nextSibling,0<(f.nextSibling.nodeType===Node.TEXT_NODE?f.nextSibling.textContent.length:f.nextSibling.childNodes.length)?1:0),(l=h.getBoundingClientRect())&&l.height&&(!k||d(f,l)>d(f,k))&&(k=l));f=k;k=m.getDocument().getCanvas();h=k.getZoomLevel();k=c.getBoundingClientRect(k.getSizer());f?(q.style.top="0",l=c.getBoundingClientRect(q),8>f.height&&(f={top:f.top-(8-f.height)/2,height:8}),q.style.height=c.adaptRangeDifferenceToZoomLevel(f.height,
-h)+"px",q.style.top=c.adaptRangeDifferenceToZoomLevel(f.top-l.top,h)+"px"):(q.style.height="1em",q.style.top="5%");a&&(f=runtime.getWindow().getComputedStyle(q,null),l=c.getBoundingClientRect(q),a.style.bottom=c.adaptRangeDifferenceToZoomLevel(k.bottom-l.bottom,h)+"px",a.style.left=c.adaptRangeDifferenceToZoomLevel(l.right-k.left,h)+"px",f.font?a.style.font=f.font:(a.style.fontStyle=f.fontStyle,a.style.fontVariant=f.fontVariant,a.style.fontWeight=f.fontWeight,a.style.fontSize=f.fontSize,a.style.lineHeight=
-f.lineHeight,a.style.fontFamily=f.fontFamily))}if(z){var k=m.getDocument().getCanvas().getElement().parentNode,p;l=k.offsetWidth-k.clientWidth+5;g=k.offsetHeight-k.clientHeight+5;p=q.getBoundingClientRect();h=p.left-l;f=p.top-g;l=p.right+l;g=p.bottom+g;p=k.getBoundingClientRect();f<p.top?k.scrollTop-=p.top-f:g>p.bottom&&(k.scrollTop+=g-p.bottom);h<p.left?k.scrollLeft-=p.left-h:l>p.right&&(k.scrollLeft+=l-p.right)}}t.isFocused!==u.isFocused&&e.markAsFocussed(u.isFocused);n();x=z=w=!1}function f(a){r.removeChild(q);
-a()}var q,e,r,a,c=new core.DomUtils,l=new core.Async,h,v,w=!1,z=!1,x=!1,u={isFocused:!1,isShown:!0,visibility:"hidden"},t={isFocused:!u.isFocused,isShown:!u.isShown,visibility:"hidden"};this.handleUpdate=function(){x=!0;"hidden"!==u.visibility&&(u.visibility="hidden",q.style.visibility="hidden");h.trigger()};this.refreshCursorBlinking=function(){w=!0;h.trigger()};this.setFocus=function(){u.isFocused=!0;h.trigger()};this.removeFocus=function(){u.isFocused=!1;h.trigger()};this.show=function(){u.isShown=
-!0;h.trigger()};this.hide=function(){u.isShown=!1;h.trigger()};this.setAvatarImageUrl=function(a){e.setImageUrl(a)};this.setColor=function(a){q.style.borderColor=a;e.setColor(a)};this.getCursor=function(){return m};this.getFocusElement=function(){return q};this.toggleHandleVisibility=function(){e.isVisible()?e.hide():e.show()};this.showHandle=function(){e.show()};this.hideHandle=function(){e.hide()};this.setOverlayElement=function(b){a=b;x=!0;h.trigger()};this.ensureVisible=function(){z=!0;h.trigger()};
-this.destroy=function(a){l.destroyAll([h.destroy,v.destroy,e.destroy,f],a)};(function(){var a=m.getDocument().getDOMDocument();q=a.createElementNS(a.documentElement.namespaceURI,"span");q.className="caret";q.style.top="5%";r=m.getNode();r.appendChild(q);e=new gui.Avatar(r,g);h=new core.ScheduledTask(p,0);v=new core.ScheduledTask(k,500);h.triggerImmediate()})()};
-// Input 77
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-odf.TextSerializer=function(){function m(k){var d="",n=g.filter?g.filter.acceptNode(k):NodeFilter.FILTER_ACCEPT,p=k.nodeType,f;if((n===NodeFilter.FILTER_ACCEPT||n===NodeFilter.FILTER_SKIP)&&b.isTextContentContainingNode(k))for(f=k.firstChild;f;)d+=m(f),f=f.nextSibling;n===NodeFilter.FILTER_ACCEPT&&(p===Node.ELEMENT_NODE&&b.isParagraph(k)?d+="\n":p===Node.TEXT_NODE&&k.textContent&&(d+=k.textContent));return d}var g=this,b=new odf.OdfUtils;this.filter=null;this.writeToString=function(b){if(!b)return"";
-b=m(b);"\n"===b[b.length-1]&&(b=b.substr(0,b.length-1));return b}};
-// Input 78
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- This file is part of WebODF.
-
- WebODF is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License (GNU AGPL)
- as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- WebODF is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with WebODF. If not, see <http://www.gnu.org/licenses/>.
- @licend
-
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.MimeDataExporter=function(){var m,g;this.exportRangeToDataTransfer=function(b,g){var d;d=g.startContainer.ownerDocument.createElement("span");d.appendChild(g.cloneContents());d=m.writeToString(d);try{b.setData("text/plain",d)}catch(n){b.setData("Text",d)}};m=new odf.TextSerializer;g=new odf.OdfNodeFilter;m.filter=g};
-// Input 79
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.Clipboard=function(m){this.setDataFromRange=function(g,b){var k,d=g.clipboardData;k=runtime.getWindow();!d&&k&&(d=k.clipboardData);d?(k=!0,m.exportRangeToDataTransfer(d,b),g.preventDefault()):k=!1;return k}};
-// Input 80
-/*
-
- Copyright (C) 2012-2014 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.StyleSummary=function(m){function g(b,g){var f=b+"|"+g,k;d.hasOwnProperty(f)||(k=[],m.forEach(function(d){d=(d=d[b])&&d[g];-1===k.indexOf(d)&&k.push(d)}),d[f]=k);return d[f]}function b(b,d,f){return function(){var k=g(b,d);return f.length>=k.length&&k.every(function(b){return-1!==f.indexOf(b)})}}function k(b,d){var f=g(b,d);return 1===f.length?f[0]:void 0}var d={};this.getPropertyValues=g;this.getCommonValue=k;this.isBold=b("style:text-properties","fo:font-weight",["bold"]);this.isItalic=b("style:text-properties",
-"fo:font-style",["italic"]);this.hasUnderline=b("style:text-properties","style:text-underline-style",["solid"]);this.hasStrikeThrough=b("style:text-properties","style:text-line-through-style",["solid"]);this.fontSize=function(){var b=k("style:text-properties","fo:font-size");return b&&parseFloat(b)};this.fontName=function(){return k("style:text-properties","style:font-name")};this.isAlignedLeft=b("style:paragraph-properties","fo:text-align",["left","start"]);this.isAlignedCenter=b("style:paragraph-properties",
-"fo:text-align",["center"]);this.isAlignedRight=b("style:paragraph-properties","fo:text-align",["right","end"]);this.isAlignedJustified=b("style:paragraph-properties","fo:text-align",["justify"]);this.text={isBold:this.isBold,isItalic:this.isItalic,hasUnderline:this.hasUnderline,hasStrikeThrough:this.hasStrikeThrough,fontSize:this.fontSize,fontName:this.fontName};this.paragraph={isAlignedLeft:this.isAlignedLeft,isAlignedCenter:this.isAlignedCenter,isAlignedRight:this.isAlignedRight,isAlignedJustified:this.isAlignedJustified}};
-// Input 81
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.DirectFormattingController=function(m,g,b,k){function d(a){var b;a.collapsed?(b=a.startContainer,b.hasChildNodes()&&a.startOffset<b.childNodes.length&&(b=b.childNodes.item(a.startOffset)),a=[b]):a=T.getTextNodes(a,!0);return a}function n(a,b){var c={};Object.keys(a).forEach(function(d){var e=a[d](),h=b[d]();e!==h&&(c[d]=h)});return c}function p(){var a,b,c;a=(a=(a=H.getCursor(g))&&a.getSelectedRange())?d(a):[];a=H.getFormatting().getAppliedStyles(a);a[0]&&G&&(a[0]=U.mergeObjects(a[0],G));J=a;
-c=new gui.StyleSummary(J);a=n(Q.text,c.text);b=n(Q.paragraph,c.paragraph);Q=c;0<Object.keys(a).length&&X.emit(gui.DirectFormattingController.textStylingChanged,a);0<Object.keys(b).length&&X.emit(gui.DirectFormattingController.paragraphStylingChanged,b)}function f(a){("string"===typeof a?a:a.getMemberId())===g&&p()}function q(){p()}function e(a){var b=H.getCursor(g);a=a.paragraphElement;b&&H.getParagraphElement(b.getNode())===a&&p()}function r(a,b){b(!a());return!0}function a(a){var b=H.getCursorSelection(g),
-c={"style:text-properties":a};0!==b.length?(a=new ops.OpApplyDirectStyling,a.init({memberid:g,position:b.position,length:b.length,setProperties:c}),m.enqueue([a])):(G=U.mergeObjects(G||{},c),p())}function c(b,c){var d={};d[b]=c;a(d)}function l(a){a=a.spec();G&&a.memberid===g&&"SplitParagraph"!==a.optype&&(G=null,p())}function h(a){c("fo:font-weight",a?"bold":"normal")}function v(a){c("fo:font-style",a?"italic":"normal")}function w(a){c("style:text-underline-style",a?"solid":"none")}function z(a){c("style:text-line-through-style",
-a?"solid":"none")}function x(a){return a===ops.StepsTranslator.NEXT_STEP}function u(a){var c=H.getCursor(g).getSelectedRange(),c=T.getParagraphElements(c),d=H.getFormatting(),e=[],h={},f;c.forEach(function(c){var l=H.convertDomPointToCursorStep(c,0,x),k=c.getAttributeNS(odf.Namespaces.textns,"style-name"),m;c=k?h.hasOwnProperty(k)?h[k]:void 0:f;c||(c=b.generateStyleName(),k?(h[k]=c,m=d.createDerivedStyleObject(k,"paragraph",{})):(f=c,m={}),m=a(m),k=new ops.OpAddStyle,k.init({memberid:g,styleName:c.toString(),
-styleFamily:"paragraph",isAutomaticStyle:!0,setProperties:m}),e.push(k));k=new ops.OpSetParagraphStyle;k.init({memberid:g,styleName:c.toString(),position:l});e.push(k)});m.enqueue(e)}function t(a){u(function(b){return U.mergeObjects(b,a)})}function s(a){t({"style:paragraph-properties":{"fo:text-align":a}})}function y(a,b){var c=H.getFormatting().getDefaultTabStopDistance(),d=b["style:paragraph-properties"],e;d&&(d=d["fo:margin-left"])&&(e=T.parseLength(d));return U.mergeObjects(b,{"style:paragraph-properties":{"fo:margin-left":e&&
-e.unit===c.unit?e.value+a*c.value+e.unit:a*c.value+c.unit}})}function F(a,b){var c=d(a),e=H.getFormatting().getAppliedStyles(c)[0],h=H.getFormatting().getAppliedStylesForElement(b);if(!e||"text"!==e["style:family"]||!e["style:text-properties"])return!1;if(!h||!h["style:text-properties"])return!0;e=e["style:text-properties"];h=h["style:text-properties"];return!Object.keys(e).every(function(a){return e[a]===h[a]})}function L(){}var O=this,H=m.getOdtDocument(),U=new core.Utils,T=new odf.OdfUtils,X=new core.EventNotifier([gui.DirectFormattingController.textStylingChanged,
-gui.DirectFormattingController.paragraphStylingChanged]),D=odf.Namespaces.textns,ba=core.PositionFilter.FilterResult.FILTER_ACCEPT,G,J=[],Q=new gui.StyleSummary(J);this.formatTextSelection=a;this.createCursorStyleOp=function(a,b,c){var d=null;(c=c?J[0]:G)&&c["style:text-properties"]&&(d=new ops.OpApplyDirectStyling,d.init({memberid:g,position:a,length:b,setProperties:{"style:text-properties":c["style:text-properties"]}}),G=null,p());return d};this.setBold=h;this.setItalic=v;this.setHasUnderline=w;
-this.setHasStrikethrough=z;this.setFontSize=function(a){c("fo:font-size",a+"pt")};this.setFontName=function(a){c("style:font-name",a)};this.getAppliedStyles=function(){return J};this.toggleBold=r.bind(O,function(){return Q.isBold()},h);this.toggleItalic=r.bind(O,function(){return Q.isItalic()},v);this.toggleUnderline=r.bind(O,function(){return Q.hasUnderline()},w);this.toggleStrikethrough=r.bind(O,function(){return Q.hasStrikeThrough()},z);this.isBold=function(){return Q.isBold()};this.isItalic=function(){return Q.isItalic()};
-this.hasUnderline=function(){return Q.hasUnderline()};this.hasStrikeThrough=function(){return Q.hasStrikeThrough()};this.fontSize=function(){return Q.fontSize()};this.fontName=function(){return Q.fontName()};this.isAlignedLeft=function(){return Q.isAlignedLeft()};this.isAlignedCenter=function(){return Q.isAlignedCenter()};this.isAlignedRight=function(){return Q.isAlignedRight()};this.isAlignedJustified=function(){return Q.isAlignedJustified()};this.alignParagraphLeft=function(){s("left");return!0};
-this.alignParagraphCenter=function(){s("center");return!0};this.alignParagraphRight=function(){s("right");return!0};this.alignParagraphJustified=function(){s("justify");return!0};this.indent=function(){u(y.bind(null,1));return!0};this.outdent=function(){u(y.bind(null,-1));return!0};this.createParagraphStyleOps=function(a){var c=H.getCursor(g),d=c.getSelectedRange(),e=[],h,f;c.hasForwardSelection()?(h=c.getAnchorNode(),f=c.getNode()):(h=c.getNode(),f=c.getAnchorNode());c=H.getParagraphElement(f);runtime.assert(Boolean(c),
-"DirectFormattingController: Cursor outside paragraph");var l;a:{l=c;var k=gui.SelectionMover.createPositionIterator(l),m=new core.PositionFilterChain;m.addFilter(H.getPositionFilter());m.addFilter(H.createRootFilter(g));for(k.setUnfilteredPosition(d.endContainer,d.endOffset);k.nextPosition();)if(m.acceptPosition(k)===ba){l=H.getParagraphElement(k.getCurrentNode())!==l;break a}l=!0}if(!l)return e;f!==h&&(c=H.getParagraphElement(h));if(!G&&!F(d,c))return e;d=J[0];if(!d)return e;if(h=c.getAttributeNS(D,
-"style-name"))d={"style:text-properties":d["style:text-properties"]},d=H.getFormatting().createDerivedStyleObject(h,"paragraph",d);c=b.generateStyleName();h=new ops.OpAddStyle;h.init({memberid:g,styleName:c,styleFamily:"paragraph",isAutomaticStyle:!0,setProperties:d});e.push(h);h=new ops.OpSetParagraphStyle;h.init({memberid:g,styleName:c,position:a});e.push(h);return e};this.subscribe=function(a,b){X.subscribe(a,b)};this.unsubscribe=function(a,b){X.unsubscribe(a,b)};this.destroy=function(a){H.unsubscribe(ops.Document.signalCursorAdded,
-f);H.unsubscribe(ops.Document.signalCursorRemoved,f);H.unsubscribe(ops.Document.signalCursorMoved,f);H.unsubscribe(ops.OdtDocument.signalParagraphStyleModified,q);H.unsubscribe(ops.OdtDocument.signalParagraphChanged,e);H.unsubscribe(ops.OdtDocument.signalOperationEnd,l);a()};(function(){H.subscribe(ops.Document.signalCursorAdded,f);H.subscribe(ops.Document.signalCursorRemoved,f);H.subscribe(ops.Document.signalCursorMoved,f);H.subscribe(ops.OdtDocument.signalParagraphStyleModified,q);H.subscribe(ops.OdtDocument.signalParagraphChanged,
-e);H.subscribe(ops.OdtDocument.signalOperationEnd,l);p();k||(O.alignParagraphCenter=L,O.alignParagraphJustified=L,O.alignParagraphLeft=L,O.alignParagraphRight=L,O.createParagraphStyleOps=function(){return[]},O.indent=L,O.outdent=L)})()};gui.DirectFormattingController.textStylingChanged="textStyling/changed";gui.DirectFormattingController.paragraphStylingChanged="paragraphStyling/changed";(function(){return gui.DirectFormattingController})();
-// Input 82
-gui.HyperlinkClickHandler=function(m){function g(){m().removeAttributeNS("urn:webodf:names:helper","links")}function b(){m().setAttributeNS("urn:webodf:names:helper","links","inactive")}var k=gui.HyperlinkClickHandler.Modifier.None,d=gui.HyperlinkClickHandler.Modifier.Ctrl,n=gui.HyperlinkClickHandler.Modifier.Meta,p=new odf.OdfUtils,f=xmldom.XPath,q=k;this.handleClick=function(b){var g=b.target||b.srcElement,a,c;b.ctrlKey?a=d:b.metaKey&&(a=n);if(q===k||q===a){a:{for(;null!==g;){if(p.isHyperlink(g))break a;
-if(p.isParagraph(g))break;g=g.parentNode}g=null}g&&(g=p.getHyperlinkTarget(g),""!==g&&("#"===g[0]?(g=g.substring(1),a=m(),c=f.getODFElementsWithXPath(a,"//text:bookmark-start[@text:name='"+g+"']",odf.Namespaces.lookupNamespaceURI),0===c.length&&(c=f.getODFElementsWithXPath(a,"//text:bookmark[@text:name='"+g+"']",odf.Namespaces.lookupNamespaceURI)),0<c.length&&c[0].scrollIntoView(!0)):/^\s*(javascript|data):/.test(g)?runtime.log("WARN:","potentially malicious URL ignored"):runtime.getWindow().open(g),
-b.preventDefault?b.preventDefault():b.returnValue=!1))}};this.showPointerCursor=g;this.showTextCursor=b;this.setModifier=function(d){q=d;q!==k?b():g()}};gui.HyperlinkClickHandler.Modifier={None:0,Ctrl:1,Meta:2};
-// Input 83
-gui.HyperlinkController=function(m,g){var b=new odf.OdfUtils,k=m.getOdtDocument();this.addHyperlink=function(b,n){var p=k.getCursorSelection(g),f=new ops.OpApplyHyperlink,q=[];if(0===p.length||n)n=n||b,f=new ops.OpInsertText,f.init({memberid:g,position:p.position,text:n}),p.length=n.length,q.push(f);f=new ops.OpApplyHyperlink;f.init({memberid:g,position:p.position,length:p.length,hyperlink:b});q.push(f);m.enqueue(q)};this.removeHyperlinks=function(){var d=gui.SelectionMover.createPositionIterator(k.getRootNode()),
-n=k.getCursor(g).getSelectedRange(),p=b.getHyperlinkElements(n),f=n.collapsed&&1===p.length,q=k.getDOMDocument().createRange(),e=[],r,a;0!==p.length&&(p.forEach(function(b){q.selectNodeContents(b);r=k.convertDomToCursorRange({anchorNode:q.startContainer,anchorOffset:q.startOffset,focusNode:q.endContainer,focusOffset:q.endOffset});a=new ops.OpRemoveHyperlink;a.init({memberid:g,position:r.position,length:r.length});e.push(a)}),f||(f=p[0],-1===n.comparePoint(f,0)&&(q.setStart(f,0),q.setEnd(n.startContainer,
-n.startOffset),r=k.convertDomToCursorRange({anchorNode:q.startContainer,anchorOffset:q.startOffset,focusNode:q.endContainer,focusOffset:q.endOffset}),0<r.length&&(a=new ops.OpApplyHyperlink,a.init({memberid:g,position:r.position,length:r.length,hyperlink:b.getHyperlinkTarget(f)}),e.push(a))),p=p[p.length-1],d.moveToEndOfNode(p),d=d.unfilteredDomOffset(),1===n.comparePoint(p,d)&&(q.setStart(n.endContainer,n.endOffset),q.setEnd(p,d),r=k.convertDomToCursorRange({anchorNode:q.startContainer,anchorOffset:q.startOffset,
-focusNode:q.endContainer,focusOffset:q.endOffset}),0<r.length&&(a=new ops.OpApplyHyperlink,a.init({memberid:g,position:r.position,length:r.length,hyperlink:b.getHyperlinkTarget(p)}),e.push(a)))),m.enqueue(e),q.detach())}};
-// Input 84
-gui.EventManager=function(m){function g(){var a=this,b=[];this.filters=[];this.handlers=[];this.handleEvent=function(c){-1===b.indexOf(c)&&(b.push(c),a.filters.every(function(a){return a(c)})&&a.handlers.forEach(function(a){a(c)}),runtime.setTimeout(function(){b.splice(b.indexOf(c),1)},0))}}function b(a,b,c){function d(b){c(b,e,function(b){b.type=a;h.emit("eventTriggered",b)})}var e={},h=new core.EventNotifier(["eventTriggered"]);this.subscribe=function(a){h.subscribe("eventTriggered",a)};this.unsubscribe=
-function(a){h.unsubscribe("eventTriggered",a)};this.destroy=function(){b.forEach(function(a){y.unsubscribe(a,d)})};(function(){b.forEach(function(a){y.subscribe(a,d)})})()}function k(a){runtime.clearTimeout(a);delete F[a]}function d(a,b){var c=runtime.setTimeout(function(){a();k(c)},b);F[c]=!0;return c}function n(a,b,c){var e=a.touches.length,h=a.touches[0],f=b.timer;"touchmove"===a.type||"touchend"===a.type?f&&k(f):"touchstart"===a.type&&(1!==e?runtime.clearTimeout(f):f=d(function(){c({clientX:h.clientX,
-clientY:h.clientY,pageX:h.pageX,pageY:h.pageY,target:a.target||a.srcElement||null,detail:1})},400));b.timer=f}function p(a,b,c){var d=a.touches[0],e=a.target||a.srcElement||null,h=b.target;1!==a.touches.length||"touchend"===a.type?h=null:"touchstart"===a.type&&"draggable"===e.getAttribute("class")?h=e:"touchmove"===a.type&&h&&(a.preventDefault(),a.stopPropagation(),c({clientX:d.clientX,clientY:d.clientY,pageX:d.pageX,pageY:d.pageY,target:h,detail:1}));b.target=h}function f(a,b,c){var d=a.target||
-a.srcElement||null,e=b.dragging;"drag"===a.type?e=!0:"touchend"===a.type&&e&&(e=!1,a=a.changedTouches[0],c({clientX:a.clientX,clientY:a.clientY,pageX:a.pageX,pageY:a.pageY,target:d,detail:1}));b.dragging=e}function q(){s.classList.add("webodf-touchEnabled");y.unsubscribe("touchstart",q)}function e(a){var b=a.scrollX,c=a.scrollY;this.restore=function(){a.scrollX===b&&a.scrollY===c||a.scrollTo(b,c)}}function r(a){var b=a.scrollTop,c=a.scrollLeft;this.restore=function(){if(a.scrollTop!==b||a.scrollLeft!==
-c)a.scrollTop=b,a.scrollLeft=c}}function a(a,b,c){var d,e=!1;x.hasOwnProperty(b)?x[b].subscribe(c):(d="on"+b,a.attachEvent&&(a.attachEvent(d,c),e=!0),!e&&a.addEventListener&&(a.addEventListener(b,c,!1),e=!0),e&&!w[b]||!a.hasOwnProperty(d)||(a[d]=c))}function c(b,c){var d=u[b]||null;!d&&c&&(d=u[b]=new g,z[b]&&a(v,b,d.handleEvent),a(t,b,d.handleEvent),a(s,b,d.handleEvent));return d}function l(){return m.getDOMDocument().activeElement===t}function h(a){for(var b=[];a;)(a.scrollWidth>a.clientWidth||a.scrollHeight>
-a.clientHeight)&&b.push(new r(a)),a=a.parentNode;b.push(new e(v));return b}var v=runtime.getWindow(),w={beforecut:!0,beforepaste:!0,longpress:!0,drag:!0,dragstop:!0},z={mousedown:!0,mouseup:!0,focus:!0},x={},u={},t,s=m.getCanvas().getElement(),y=this,F={};this.addFilter=function(a,b){c(a,!0).filters.push(b)};this.removeFilter=function(a,b){var d=c(a,!0),e=d.filters.indexOf(b);-1!==e&&d.filters.splice(e,1)};this.subscribe=function(a,b){c(a,!0).handlers.push(b)};this.unsubscribe=function(a,b){var d=
-c(a,!1),e=d&&d.handlers.indexOf(b);d&&-1!==e&&d.handlers.splice(e,1)};this.hasFocus=l;this.focus=function(){var a;l()||(a=h(t),t.focus(),a.forEach(function(a){a.restore()}))};this.getEventTrap=function(){return t};this.blur=function(){l()&&t.blur()};this.destroy=function(a){Object.keys(F).forEach(function(a){k(parseInt(a,10))});F.length=0;Object.keys(x).forEach(function(a){x[a].destroy()});x={};y.unsubscribe("touchstart",q);t.parentNode.removeChild(t);a()};(function(){var a=m.getOdfCanvas().getSizer(),
-c=a.ownerDocument;runtime.assert(Boolean(v),"EventManager requires a window object to operate correctly");t=c.createElement("input");t.id="eventTrap";t.setAttribute("tabindex",-1);a.appendChild(t);x.longpress=new b("longpress",["touchstart","touchmove","touchend"],n);x.drag=new b("drag",["touchstart","touchmove","touchend"],p);x.dragstop=new b("dragstop",["drag","touchend"],f);y.subscribe("touchstart",q)})()};
-// Input 85
-/*
-
- Copyright (C) 2014 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- This file is part of WebODF.
-
- WebODF is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License (GNU AGPL)
- as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- WebODF is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with WebODF. If not, see <http://www.gnu.org/licenses/>.
- @licend
-
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.IOSSafariSupport=function(m){function g(){b.innerHeight!==b.outerHeight&&(k.style.display="none",runtime.requestAnimationFrame(function(){k.style.display="block"}))}var b=runtime.getWindow(),k=m.getEventTrap();this.destroy=function(b){m.unsubscribe("focus",g);k.removeAttribute("autocapitalize");k.style.WebkitTransform="";b()};m.subscribe("focus",g);k.setAttribute("autocapitalize","off");k.style.WebkitTransform="translateX(-10000px)"};
-// Input 86
-gui.ImageController=function(m,g,b){var k={"image/gif":".gif","image/jpeg":".jpg","image/png":".png"},d=odf.Namespaces.textns,n=m.getOdtDocument(),p=n.getFormatting(),f={};this.insertImage=function(q,e,r,a){var c;runtime.assert(0<r&&0<a,"Both width and height of the image should be greater than 0px.");c=n.getParagraphElement(n.getCursor(g).getNode()).getAttributeNS(d,"style-name");f.hasOwnProperty(c)||(f[c]=p.getContentSize(c,"paragraph"));c=f[c];r*=0.0264583333333334;a*=0.0264583333333334;var l=
-1,h=1;r>c.width&&(l=c.width/r);a>c.height&&(h=c.height/a);l=Math.min(l,h);c=r*l;r=a*l;h=n.getOdfCanvas().odfContainer().rootElement.styles;a=q.toLowerCase();var l=k.hasOwnProperty(a)?k[a]:null,v;a=[];runtime.assert(null!==l,"Image type is not supported: "+q);l="Pictures/"+b.generateImageName()+l;v=new ops.OpSetBlob;v.init({memberid:g,filename:l,mimetype:q,content:e});a.push(v);p.getStyleElement("Graphics","graphic",[h])||(q=new ops.OpAddStyle,q.init({memberid:g,styleName:"Graphics",styleFamily:"graphic",
-isAutomaticStyle:!1,setProperties:{"style:graphic-properties":{"text:anchor-type":"paragraph","svg:x":"0cm","svg:y":"0cm","style:wrap":"dynamic","style:number-wrapped-paragraphs":"no-limit","style:wrap-contour":"false","style:vertical-pos":"top","style:vertical-rel":"paragraph","style:horizontal-pos":"center","style:horizontal-rel":"paragraph"}}}),a.push(q));q=b.generateStyleName();e=new ops.OpAddStyle;e.init({memberid:g,styleName:q,styleFamily:"graphic",isAutomaticStyle:!0,setProperties:{"style:parent-style-name":"Graphics",
-"style:graphic-properties":{"style:vertical-pos":"top","style:vertical-rel":"baseline","style:horizontal-pos":"center","style:horizontal-rel":"paragraph","fo:background-color":"transparent","style:background-transparency":"100%","style:shadow":"none","style:mirror":"none","fo:clip":"rect(0cm, 0cm, 0cm, 0cm)","draw:luminance":"0%","draw:contrast":"0%","draw:red":"0%","draw:green":"0%","draw:blue":"0%","draw:gamma":"100%","draw:color-inversion":"false","draw:image-opacity":"100%","draw:color-mode":"standard"}}});
-a.push(e);v=new ops.OpInsertImage;v.init({memberid:g,position:n.getCursorPosition(g),filename:l,frameWidth:c+"cm",frameHeight:r+"cm",frameStyleName:q,frameName:b.generateFrameName()});a.push(v);m.enqueue(a)}};
-// Input 87
-gui.ImageSelector=function(m){function g(){var b=m.getSizer(),f=d.createElement("div");f.id="imageSelector";f.style.borderWidth="1px";b.appendChild(f);k.forEach(function(b){var e=d.createElement("div");e.className=b;f.appendChild(e)});return f}var b=odf.Namespaces.svgns,k="topLeft topRight bottomRight bottomLeft topMiddle rightMiddle bottomMiddle leftMiddle".split(" "),d=m.getElement().ownerDocument,n=!1;this.select=function(k){var f,q,e=d.getElementById("imageSelector");e||(e=g());n=!0;f=e.parentNode;
-q=k.getBoundingClientRect();var r=f.getBoundingClientRect(),a=m.getZoomLevel();f=(q.left-r.left)/a-1;q=(q.top-r.top)/a-1;e.style.display="block";e.style.left=f+"px";e.style.top=q+"px";e.style.width=k.getAttributeNS(b,"width");e.style.height=k.getAttributeNS(b,"height")};this.clearSelection=function(){var b;n&&(b=d.getElementById("imageSelector"))&&(b.style.display="none");n=!1};this.isSelectorElement=function(b){var f=d.getElementById("imageSelector");return f?b===f||b.parentNode===f:!1}};
-// Input 88
-(function(){function m(g){function b(b){p=b.which&&String.fromCharCode(b.which)===m;m=void 0;return!1===p}function k(){p=!1}function d(b){m=b.data;p=!1}var m,p=!1;this.destroy=function(f){g.unsubscribe("textInput",k);g.unsubscribe("compositionend",d);g.removeFilter("keypress",b);f()};g.subscribe("textInput",k);g.subscribe("compositionend",d);g.addFilter("keypress",b)}gui.InputMethodEditor=function(g,b){function k(a){l&&(a?l.getNode().setAttributeNS(c,"composing","true"):(l.getNode().removeAttributeNS(c,
-"composing"),w.textContent=""))}function d(){t&&(t=!1,k(!1),y.emit(gui.InputMethodEditor.signalCompositionEnd,{data:s}),s="")}function n(){d();l&&l.getSelectedRange().collapsed?h.value="":h.value=x;h.setSelectionRange(0,h.value.length)}function p(){F=void 0;u.cancel();k(!0);t||y.emit(gui.InputMethodEditor.signalCompositionStart,{data:""})}function f(a){a=F=a.data;t=!0;s+=a;u.trigger()}function q(a){a.data!==F&&(a=a.data,t=!0,s+=a,u.trigger());F=void 0}function e(){w.textContent=h.value}function r(){b.blur();
-h.setAttribute("disabled",!0)}function a(){var a=b.hasFocus();a&&b.blur();H?h.removeAttribute("disabled"):h.setAttribute("disabled",!0);a&&b.focus()}var c="urn:webodf:names:cursor",l=null,h=b.getEventTrap(),v=h.ownerDocument,w,z=new core.Async,x="b",u,t=!1,s="",y=new core.EventNotifier([gui.InputMethodEditor.signalCompositionStart,gui.InputMethodEditor.signalCompositionEnd]),F,L=[],O,H=!1;this.subscribe=y.subscribe;this.unsubscribe=y.unsubscribe;this.registerCursor=function(a){a.getMemberId()===g&&
-(l=a,l.getNode().appendChild(w),b.subscribe("input",e),b.subscribe("compositionupdate",e))};this.removeCursor=function(a){l&&a===g&&(l.getNode().removeChild(w),b.unsubscribe("input",e),b.unsubscribe("compositionupdate",e),l=null)};this.setEditing=function(b){H=b;a()};this.destroy=function(c){b.unsubscribe("compositionstart",p);b.unsubscribe("compositionend",f);b.unsubscribe("textInput",q);b.unsubscribe("keypress",d);b.unsubscribe("mousedown",r);b.unsubscribe("mouseup",a);b.unsubscribe("focus",n);
-z.destroyAll(O,c)};(function(){b.subscribe("compositionstart",p);b.subscribe("compositionend",f);b.subscribe("textInput",q);b.subscribe("keypress",d);b.subscribe("mousedown",r);b.subscribe("mouseup",a);b.subscribe("focus",n);L.push(new m(b));O=L.map(function(a){return a.destroy});w=v.createElement("span");w.setAttribute("id","composer");u=new core.ScheduledTask(n,1);O.push(u.destroy)})()};gui.InputMethodEditor.signalCompositionStart="input/compositionstart";gui.InputMethodEditor.signalCompositionEnd=
-"input/compositionend";return gui.InputMethodEditor})();
-// Input 89
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.KeyboardHandler=function(){function m(b,k){k||(k=g.None);return b+":"+k}var g=gui.KeyboardHandler.Modifier,b=null,k={};this.setDefault=function(d){b=d};this.bind=function(b,g,p,f){b=m(b,g);runtime.assert(f||!1===k.hasOwnProperty(b),"tried to overwrite the callback handler of key combo: "+b);k[b]=p};this.unbind=function(b,g){var p=m(b,g);delete k[p]};this.reset=function(){b=null;k={}};this.handleEvent=function(d){var n=d.keyCode,p=g.None;d.metaKey&&(p|=g.Meta);d.ctrlKey&&(p|=g.Ctrl);d.altKey&&
-(p|=g.Alt);d.shiftKey&&(p|=g.Shift);n=m(n,p);n=k[n];p=!1;n?p=n():null!==b&&(p=b(d));p&&(d.preventDefault?d.preventDefault():d.returnValue=!1)}};gui.KeyboardHandler.Modifier={None:0,Meta:1,Ctrl:2,Alt:4,CtrlAlt:6,Shift:8,MetaShift:9,CtrlShift:10,AltShift:12};
-gui.KeyboardHandler.KeyCode={Backspace:8,Tab:9,Clear:12,Enter:13,Ctrl:17,End:35,Home:36,Left:37,Up:38,Right:39,Down:40,Delete:46,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,LeftMeta:91,MetaInMozilla:224};(function(){return gui.KeyboardHandler})();
-// Input 90
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.PlainTextPasteboard=function(m,g){function b(b,d){b.init(d);return b}this.createPasteOps=function(k){var d=m.getCursorPosition(g),n=d,p=[];k.replace(/\r/g,"").split("\n").forEach(function(d){p.push(b(new ops.OpSplitParagraph,{memberid:g,position:n,moveCursor:!0}));n+=1;p.push(b(new ops.OpInsertText,{memberid:g,position:n,text:d,moveCursor:!0}));n+=d.length});p.push(b(new ops.OpRemoveText,{memberid:g,position:d,length:1}));return p}};
-// Input 91
-/*
-
- Copyright (C) 2014 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-odf.WordBoundaryFilter=function(m,g){function b(a,b,c){for(var d=null,e=m.getRootNode(),f;a!==e&&null!==a&&null===d;)f=0>b?a.previousSibling:a.nextSibling,c(f)===NodeFilter.FILTER_ACCEPT&&(d=f),a=a.parentNode;return d}function k(a,b){var c;return null===a?l.NO_NEIGHBOUR:p.isCharacterElement(a)?l.SPACE_CHAR:a.nodeType===d||p.isTextSpan(a)||p.isHyperlink(a)?(c=a.textContent.charAt(b()),q.test(c)?l.SPACE_CHAR:f.test(c)?l.PUNCTUATION_CHAR:l.WORD_CHAR):l.OTHER}var d=Node.TEXT_NODE,n=Node.ELEMENT_NODE,
-p=new odf.OdfUtils,f=/[!-#%-*,-\/:-;?-@\[-\]_{}\u00a1\u00ab\u00b7\u00bb\u00bf;\u00b7\u055a-\u055f\u0589-\u058a\u05be\u05c0\u05c3\u05c6\u05f3-\u05f4\u0609-\u060a\u060c-\u060d\u061b\u061e-\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0964-\u0965\u0970\u0df4\u0e4f\u0e5a-\u0e5b\u0f04-\u0f12\u0f3a-\u0f3d\u0f85\u0fd0-\u0fd4\u104a-\u104f\u10fb\u1361-\u1368\u166d-\u166e\u169b-\u169c\u16eb-\u16ed\u1735-\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u180a\u1944-\u1945\u19de-\u19df\u1a1e-\u1a1f\u1b5a-\u1b60\u1c3b-\u1c3f\u1c7e-\u1c7f\u2000-\u206e\u207d-\u207e\u208d-\u208e\u3008-\u3009\u2768-\u2775\u27c5-\u27c6\u27e6-\u27ef\u2983-\u2998\u29d8-\u29db\u29fc-\u29fd\u2cf9-\u2cfc\u2cfe-\u2cff\u2e00-\u2e7e\u3000-\u303f\u30a0\u30fb\ua60d-\ua60f\ua673\ua67e\ua874-\ua877\ua8ce-\ua8cf\ua92e-\ua92f\ua95f\uaa5c-\uaa5f\ufd3e-\ufd3f\ufe10-\ufe19\ufe30-\ufe52\ufe54-\ufe61\ufe63\ufe68\ufe6a-\ufe6b\uff01-\uff03\uff05-\uff0a\uff0c-\uff0f\uff1a-\uff1b\uff1f-\uff20\uff3b-\uff3d\uff3f\uff5b\uff5d\uff5f-\uff65]|\ud800[\udd00-\udd01\udf9f\udfd0]|\ud802[\udd1f\udd3f\ude50-\ude58]|\ud809[\udc00-\udc7e]/,
-q=/\s/,e=core.PositionFilter.FilterResult.FILTER_ACCEPT,r=core.PositionFilter.FilterResult.FILTER_REJECT,a=odf.WordBoundaryFilter.IncludeWhitespace.TRAILING,c=odf.WordBoundaryFilter.IncludeWhitespace.LEADING,l={NO_NEIGHBOUR:0,SPACE_CHAR:1,PUNCTUATION_CHAR:2,WORD_CHAR:3,OTHER:4};this.acceptPosition=function(d){var f=d.container(),m=d.leftNode(),p=d.rightNode(),q=d.unfilteredDomOffset,u=function(){return d.unfilteredDomOffset()-1};f.nodeType===n&&(null===p&&(p=b(f,1,d.getNodeFilter())),null===m&&(m=
-b(f,-1,d.getNodeFilter())));f!==p&&(q=function(){return 0});f!==m&&null!==m&&(u=function(){return m.textContent.length-1});f=k(m,u);p=k(p,q);return f===l.WORD_CHAR&&p===l.WORD_CHAR||f===l.PUNCTUATION_CHAR&&p===l.PUNCTUATION_CHAR||g===a&&f!==l.NO_NEIGHBOUR&&p===l.SPACE_CHAR||g===c&&f===l.SPACE_CHAR&&p!==l.NO_NEIGHBOUR?r:e}};odf.WordBoundaryFilter.IncludeWhitespace={None:0,TRAILING:1,LEADING:2};(function(){return odf.WordBoundaryFilter})();
-// Input 92
-gui.SelectionController=function(m,g){function b(){var a=x.getCursor(g).getNode();return x.createStepIterator(a,0,[s,F],x.getRootElement(a))}function k(a,b,c){c=new odf.WordBoundaryFilter(x,c);return x.createStepIterator(a,b,[s,F,c],x.getRootElement(a))}function d(a){return function(b){var c=a(b);return function(b,d){return a(d)===c}}}function n(a,b){return b?{anchorNode:a.startContainer,anchorOffset:a.startOffset,focusNode:a.endContainer,focusOffset:a.endOffset}:{anchorNode:a.endContainer,anchorOffset:a.endOffset,
-focusNode:a.startContainer,focusOffset:a.startOffset}}function p(a,b,c){var d=new ops.OpMoveCursor;d.init({memberid:g,position:a,length:b||0,selectionType:c});return d}function f(a){var b;b=k(a.startContainer,a.startOffset,L);b.roundToPreviousStep()&&a.setStart(b.container(),b.offset());b=k(a.endContainer,a.endOffset,O);b.roundToNextStep()&&a.setEnd(b.container(),b.offset())}function q(a){var b=t.getParagraphElements(a),c=b[0],b=b[b.length-1];c&&a.setStart(c,0);b&&(t.isParagraph(a.endContainer)&&
-0===a.endOffset?a.setEndBefore(b):a.setEnd(b,b.childNodes.length))}function e(a){var b=x.getCursorSelection(g),c=x.getCursor(g).getStepCounter();0!==a&&(a=0<a?c.convertForwardStepsBetweenFilters(a,y,s):-c.convertBackwardStepsBetweenFilters(-a,y,s),a=b.length+a,m.enqueue([p(b.position,a)]))}function r(a){var c=b(),d=x.getCursor(g).getAnchorNode();a(c)&&(a=x.convertDomToCursorRange({anchorNode:d,anchorOffset:0,focusNode:c.container(),focusOffset:c.offset()}),m.enqueue([p(a.position,a.length)]))}function a(a){var b=
-x.getCursorPosition(g),c=x.getCursor(g).getStepCounter();0!==a&&(a=0<a?c.convertForwardStepsBetweenFilters(a,y,s):-c.convertBackwardStepsBetweenFilters(-a,y,s),m.enqueue([p(b+a,0)]))}function c(a){var c=b();a(c)&&(a=x.convertDomPointToCursorStep(c.container(),c.offset()),m.enqueue([p(a,0)]))}function l(b,c){var d=x.getParagraphElement(x.getCursor(g).getNode());runtime.assert(Boolean(d),"SelectionController: Cursor outside paragraph");d=x.getCursor(g).getStepCounter().countLinesSteps(b,y);c?e(d):a(d)}
-function h(b,c){var d=x.getCursor(g).getStepCounter().countStepsToLineBoundary(b,y);c?e(d):a(d)}function v(a,b){var c=x.getCursor(g),c=n(c.getSelectedRange(),c.hasForwardSelection()),d=k(c.focusNode,c.focusOffset,L);if(0<=a?d.nextStep():d.previousStep())c.focusNode=d.container(),c.focusOffset=d.offset(),b||(c.anchorNode=c.focusNode,c.anchorOffset=c.focusOffset),c=x.convertDomToCursorRange(c),m.enqueue([p(c.position,c.length)])}function w(a,b){var c=x.getCursor(g),e=b(c.getNode()),c=n(c.getSelectedRange(),
-c.hasForwardSelection());runtime.assert(Boolean(e),"SelectionController: Cursor outside root");0>a?(c.focusNode=e,c.focusOffset=0):(c.focusNode=e,c.focusOffset=e.childNodes.length);e=x.convertDomToCursorRange(c,d(b));m.enqueue([p(e.position,e.length)])}function z(a){var b=x.getCursor(g),b=x.getRootElement(b.getNode());runtime.assert(Boolean(b),"SelectionController: Cursor outside root");a=0>a?x.convertDomPointToCursorStep(b,0,function(a){return a===ops.StepsTranslator.NEXT_STEP}):x.convertDomPointToCursorStep(b,
-b.childNodes.length);m.enqueue([p(a,0)]);return!0}var x=m.getOdtDocument(),u=new core.DomUtils,t=new odf.OdfUtils,s=x.getPositionFilter(),y=new core.PositionFilterChain,F=x.createRootFilter(g),L=odf.WordBoundaryFilter.IncludeWhitespace.TRAILING,O=odf.WordBoundaryFilter.IncludeWhitespace.LEADING;this.selectionToRange=function(a){var b=0<=u.comparePoints(a.anchorNode,a.anchorOffset,a.focusNode,a.focusOffset),c=a.focusNode.ownerDocument.createRange();b?(c.setStart(a.anchorNode,a.anchorOffset),c.setEnd(a.focusNode,
-a.focusOffset)):(c.setStart(a.focusNode,a.focusOffset),c.setEnd(a.anchorNode,a.anchorOffset));return{range:c,hasForwardSelection:b}};this.rangeToSelection=n;this.selectImage=function(a){var b=x.getRootElement(a),c=x.createRootFilter(b),b=x.createStepIterator(a,0,[c,x.getPositionFilter()],b),d;b.roundToPreviousStep()||runtime.assert(!1,"No walkable position before frame");c=b.container();d=b.offset();b.setPosition(a,a.childNodes.length);b.roundToNextStep()||runtime.assert(!1,"No walkable position after frame");
-a=x.convertDomToCursorRange({anchorNode:c,anchorOffset:d,focusNode:b.container(),focusOffset:b.offset()});a=p(a.position,a.length,ops.OdtCursor.RegionSelection);m.enqueue([a])};this.expandToWordBoundaries=f;this.expandToParagraphBoundaries=q;this.selectRange=function(a,b,c){var e=x.getOdfCanvas().getElement(),h;h=u.containsNode(e,a.startContainer);e=u.containsNode(e,a.endContainer);if(h||e)if(h&&e&&(2===c?f(a):3<=c&&q(a)),a=n(a,b),b=x.convertDomToCursorRange(a,d(t.getParagraphElement)),a=x.getCursorSelection(g),
-b.position!==a.position||b.length!==a.length)a=p(b.position,b.length,ops.OdtCursor.RangeSelection),m.enqueue([a])};this.moveCursorToLeft=function(){c(function(a){return a.previousStep()});return!0};this.moveCursorToRight=function(){c(function(a){return a.nextStep()});return!0};this.extendSelectionToLeft=function(){r(function(a){return a.previousStep()});return!0};this.extendSelectionToRight=function(){r(function(a){return a.nextStep()});return!0};this.moveCursorUp=function(){l(-1,!1);return!0};this.moveCursorDown=
-function(){l(1,!1);return!0};this.extendSelectionUp=function(){l(-1,!0);return!0};this.extendSelectionDown=function(){l(1,!0);return!0};this.moveCursorBeforeWord=function(){v(-1,!1);return!0};this.moveCursorPastWord=function(){v(1,!1);return!0};this.extendSelectionBeforeWord=function(){v(-1,!0);return!0};this.extendSelectionPastWord=function(){v(1,!0);return!0};this.moveCursorToLineStart=function(){h(-1,!1);return!0};this.moveCursorToLineEnd=function(){h(1,!1);return!0};this.extendSelectionToLineStart=
-function(){h(-1,!0);return!0};this.extendSelectionToLineEnd=function(){h(1,!0);return!0};this.extendSelectionToParagraphStart=function(){w(-1,x.getParagraphElement);return!0};this.extendSelectionToParagraphEnd=function(){w(1,x.getParagraphElement);return!0};this.moveCursorToDocumentStart=function(){z(-1);return!0};this.moveCursorToDocumentEnd=function(){z(1);return!0};this.extendSelectionToDocumentStart=function(){w(-1,x.getRootElement);return!0};this.extendSelectionToDocumentEnd=function(){w(1,x.getRootElement);
-return!0};this.extendSelectionToEntireDocument=function(){var a=x.getCursor(g),a=x.getRootElement(a.getNode());runtime.assert(Boolean(a),"SelectionController: Cursor outside root");a=x.convertDomToCursorRange({anchorNode:a,anchorOffset:0,focusNode:a,focusOffset:a.childNodes.length},d(x.getRootElement));m.enqueue([p(a.position,a.length)]);return!0};y.addFilter(s);y.addFilter(x.createRootFilter(g))};
-// Input 93
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.TextController=function(m,g,b,k){function d(b){var d=new ops.OpRemoveText;d.init({memberid:g,position:b.position,length:b.length});return d}function n(b){0>b.length&&(b.position+=b.length,b.length=-b.length);return b}function p(b,d){var a=new core.PositionFilterChain,c=gui.SelectionMover.createPositionIterator(f.getRootElement(b)),l=d?c.nextPosition:c.previousPosition;a.addFilter(f.getPositionFilter());a.addFilter(f.createRootFilter(g));for(c.setUnfilteredPosition(b,0);l();)if(a.acceptPosition(c)===
-q)return!0;return!1}var f=m.getOdtDocument(),q=core.PositionFilter.FilterResult.FILTER_ACCEPT;this.enqueueParagraphSplittingOps=function(){var b=n(f.getCursorSelection(g)),p,a=[];0<b.length&&(p=d(b),a.push(p));p=new ops.OpSplitParagraph;p.init({memberid:g,position:b.position,moveCursor:!0});a.push(p);k&&(b=k(b.position+1),a=a.concat(b));m.enqueue(a);return!0};this.removeTextByBackspaceKey=function(){var b=f.getCursor(g),k=n(f.getCursorSelection(g)),a=null;0===k.length?p(b.getNode(),!1)&&(a=new ops.OpRemoveText,
-a.init({memberid:g,position:k.position-1,length:1}),m.enqueue([a])):(a=d(k),m.enqueue([a]));return null!==a};this.removeTextByDeleteKey=function(){var b=f.getCursor(g),k=n(f.getCursorSelection(g)),a=null;0===k.length?p(b.getNode(),!0)&&(a=new ops.OpRemoveText,a.init({memberid:g,position:k.position,length:1}),m.enqueue([a])):(a=d(k),m.enqueue([a]));return null!==a};this.removeCurrentSelection=function(){var b=n(f.getCursorSelection(g));0!==b.length&&(b=d(b),m.enqueue([b]));return!0};this.insertText=
-function(e){var k=n(f.getCursorSelection(g)),a,c=[],l=!1;0<k.length&&(a=d(k),c.push(a),l=!0);a=new ops.OpInsertText;a.init({memberid:g,position:k.position,text:e,moveCursor:!0});c.push(a);b&&(e=b(k.position,e.length,l))&&c.push(e);m.enqueue(c)}};(function(){return gui.TextController})();
-// Input 94
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.UndoManager=function(){};gui.UndoManager.prototype.subscribe=function(m,g){};gui.UndoManager.prototype.unsubscribe=function(m,g){};gui.UndoManager.prototype.setDocument=function(m){};gui.UndoManager.prototype.setInitialState=function(){};gui.UndoManager.prototype.initialize=function(){};gui.UndoManager.prototype.purgeInitialState=function(){};gui.UndoManager.prototype.setPlaybackFunction=function(m){};gui.UndoManager.prototype.hasUndoStates=function(){};
-gui.UndoManager.prototype.hasRedoStates=function(){};gui.UndoManager.prototype.moveForward=function(m){};gui.UndoManager.prototype.moveBackward=function(m){};gui.UndoManager.prototype.onOperationExecuted=function(m){};gui.UndoManager.signalUndoStackChanged="undoStackChanged";gui.UndoManager.signalUndoStateCreated="undoStateCreated";gui.UndoManager.signalUndoStateModified="undoStateModified";(function(){return gui.UndoManager})();
-// Input 95
-(function(){var m=core.PositionFilter.FilterResult.FILTER_ACCEPT;gui.SessionController=function(g,b,k,d){function n(a){return a.target||a.srcElement||null}function p(a,b){var c=J.getDOMDocument(),d=null;c.caretRangeFromPoint?(c=c.caretRangeFromPoint(a,b),d={container:c.startContainer,offset:c.startOffset}):c.caretPositionFromPoint&&(c=c.caretPositionFromPoint(a,b))&&c.offsetNode&&(d={container:c.offsetNode,offset:c.offset});return d}function f(a){var c=J.getCursor(b).getSelectedRange();c.collapsed?
-a.preventDefault():I.setDataFromRange(a,c)?aa.removeCurrentSelection():runtime.log("Cut operation failed")}function q(){return!1!==J.getCursor(b).getSelectedRange().collapsed}function e(a){var c=J.getCursor(b).getSelectedRange();c.collapsed?a.preventDefault():I.setDataFromRange(a,c)||runtime.log("Copy operation failed")}function r(a){var b;G.clipboardData&&G.clipboardData.getData?b=G.clipboardData.getData("Text"):a.clipboardData&&a.clipboardData.getData&&(b=a.clipboardData.getData("text/plain"));
-b&&(aa.removeCurrentSelection(),g.enqueue(na.createPasteOps(b)));a.preventDefault?a.preventDefault():a.returnValue=!1}function a(){return!1}function c(a){if(ca)ca.onOperationExecuted(a)}function l(a){J.emit(ops.OdtDocument.signalUndoStackChanged,a)}function h(){var a=A.getEventTrap(),b,c;return ca?(c=A.hasFocus(),ca.moveBackward(1),b=J.getOdfCanvas().getSizer(),ea.containsNode(b,a)||(b.appendChild(a),c&&A.focus()),!0):!1}function v(){var a;return ca?(a=A.hasFocus(),ca.moveForward(1),a&&A.focus(),
-!0):!1}function w(a){var c=J.getCursor(b).getSelectedRange(),d=n(a).getAttribute("end");c&&d&&(a=p(a.clientX,a.clientY))&&(da.setUnfilteredPosition(a.container,a.offset),fa.acceptPosition(da)===m&&(c=c.cloneRange(),"left"===d?c.setStart(da.container(),da.unfilteredDomOffset()):c.setEnd(da.container(),da.unfilteredDomOffset()),k.setSelectedRange(c,"right"===d),J.emit(ops.Document.signalCursorMoved,k)))}function z(){K.selectRange(k.getSelectedRange(),k.hasForwardSelection(),1)}function x(){var a=G.getSelection(),
-b=0<a.rangeCount&&K.selectionToRange(a);$&&b&&(S=!0,ga.clearSelection(),da.setUnfilteredPosition(a.focusNode,a.focusOffset),fa.acceptPosition(da)===m&&(2===ka?K.expandToWordBoundaries(b.range):3<=ka&&K.expandToParagraphBoundaries(b.range),k.setSelectedRange(b.range,b.hasForwardSelection),J.emit(ops.Document.signalCursorMoved,k)))}function u(a){var c=n(a),d=J.getCursor(b);if($=null!==c&&ea.containsNode(J.getOdfCanvas().getElement(),c))S=!1,fa=J.createRootFilter(c),ka=a.detail,d&&a.shiftKey?G.getSelection().collapse(d.getAnchorNode(),
-0):(a=G.getSelection(),c=d.getSelectedRange(),a.extend?d.hasForwardSelection()?(a.collapse(c.startContainer,c.startOffset),a.extend(c.endContainer,c.endOffset)):(a.collapse(c.endContainer,c.endOffset),a.extend(c.startContainer,c.startOffset)):(a.removeAllRanges(),a.addRange(c.cloneRange()))),1<ka&&x()}function t(a){var b=J.getRootElement(a),c=J.createRootFilter(b),b=J.createStepIterator(a,0,[c,J.getPositionFilter()],b);b.setPosition(a,a.childNodes.length);return b.roundToNextStep()?{container:b.container(),
-offset:b.offset()}:null}function s(a){var b;b=(b=G.getSelection())?{anchorNode:b.anchorNode,anchorOffset:b.anchorOffset,focusNode:b.focusNode,focusOffset:b.focusOffset}:null;var c,d;b.anchorNode||b.focusNode||!(c=p(a.clientX,a.clientY))||(b.anchorNode=c.container,b.anchorOffset=c.offset,b.focusNode=b.anchorNode,b.focusOffset=b.anchorOffset);if(P.isImage(b.focusNode)&&0===b.focusOffset&&P.isCharacterFrame(b.focusNode.parentNode)){if(d=b.focusNode.parentNode,c=d.getBoundingClientRect(),a.clientX>c.right&&
-(c=t(d)))b.anchorNode=b.focusNode=c.container,b.anchorOffset=b.focusOffset=c.offset}else P.isImage(b.focusNode.firstChild)&&1===b.focusOffset&&P.isCharacterFrame(b.focusNode)&&(c=t(b.focusNode))&&(b.anchorNode=b.focusNode=c.container,b.anchorOffset=b.focusOffset=c.offset);b.anchorNode&&b.focusNode&&(b=K.selectionToRange(b),K.selectRange(b.range,b.hasForwardSelection,a.detail));A.focus()}function y(a){var b;if(b=p(a.clientX,a.clientY))a=b.container,b=b.offset,a={anchorNode:a,anchorOffset:b,focusNode:a,
-focusOffset:b},a=K.selectionToRange(a),K.selectRange(a.range,a.hasForwardSelection,2),A.focus()}function F(a){var b=n(a),c,d;la.processRequests();P.isImage(b)&&P.isCharacterFrame(b.parentNode)&&G.getSelection().isCollapsed?(K.selectImage(b.parentNode),A.focus()):ga.isSelectorElement(b)?A.focus():$&&(S?(b=k.getSelectedRange(),c=b.collapsed,P.isImage(b.endContainer)&&0===b.endOffset&&P.isCharacterFrame(b.endContainer.parentNode)&&(d=b.endContainer.parentNode,d=t(d))&&(b.setEnd(d.container,d.offset),
-c&&b.collapse(!1)),K.selectRange(b,k.hasForwardSelection(),a.detail),A.focus()):qa?s(a):ma=runtime.setTimeout(function(){s(a)},0));ka=0;S=$=!1}function L(a){var c=J.getCursor(b).getSelectedRange();c.collapsed||N.exportRangeToDataTransfer(a.dataTransfer,c)}function O(){$&&A.focus();ka=0;S=$=!1}function H(a){F(a)}function U(a){var b=n(a),c=null;"annotationRemoveButton"===b.className?(c=ea.getElementsByTagNameNS(b.parentNode,odf.Namespaces.officens,"annotation")[0],Y.removeAnnotation(c),A.focus()):"draggable"!==
-b.getAttribute("class")&&F(a)}function T(a){(a=a.data)&&aa.insertText(a)}function X(a){return function(){a();return!0}}function D(a){return function(c){return J.getCursor(b).getSelectionType()===ops.OdtCursor.RangeSelection?a(c):!0}}function ba(a){A.unsubscribe("keydown",B.handleEvent);A.unsubscribe("keypress",V.handleEvent);A.unsubscribe("keyup",M.handleEvent);A.unsubscribe("copy",e);A.unsubscribe("mousedown",u);A.unsubscribe("mousemove",la.trigger);A.unsubscribe("mouseup",U);A.unsubscribe("contextmenu",
-H);A.unsubscribe("dragstart",L);A.unsubscribe("dragend",O);A.unsubscribe("click",Z.handleClick);A.unsubscribe("longpress",y);A.unsubscribe("drag",w);A.unsubscribe("dragstop",z);J.unsubscribe(ops.OdtDocument.signalOperationEnd,ja.trigger);J.unsubscribe(ops.Document.signalCursorAdded,ha.registerCursor);J.unsubscribe(ops.Document.signalCursorRemoved,ha.removeCursor);J.unsubscribe(ops.OdtDocument.signalOperationEnd,c);a()}var G=runtime.getWindow(),J=g.getOdtDocument(),Q=new core.Async,ea=new core.DomUtils,
-P=new odf.OdfUtils,N=new gui.MimeDataExporter,I=new gui.Clipboard(N),B=new gui.KeyboardHandler,V=new gui.KeyboardHandler,M=new gui.KeyboardHandler,$=!1,W=new odf.ObjectNameGenerator(J.getOdfCanvas().odfContainer(),b),S=!1,fa=null,ma,ca=null,A=new gui.EventManager(J),Y=new gui.AnnotationController(g,b),R=new gui.DirectFormattingController(g,b,W,d.directParagraphStylingEnabled),aa=new gui.TextController(g,b,R.createCursorStyleOp,R.createParagraphStyleOps),ia=new gui.ImageController(g,b,W),ga=new gui.ImageSelector(J.getOdfCanvas()),
-da=gui.SelectionMover.createPositionIterator(J.getRootNode()),la,ja,na=new gui.PlainTextPasteboard(J,b),ha=new gui.InputMethodEditor(b,A),ka=0,Z=new gui.HyperlinkClickHandler(J.getRootNode),ra=new gui.HyperlinkController(g,b),K=new gui.SelectionController(g,b),E=gui.KeyboardHandler.Modifier,C=gui.KeyboardHandler.KeyCode,oa=-1!==G.navigator.appVersion.toLowerCase().indexOf("mac"),qa=-1!==["iPad","iPod","iPhone"].indexOf(G.navigator.platform),pa;runtime.assert(null!==G,"Expected to be run in an environment which has a global window, like a browser.");
-this.undo=h;this.redo=v;this.insertLocalCursor=function(){runtime.assert(void 0===g.getOdtDocument().getCursor(b),"Inserting local cursor a second time.");var a=new ops.OpAddCursor;a.init({memberid:b});g.enqueue([a]);A.focus()};this.removeLocalCursor=function(){runtime.assert(void 0!==g.getOdtDocument().getCursor(b),"Removing local cursor without inserting before.");var a=new ops.OpRemoveCursor;a.init({memberid:b});g.enqueue([a])};this.startEditing=function(){ha.subscribe(gui.InputMethodEditor.signalCompositionStart,
-aa.removeCurrentSelection);ha.subscribe(gui.InputMethodEditor.signalCompositionEnd,T);A.subscribe("beforecut",q);A.subscribe("cut",f);A.subscribe("beforepaste",a);A.subscribe("paste",r);G.addEventListener("focus",Z.showTextCursor,!1);ca&&ca.initialize();ha.setEditing(!0);Z.setModifier(oa?gui.HyperlinkClickHandler.Modifier.Meta:gui.HyperlinkClickHandler.Modifier.Ctrl);B.bind(C.Backspace,E.None,X(aa.removeTextByBackspaceKey),!0);B.bind(C.Delete,E.None,aa.removeTextByDeleteKey);B.bind(C.Tab,E.None,D(function(){aa.insertText("\t");
-return!0}));oa?(B.bind(C.Clear,E.None,aa.removeCurrentSelection),B.bind(C.B,E.Meta,D(R.toggleBold)),B.bind(C.I,E.Meta,D(R.toggleItalic)),B.bind(C.U,E.Meta,D(R.toggleUnderline)),B.bind(C.L,E.MetaShift,D(R.alignParagraphLeft)),B.bind(C.E,E.MetaShift,D(R.alignParagraphCenter)),B.bind(C.R,E.MetaShift,D(R.alignParagraphRight)),B.bind(C.J,E.MetaShift,D(R.alignParagraphJustified)),B.bind(C.C,E.MetaShift,Y.addAnnotation),B.bind(C.Z,E.Meta,h),B.bind(C.Z,E.MetaShift,v),B.bind(C.LeftMeta,E.Meta,Z.showPointerCursor),
-B.bind(C.MetaInMozilla,E.Meta,Z.showPointerCursor),M.bind(C.LeftMeta,E.None,Z.showTextCursor),M.bind(C.MetaInMozilla,E.None,Z.showTextCursor)):(B.bind(C.B,E.Ctrl,D(R.toggleBold)),B.bind(C.I,E.Ctrl,D(R.toggleItalic)),B.bind(C.U,E.Ctrl,D(R.toggleUnderline)),B.bind(C.L,E.CtrlShift,D(R.alignParagraphLeft)),B.bind(C.E,E.CtrlShift,D(R.alignParagraphCenter)),B.bind(C.R,E.CtrlShift,D(R.alignParagraphRight)),B.bind(C.J,E.CtrlShift,D(R.alignParagraphJustified)),B.bind(C.C,E.CtrlAlt,Y.addAnnotation),B.bind(C.Z,
-E.Ctrl,h),B.bind(C.Z,E.CtrlShift,v),B.bind(C.Ctrl,E.Ctrl,Z.showPointerCursor),M.bind(C.Ctrl,E.None,Z.showTextCursor));V.setDefault(D(function(a){var b;b=null===a.which||void 0===a.which?String.fromCharCode(a.keyCode):0!==a.which&&0!==a.charCode?String.fromCharCode(a.which):null;return!b||a.altKey||a.ctrlKey||a.metaKey?!1:(aa.insertText(b),!0)}));V.bind(C.Enter,E.None,D(aa.enqueueParagraphSplittingOps))};this.endEditing=function(){ha.unsubscribe(gui.InputMethodEditor.signalCompositionStart,aa.removeCurrentSelection);
-ha.unsubscribe(gui.InputMethodEditor.signalCompositionEnd,T);A.unsubscribe("cut",f);A.unsubscribe("beforecut",q);A.unsubscribe("paste",r);A.unsubscribe("beforepaste",a);G.removeEventListener("focus",Z.showTextCursor,!1);ha.setEditing(!1);Z.setModifier(gui.HyperlinkClickHandler.Modifier.None);B.bind(C.Backspace,E.None,function(){return!0},!0);B.unbind(C.Delete,E.None);B.unbind(C.Tab,E.None);oa?(B.unbind(C.Clear,E.None),B.unbind(C.B,E.Meta),B.unbind(C.I,E.Meta),B.unbind(C.U,E.Meta),B.unbind(C.L,E.MetaShift),
-B.unbind(C.E,E.MetaShift),B.unbind(C.R,E.MetaShift),B.unbind(C.J,E.MetaShift),B.unbind(C.C,E.MetaShift),B.unbind(C.Z,E.Meta),B.unbind(C.Z,E.MetaShift),B.unbind(C.LeftMeta,E.Meta),B.unbind(C.MetaInMozilla,E.Meta),M.unbind(C.LeftMeta,E.None),M.unbind(C.MetaInMozilla,E.None)):(B.unbind(C.B,E.Ctrl),B.unbind(C.I,E.Ctrl),B.unbind(C.U,E.Ctrl),B.unbind(C.L,E.CtrlShift),B.unbind(C.E,E.CtrlShift),B.unbind(C.R,E.CtrlShift),B.unbind(C.J,E.CtrlShift),B.unbind(C.C,E.CtrlAlt),B.unbind(C.Z,E.Ctrl),B.unbind(C.Z,E.CtrlShift),
-B.unbind(C.Ctrl,E.Ctrl),M.unbind(C.Ctrl,E.None));V.setDefault(null);V.unbind(C.Enter,E.None)};this.getInputMemberId=function(){return b};this.getSession=function(){return g};this.setUndoManager=function(a){ca&&ca.unsubscribe(gui.UndoManager.signalUndoStackChanged,l);if(ca=a)ca.setDocument(J),ca.setPlaybackFunction(g.enqueue),ca.subscribe(gui.UndoManager.signalUndoStackChanged,l)};this.getUndoManager=function(){return ca};this.getAnnotationController=function(){return Y};this.getDirectFormattingController=
-function(){return R};this.getHyperlinkController=function(){return ra};this.getImageController=function(){return ia};this.getSelectionController=function(){return K};this.getTextController=function(){return aa};this.getEventManager=function(){return A};this.getKeyboardHandlers=function(){return{keydown:B,keypress:V}};this.destroy=function(a){var b=[];pa&&b.push(pa.destroy);b=b.concat([la.destroy,ja.destroy,R.destroy,ha.destroy,A.destroy,ba]);runtime.clearTimeout(ma);Q.destroyAll(b,a)};la=new core.ScheduledTask(x,
-0);ja=new core.ScheduledTask(function(){var a=J.getCursor(b);if(a&&a.getSelectionType()===ops.OdtCursor.RegionSelection&&(a=P.getImageElements(a.getSelectedRange())[0])){ga.select(a.parentNode);return}ga.clearSelection()},0);B.bind(C.Left,E.None,D(K.moveCursorToLeft));B.bind(C.Right,E.None,D(K.moveCursorToRight));B.bind(C.Up,E.None,D(K.moveCursorUp));B.bind(C.Down,E.None,D(K.moveCursorDown));B.bind(C.Left,E.Shift,D(K.extendSelectionToLeft));B.bind(C.Right,E.Shift,D(K.extendSelectionToRight));B.bind(C.Up,
-E.Shift,D(K.extendSelectionUp));B.bind(C.Down,E.Shift,D(K.extendSelectionDown));B.bind(C.Home,E.None,D(K.moveCursorToLineStart));B.bind(C.End,E.None,D(K.moveCursorToLineEnd));B.bind(C.Home,E.Ctrl,D(K.moveCursorToDocumentStart));B.bind(C.End,E.Ctrl,D(K.moveCursorToDocumentEnd));B.bind(C.Home,E.Shift,D(K.extendSelectionToLineStart));B.bind(C.End,E.Shift,D(K.extendSelectionToLineEnd));B.bind(C.Up,E.CtrlShift,D(K.extendSelectionToParagraphStart));B.bind(C.Down,E.CtrlShift,D(K.extendSelectionToParagraphEnd));
-B.bind(C.Home,E.CtrlShift,D(K.extendSelectionToDocumentStart));B.bind(C.End,E.CtrlShift,D(K.extendSelectionToDocumentEnd));oa?(B.bind(C.Left,E.Alt,D(K.moveCursorBeforeWord)),B.bind(C.Right,E.Alt,D(K.moveCursorPastWord)),B.bind(C.Left,E.Meta,D(K.moveCursorToLineStart)),B.bind(C.Right,E.Meta,D(K.moveCursorToLineEnd)),B.bind(C.Home,E.Meta,D(K.moveCursorToDocumentStart)),B.bind(C.End,E.Meta,D(K.moveCursorToDocumentEnd)),B.bind(C.Left,E.AltShift,D(K.extendSelectionBeforeWord)),B.bind(C.Right,E.AltShift,
-D(K.extendSelectionPastWord)),B.bind(C.Left,E.MetaShift,D(K.extendSelectionToLineStart)),B.bind(C.Right,E.MetaShift,D(K.extendSelectionToLineEnd)),B.bind(C.Up,E.AltShift,D(K.extendSelectionToParagraphStart)),B.bind(C.Down,E.AltShift,D(K.extendSelectionToParagraphEnd)),B.bind(C.Up,E.MetaShift,D(K.extendSelectionToDocumentStart)),B.bind(C.Down,E.MetaShift,D(K.extendSelectionToDocumentEnd)),B.bind(C.A,E.Meta,D(K.extendSelectionToEntireDocument))):(B.bind(C.Left,E.Ctrl,D(K.moveCursorBeforeWord)),B.bind(C.Right,
-E.Ctrl,D(K.moveCursorPastWord)),B.bind(C.Left,E.CtrlShift,D(K.extendSelectionBeforeWord)),B.bind(C.Right,E.CtrlShift,D(K.extendSelectionPastWord)),B.bind(C.A,E.Ctrl,D(K.extendSelectionToEntireDocument)));qa&&(pa=new gui.IOSSafariSupport(A));A.subscribe("keydown",B.handleEvent);A.subscribe("keypress",V.handleEvent);A.subscribe("keyup",M.handleEvent);A.subscribe("copy",e);A.subscribe("mousedown",u);A.subscribe("mousemove",la.trigger);A.subscribe("mouseup",U);A.subscribe("contextmenu",H);A.subscribe("dragstart",
-L);A.subscribe("dragend",O);A.subscribe("click",Z.handleClick);A.subscribe("longpress",y);A.subscribe("drag",w);A.subscribe("dragstop",z);J.subscribe(ops.OdtDocument.signalOperationEnd,ja.trigger);J.subscribe(ops.Document.signalCursorAdded,ha.registerCursor);J.subscribe(ops.Document.signalCursorRemoved,ha.removeCursor);J.subscribe(ops.OdtDocument.signalOperationEnd,c)};return gui.SessionController})();
-// Input 96
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.CaretManager=function(m){function g(a){return c.hasOwnProperty(a)?c[a]:null}function b(){return Object.keys(c).map(function(a){return c[a]})}function k(a){var b=c[a];b&&(b.destroy(function(){}),delete c[a])}function d(a){a=a.getMemberId();a===m.getInputMemberId()&&(a=g(a))&&a.refreshCursorBlinking()}function n(){var a=g(m.getInputMemberId());w=!1;a&&a.ensureVisible()}function p(){var a=g(m.getInputMemberId());a&&(a.handleUpdate(),w||(w=!0,v=runtime.setTimeout(n,50)))}function f(a){a.memberId===
-m.getInputMemberId()&&p()}function q(){var a=g(m.getInputMemberId());a&&a.setFocus()}function e(){var a=g(m.getInputMemberId());a&&a.removeFocus()}function r(){var a=g(m.getInputMemberId());a&&a.show()}function a(){var a=g(m.getInputMemberId());a&&a.hide()}var c={},l=new core.Async,h=runtime.getWindow(),v,w=!1;this.registerCursor=function(a,b,d){var e=a.getMemberId();b=new gui.Caret(a,b,d);d=m.getEventManager();c[e]=b;e===m.getInputMemberId()?(runtime.log("Starting to track input on new cursor of "+
-e),a.subscribe(ops.OdtCursor.signalCursorUpdated,p),b.setOverlayElement(d.getEventTrap())):a.subscribe(ops.OdtCursor.signalCursorUpdated,b.handleUpdate);return b};this.getCaret=g;this.getCarets=b;this.destroy=function(g){var n=m.getSession().getOdtDocument(),p=m.getEventManager(),t=b().map(function(a){return a.destroy});runtime.clearTimeout(v);n.unsubscribe(ops.OdtDocument.signalParagraphChanged,f);n.unsubscribe(ops.Document.signalCursorMoved,d);n.unsubscribe(ops.Document.signalCursorRemoved,k);p.unsubscribe("focus",
-q);p.unsubscribe("blur",e);h.removeEventListener("focus",r,!1);h.removeEventListener("blur",a,!1);c={};l.destroyAll(t,g)};(function(){var b=m.getSession().getOdtDocument(),c=m.getEventManager();b.subscribe(ops.OdtDocument.signalParagraphChanged,f);b.subscribe(ops.Document.signalCursorMoved,d);b.subscribe(ops.Document.signalCursorRemoved,k);c.subscribe("focus",q);c.subscribe("blur",e);h.addEventListener("focus",r,!1);h.addEventListener("blur",a,!1)})()};
-// Input 97
-gui.EditInfoHandle=function(m){var g=[],b,k=m.ownerDocument,d=k.documentElement.namespaceURI;this.setEdits=function(m){g=m;var p,f,q,e;b.innerHTML="";for(m=0;m<g.length;m+=1)p=k.createElementNS(d,"div"),p.className="editInfo",f=k.createElementNS(d,"span"),f.className="editInfoColor",f.setAttributeNS("urn:webodf:names:editinfo","editinfo:memberid",g[m].memberid),q=k.createElementNS(d,"span"),q.className="editInfoAuthor",q.setAttributeNS("urn:webodf:names:editinfo","editinfo:memberid",g[m].memberid),
-e=k.createElementNS(d,"span"),e.className="editInfoTime",e.setAttributeNS("urn:webodf:names:editinfo","editinfo:memberid",g[m].memberid),e.innerHTML=g[m].time,p.appendChild(f),p.appendChild(q),p.appendChild(e),b.appendChild(p)};this.show=function(){b.style.display="block"};this.hide=function(){b.style.display="none"};this.destroy=function(d){m.removeChild(b);d()};b=k.createElementNS(d,"div");b.setAttribute("class","editInfoHandle");b.style.display="none";m.appendChild(b)};
-// Input 98
-/*
-
- Copyright (C) 2012 KO GmbH <aditya.bhatt@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.EditInfo=function(m,g){function b(){var b=[],g;for(g in d)d.hasOwnProperty(g)&&b.push({memberid:g,time:d[g].time});b.sort(function(b,d){return b.time-d.time});return b}var k,d={};this.getNode=function(){return k};this.getOdtDocument=function(){return g};this.getEdits=function(){return d};this.getSortedEdits=function(){return b()};this.addEdit=function(b,g){d[b]={time:g}};this.clearEdits=function(){d={}};this.destroy=function(b){m.parentNode&&m.removeChild(k);b()};k=g.getDOMDocument().createElementNS("urn:webodf:names:editinfo",
-"editinfo");m.insertBefore(k,m.firstChild)};
-// Input 99
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.EditInfoMarker=function(m,g){function b(b,a){return runtime.setTimeout(function(){p.style.opacity=b},a)}var k=this,d,n,p,f,q,e;this.addEdit=function(d,a){var c=Date.now()-a;m.addEdit(d,a);n.setEdits(m.getSortedEdits());p.setAttributeNS("urn:webodf:names:editinfo","editinfo:memberid",d);runtime.clearTimeout(q);runtime.clearTimeout(e);1E4>c?(f=b(1,0),q=b(0.5,1E4-c),e=b(0.2,2E4-c)):1E4<=c&&2E4>c?(f=b(0.5,0),e=b(0.2,2E4-c)):f=b(0.2,0)};this.getEdits=function(){return m.getEdits()};this.clearEdits=
-function(){m.clearEdits();n.setEdits([]);p.hasAttributeNS("urn:webodf:names:editinfo","editinfo:memberid")&&p.removeAttributeNS("urn:webodf:names:editinfo","editinfo:memberid")};this.getEditInfo=function(){return m};this.show=function(){p.style.display="block"};this.hide=function(){k.hideHandle();p.style.display="none"};this.showHandle=function(){n.show()};this.hideHandle=function(){n.hide()};this.destroy=function(b){runtime.clearTimeout(f);runtime.clearTimeout(q);runtime.clearTimeout(e);d.removeChild(p);
-n.destroy(function(a){a?b(a):m.destroy(b)})};(function(){var b=m.getOdtDocument().getDOMDocument();p=b.createElementNS(b.documentElement.namespaceURI,"div");p.setAttribute("class","editInfoMarker");p.onmouseover=function(){k.showHandle()};p.onmouseout=function(){k.hideHandle()};d=m.getNode();d.appendChild(p);n=new gui.EditInfoHandle(d);g||k.hide()})()};
-// Input 100
-gui.ShadowCursor=function(m){var g=m.getDOMDocument().createRange(),b=!0;this.removeFromDocument=function(){};this.getMemberId=function(){return gui.ShadowCursor.ShadowCursorMemberId};this.getSelectedRange=function(){return g};this.setSelectedRange=function(k,d){g=k;b=!1!==d};this.hasForwardSelection=function(){return b};this.getDocument=function(){return m};this.getSelectionType=function(){return ops.OdtCursor.RangeSelection};g.setStart(m.getRootNode(),0)};gui.ShadowCursor.ShadowCursorMemberId="";
-(function(){return gui.ShadowCursor})();
-// Input 101
-gui.SelectionView=function(m){};gui.SelectionView.prototype.rerender=function(){};gui.SelectionView.prototype.show=function(){};gui.SelectionView.prototype.hide=function(){};gui.SelectionView.prototype.destroy=function(m){};
-// Input 102
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.SelectionViewManager=function(m){function g(){return Object.keys(b).map(function(g){return b[g]})}var b={};this.getSelectionView=function(g){return b.hasOwnProperty(g)?b[g]:null};this.getSelectionViews=g;this.removeSelectionView=function(g){b.hasOwnProperty(g)&&(b[g].destroy(function(){}),delete b[g])};this.hideSelectionView=function(g){b.hasOwnProperty(g)&&b[g].hide()};this.showSelectionView=function(g){b.hasOwnProperty(g)&&b[g].show()};this.rerenderSelectionViews=function(){Object.keys(b).forEach(function(g){b[g].rerender()})};
-this.registerCursor=function(g,d){var n=g.getMemberId(),p=new m(g);d?p.show():p.hide();return b[n]=p};this.destroy=function(b){function d(g,f){f?b(f):g<m.length?m[g].destroy(function(b){d(g+1,b)}):b()}var m=g();d(0,void 0)}};
-// Input 103
-/*
-
- Copyright (C) 2012-2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.SessionViewOptions=function(){this.caretBlinksOnRangeSelect=this.caretAvatarsInitiallyVisible=this.editInfoMarkersInitiallyVisible=!0};
-(function(){gui.SessionView=function(m,g,b,k,d){function n(a,b,c){function d(b,c,e){c=b+'[editinfo|memberid="'+a+'"]'+e+c;a:{var h=l.firstChild;for(b=b+'[editinfo|memberid="'+a+'"]'+e+"{";h;){if(h.nodeType===Node.TEXT_NODE&&0===h.data.indexOf(b)){b=h;break a}h=h.nextSibling}b=null}b?b.data=c:l.appendChild(document.createTextNode(c))}d("div.editInfoMarker","{ background-color: "+c+"; }","");d("span.editInfoColor","{ background-color: "+c+"; }","");d("span.editInfoAuthor",'{ content: "'+b+'"; }',":before");
-d("dc|creator","{ background-color: "+c+"; }","");d(".selectionOverlay","{ fill: "+c+"; stroke: "+c+";}","");a!==gui.ShadowCursor.ShadowCursorMemberId&&a!==g||d(".webodf-touchEnabled .selectionOverlay","{ display: block; }"," > .draggable")}function p(a){var b,c;for(c in v)v.hasOwnProperty(c)&&(b=v[c],a?b.show():b.hide())}function f(a){k.getCarets().forEach(function(b){a?b.showHandle():b.hideHandle()})}function q(a){var b=a.getMemberId();a=a.getProperties();n(b,a.fullName,a.color);g===b&&n("","",
-a.color)}function e(a){var c=a.getMemberId(),e=b.getOdtDocument().getMember(c).getProperties();k.registerCursor(a,z,x);d.registerCursor(a,!0);if(a=k.getCaret(c))a.setAvatarImageUrl(e.imageUrl),a.setColor(e.color);runtime.log("+++ View here +++ eagerly created an Caret for '"+c+"'! +++")}function r(a){a=a.getMemberId();var b=d.getSelectionView(g),c=d.getSelectionView(gui.ShadowCursor.ShadowCursorMemberId),e=k.getCaret(g);a===g?(c.hide(),b&&b.show(),e&&e.show()):a===gui.ShadowCursor.ShadowCursorMemberId&&
-(c.show(),b&&b.hide(),e&&e.hide())}function a(a){d.removeSelectionView(a)}function c(a){var c=a.paragraphElement,d=a.memberId;a=a.timeStamp;var e,f="",g=c.getElementsByTagNameNS(h,"editinfo").item(0);g?(f=g.getAttributeNS(h,"id"),e=v[f]):(f=Math.random().toString(),e=new ops.EditInfo(c,b.getOdtDocument()),e=new gui.EditInfoMarker(e,w),g=c.getElementsByTagNameNS(h,"editinfo").item(0),g.setAttributeNS(h,"id",f),v[f]=e);e.addEdit(d,new Date(a))}var l,h="urn:webodf:names:editinfo",v={},w=void 0!==m.editInfoMarkersInitiallyVisible?
-Boolean(m.editInfoMarkersInitiallyVisible):!0,z=void 0!==m.caretAvatarsInitiallyVisible?Boolean(m.caretAvatarsInitiallyVisible):!0,x=void 0!==m.caretBlinksOnRangeSelect?Boolean(m.caretBlinksOnRangeSelect):!0;this.showEditInfoMarkers=function(){w||(w=!0,p(w))};this.hideEditInfoMarkers=function(){w&&(w=!1,p(w))};this.showCaretAvatars=function(){z||(z=!0,f(z))};this.hideCaretAvatars=function(){z&&(z=!1,f(z))};this.getSession=function(){return b};this.getCaret=function(a){return k.getCaret(a)};this.destroy=
-function(h){var f=b.getOdtDocument(),g=Object.keys(v).map(function(a){return v[a]});f.unsubscribe(ops.Document.signalMemberAdded,q);f.unsubscribe(ops.Document.signalMemberUpdated,q);f.unsubscribe(ops.Document.signalCursorAdded,e);f.unsubscribe(ops.Document.signalCursorRemoved,a);f.unsubscribe(ops.OdtDocument.signalParagraphChanged,c);f.unsubscribe(ops.Document.signalCursorMoved,r);f.unsubscribe(ops.OdtDocument.signalParagraphChanged,d.rerenderSelectionViews);f.unsubscribe(ops.OdtDocument.signalTableAdded,
-d.rerenderSelectionViews);f.unsubscribe(ops.OdtDocument.signalParagraphStyleModified,d.rerenderSelectionViews);l.parentNode.removeChild(l);(function F(a,b){b?h(b):a<g.length?g[a].destroy(function(b){F(a+1,b)}):h()})(0,void 0)};(function(){var h=b.getOdtDocument(),f=document.getElementsByTagName("head").item(0);h.subscribe(ops.Document.signalMemberAdded,q);h.subscribe(ops.Document.signalMemberUpdated,q);h.subscribe(ops.Document.signalCursorAdded,e);h.subscribe(ops.Document.signalCursorRemoved,a);h.subscribe(ops.OdtDocument.signalParagraphChanged,
-c);h.subscribe(ops.Document.signalCursorMoved,r);h.subscribe(ops.OdtDocument.signalParagraphChanged,d.rerenderSelectionViews);h.subscribe(ops.OdtDocument.signalTableAdded,d.rerenderSelectionViews);h.subscribe(ops.OdtDocument.signalParagraphStyleModified,d.rerenderSelectionViews);l=document.createElementNS(f.namespaceURI,"style");l.type="text/css";l.media="screen, print, handheld, projection";l.appendChild(document.createTextNode("@namespace editinfo url(urn:webodf:names:editinfo);"));l.appendChild(document.createTextNode("@namespace dc url(http://purl.org/dc/elements/1.1/);"));
-f.appendChild(l)})()}})();
-// Input 104
-gui.SvgSelectionView=function(m){function g(){var a=l.getRootNode();h!==a&&(h=a,v=h.parentNode.parentNode.parentNode,v.appendChild(x),x.setAttribute("class","selectionOverlay"),t.setAttribute("class","draggable"),s.setAttribute("class","draggable"),t.setAttribute("end","left"),s.setAttribute("end","right"),t.setAttribute("r",8),s.setAttribute("r",8),x.appendChild(u),x.appendChild(t),x.appendChild(s))}function b(a){var b=F.getBoundingClientRect(v),c=L.getZoomLevel(),d={};d.top=F.adaptRangeDifferenceToZoomLevel(a.top-
-b.top,c);d.left=F.adaptRangeDifferenceToZoomLevel(a.left-b.left,c);d.bottom=F.adaptRangeDifferenceToZoomLevel(a.bottom-b.top,c);d.right=F.adaptRangeDifferenceToZoomLevel(a.right-b.left,c);d.width=F.adaptRangeDifferenceToZoomLevel(a.width,c);d.height=F.adaptRangeDifferenceToZoomLevel(a.height,c);return d}function k(a){a=a.getBoundingClientRect();return Boolean(a&&0!==a.height)}function d(a){var b=y.getTextElements(a,!0,!1),c=a.cloneRange(),d=a.cloneRange();a=a.cloneRange();if(!b.length)return null;
-var e;a:{e=0;var h=b[e],f=c.startContainer===h?c.startOffset:0,g=f;c.setStart(h,f);for(c.setEnd(h,g);!k(c);){if(h.nodeType===Node.ELEMENT_NODE&&g<h.childNodes.length)g=h.childNodes.length;else if(h.nodeType===Node.TEXT_NODE&&g<h.length)g+=1;else if(b[e])h=b[e],e+=1,f=g=0;else{e=!1;break a}c.setStart(h,f);c.setEnd(h,g)}e=!0}if(!e)return null;a:{e=b.length-1;h=b[e];g=f=d.endContainer===h?d.endOffset:h.nodeType===Node.TEXT_NODE?h.length:h.childNodes.length;d.setStart(h,f);for(d.setEnd(h,g);!k(d);){if(h.nodeType===
-Node.ELEMENT_NODE&&0<f)f=0;else if(h.nodeType===Node.TEXT_NODE&&0<f)f-=1;else if(b[e])h=b[e],e-=1,f=g=h.length||h.childNodes.length;else{b=!1;break a}d.setStart(h,f);d.setEnd(h,g)}b=!0}if(!b)return null;a.setStart(c.startContainer,c.startOffset);a.setEnd(d.endContainer,d.endOffset);return{firstRange:c,lastRange:d,fillerRange:a}}function n(a,b){var c={};c.top=Math.min(a.top,b.top);c.left=Math.min(a.left,b.left);c.right=Math.max(a.right,b.right);c.bottom=Math.max(a.bottom,b.bottom);c.width=c.right-
-c.left;c.height=c.bottom-c.top;return c}function p(a,b){b&&0<b.width&&0<b.height&&(a=a?n(a,b):b);return a}function f(a){function b(a){H.setUnfilteredPosition(a,0);return v.acceptNode(a)===U&&s.acceptPosition(H)===U?U:T}function c(a){var d=null;b(a)===U&&(d=F.getBoundingClientRect(a));return d}var d=a.commonAncestorContainer,e=a.startContainer,h=a.endContainer,f=a.startOffset,g=a.endOffset,k,m,n=null,q,r=w.createRange(),s,v=new odf.OdfNodeFilter,u;if(e===d||h===d)return r=a.cloneRange(),n=r.getBoundingClientRect(),
-r.detach(),n;for(a=e;a.parentNode!==d;)a=a.parentNode;for(m=h;m.parentNode!==d;)m=m.parentNode;s=l.createRootFilter(e);for(d=a.nextSibling;d&&d!==m;)q=c(d),n=p(n,q),d=d.nextSibling;if(y.isParagraph(a))n=p(n,F.getBoundingClientRect(a));else if(a.nodeType===Node.TEXT_NODE)d=a,r.setStart(d,f),r.setEnd(d,d===m?g:d.length),q=r.getBoundingClientRect(),n=p(n,q);else for(u=w.createTreeWalker(a,NodeFilter.SHOW_TEXT,b,!1),d=u.currentNode=e;d&&d!==h;)r.setStart(d,f),r.setEnd(d,d.length),q=r.getBoundingClientRect(),
-n=p(n,q),k=d,f=0,d=u.nextNode();k||(k=e);if(y.isParagraph(m))n=p(n,F.getBoundingClientRect(m));else if(m.nodeType===Node.TEXT_NODE)d=m,r.setStart(d,d===a?f:0),r.setEnd(d,g),q=r.getBoundingClientRect(),n=p(n,q);else for(u=w.createTreeWalker(m,NodeFilter.SHOW_TEXT,b,!1),d=u.currentNode=h;d&&d!==k;)if(r.setStart(d,0),r.setEnd(d,g),q=r.getBoundingClientRect(),n=p(n,q),d=u.previousNode())g=d.length;return n}function q(a,b){var c=a.getBoundingClientRect(),d={width:0};d.top=c.top;d.bottom=c.bottom;d.height=
-c.height;d.left=d.right=b?c.right:c.left;return d}function e(){var a=m.getSelectedRange(),c;if(c=O&&m.getSelectionType()===ops.OdtCursor.RangeSelection&&!a.collapsed){g();var a=d(a),e,h,l,k,p,r,v,w;if(a){c=a.firstRange;e=a.lastRange;h=a.fillerRange;l=b(q(c,!1));p=b(q(e,!0));k=(k=f(h))?b(k):n(l,p);r=k.left;v=l.left+Math.max(0,k.width-(l.left-k.left));k=Math.min(l.top,p.top);w=p.top+p.height;r=[{x:l.left,y:k+l.height},{x:l.left,y:k},{x:v,y:k},{x:v,y:w-p.height},{x:p.right,y:w-p.height},{x:p.right,y:w},
-{x:r,y:w},{x:r,y:k+l.height},{x:l.left,y:k+l.height}];v="";var y;for(y=0;y<r.length;y+=1)v+=r[y].x+","+r[y].y+" ";u.setAttribute("points",v);t.setAttribute("cx",l.left);t.setAttribute("cy",k+l.height/2);s.setAttribute("cx",p.right);s.setAttribute("cy",w-p.height/2);c.detach();e.detach();h.detach()}c=Boolean(a)}x.style.display=c?"block":"none"}function r(a){O&&a===m&&X.trigger()}function a(a){a=8/a;t.setAttribute("r",a);s.setAttribute("r",a)}function c(b){v.removeChild(x);m.getDocument().unsubscribe(ops.Document.signalCursorMoved,
-r);L.unsubscribe(gui.ZoomHelper.signalZoomChanged,a);b()}var l=m.getDocument(),h,v,w=l.getDOMDocument(),z=new core.Async,x=w.createElementNS("http://www.w3.org/2000/svg","svg"),u=w.createElementNS("http://www.w3.org/2000/svg","polygon"),t=w.createElementNS("http://www.w3.org/2000/svg","circle"),s=w.createElementNS("http://www.w3.org/2000/svg","circle"),y=new odf.OdfUtils,F=new core.DomUtils,L=l.getCanvas().getZoomHelper(),O=!0,H=gui.SelectionMover.createPositionIterator(l.getRootNode()),U=NodeFilter.FILTER_ACCEPT,
-T=NodeFilter.FILTER_REJECT,X;this.rerender=function(){O&&X.trigger()};this.show=function(){O=!0;X.trigger()};this.hide=function(){O=!1;X.trigger()};this.destroy=function(a){z.destroyAll([X.destroy,c],a)};(function(){var b=m.getMemberId();X=new core.ScheduledTask(e,0);g();x.setAttributeNS("urn:webodf:names:editinfo","editinfo:memberid",b);m.getDocument().subscribe(ops.Document.signalCursorMoved,r);L.subscribe(gui.ZoomHelper.signalZoomChanged,a);a(L.getZoomLevel())})()};
-// Input 105
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.UndoStateRules=function(){function m(b,g){var k=b.length;this.previous=function(){for(k-=1;0<=k;k-=1)if(g(b[k]))return b[k];return null}}function g(b){b=b.spec();var g;b.hasOwnProperty("position")&&(g=b.position);return g}function b(b){return b.isEdit}function k(b,k,m){if(!m)return m=g(b)-g(k),0===m||1===Math.abs(m);b=g(b);k=g(k);m=g(m);return b-k===k-m}this.isEditOperation=b;this.isPartOfOperationSet=function(d,g){var p=void 0!==d.group,f;if(!d.isEdit||0===g.length)return!0;f=g[g.length-1];if(p&&
-d.group===f.group)return!0;a:switch(d.spec().optype){case "RemoveText":case "InsertText":f=!0;break a;default:f=!1}if(f&&g.some(b)){if(p){var q;p=d.spec().optype;f=new m(g,b);var e=f.previous(),r=null,a,c;runtime.assert(Boolean(e),"No edit operations found in state");c=e.group;runtime.assert(void 0!==c,"Operation has no group");for(a=1;e&&e.group===c;){if(p===e.spec().optype){q=e;break}e=f.previous()}if(q){for(e=f.previous();e;){if(e.group!==c){if(2===a)break;c=e.group;a+=1}if(p===e.spec().optype){r=
-e;break}e=f.previous()}q=k(d,q,r)}else q=!1;return q}q=d.spec().optype;p=new m(g,b);f=p.previous();runtime.assert(Boolean(f),"No edit operations found in state");q=q===f.spec().optype?k(d,f,p.previous()):!1;return q}return!1}};
-// Input 106
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-gui.TrivialUndoManager=function(m){function g(a){0<a.length&&(t=!0,l(a),t=!1)}function b(){x.emit(gui.UndoManager.signalUndoStackChanged,{undoAvailable:q.hasUndoStates(),redoAvailable:q.hasRedoStates()})}function k(){v!==c&&v!==w[w.length-1]&&w.push(v)}function d(a){var b=a.previousSibling||a.nextSibling;a.parentNode.removeChild(a);r.normalizeTextNodes(b)}function n(a){return Object.keys(a).map(function(b){return a[b]})}function p(a){function b(a){var h=a.spec();if(e[h.memberid])switch(h.optype){case "AddCursor":c[h.memberid]||
-(c[h.memberid]=a,delete e[h.memberid],f-=1);break;case "MoveCursor":d[h.memberid]||(d[h.memberid]=a)}}var c={},d={},e={},f,g=a.pop();h.getMemberIds().forEach(function(a){e[a]=!0});for(f=Object.keys(e).length;g&&0<f;)g.reverse(),g.forEach(b),g=a.pop();return n(c).concat(n(d))}function f(){var f=a=h.cloneDocumentElement();r.getElementsByTagNameNS(f,e,"cursor").forEach(d);r.getElementsByTagNameNS(f,e,"anchor").forEach(d);k();v=c=p([c].concat(w));w.length=0;z.length=0;b()}var q=this,e="urn:webodf:names:cursor",
-r=new core.DomUtils,a,c=[],l,h,v=[],w=[],z=[],x=new core.EventNotifier([gui.UndoManager.signalUndoStackChanged,gui.UndoManager.signalUndoStateCreated,gui.UndoManager.signalUndoStateModified,gui.TrivialUndoManager.signalDocumentRootReplaced]),u=m||new gui.UndoStateRules,t=!1;this.subscribe=function(a,b){x.subscribe(a,b)};this.unsubscribe=function(a,b){x.unsubscribe(a,b)};this.hasUndoStates=function(){return 0<w.length};this.hasRedoStates=function(){return 0<z.length};this.setDocument=function(a){h=
-a};this.purgeInitialState=function(){w.length=0;z.length=0;c.length=0;v.length=0;a=null;b()};this.setInitialState=f;this.initialize=function(){a||f()};this.setPlaybackFunction=function(a){l=a};this.onOperationExecuted=function(a){t||(u.isEditOperation(a)&&(v===c||0<z.length)||!u.isPartOfOperationSet(a,v)?(z.length=0,k(),v=[a],w.push(v),x.emit(gui.UndoManager.signalUndoStateCreated,{operations:v}),b()):(v.push(a),x.emit(gui.UndoManager.signalUndoStateModified,{operations:v})))};this.moveForward=function(a){for(var c=
-0,d;a&&z.length;)d=z.pop(),w.push(d),g(d),a-=1,c+=1;c&&(v=w[w.length-1],b());return c};this.moveBackward=function(d){for(var e=0;d&&w.length;)z.push(w.pop()),d-=1,e+=1;e&&(h.setDocumentElement(a.cloneNode(!0)),x.emit(gui.TrivialUndoManager.signalDocumentRootReplaced,{}),h.getMemberIds().forEach(function(a){h.removeCursor(a)}),g(c),w.forEach(g),v=w[w.length-1]||c,b());return e}};gui.TrivialUndoManager.signalDocumentRootReplaced="documentRootReplaced";(function(){return gui.TrivialUndoManager})();
-// Input 107
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- This file is part of WebODF.
-
- WebODF is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License (GNU AGPL)
- as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- WebODF is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with WebODF. If not, see <http://www.gnu.org/licenses/>.
- @licend
-
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OperationTransformMatrix=function(){function m(a){a.position+=a.length;a.length*=-1}function g(a){var b=0>a.length;b&&m(a);return b}function b(a,b){function d(f){a[f]===b&&e.push(f)}var e=[];a&&["style:parent-style-name","style:next-style-name"].forEach(d);return e}function k(a,b){function d(e){a[e]===b&&delete a[e]}a&&["style:parent-style-name","style:next-style-name"].forEach(d)}function d(a){var b={};Object.keys(a).forEach(function(e){b[e]="object"===typeof a[e]?d(a[e]):a[e]});return b}function n(a,
-b,d,e){var f,g=!1,k=!1,m,n=[];e&&e.attributes&&(n=e.attributes.split(","));a&&(d||0<n.length)&&Object.keys(a).forEach(function(b){var c=a[b],e;"object"!==typeof c&&(d&&(e=d[b]),void 0!==e?(delete a[b],k=!0,e===c&&(delete d[b],g=!0)):-1!==n.indexOf(b)&&(delete a[b],k=!0))});if(b&&b.attributes&&(d||0<n.length)){m=b.attributes.split(",");for(e=0;e<m.length;e+=1)if(f=m[e],d&&void 0!==d[f]||n&&-1!==n.indexOf(f))m.splice(e,1),e-=1,k=!0;0<m.length?b.attributes=m.join(","):delete b.attributes}return{majorChanged:g,
-minorChanged:k}}function p(a){for(var b in a)if(a.hasOwnProperty(b))return!0;return!1}function f(a){for(var b in a)if(a.hasOwnProperty(b)&&("attributes"!==b||0<a.attributes.length))return!0;return!1}function q(a,b,d,e,g){var k=a?a[g]:null,m=b?b[g]:null,q=d?d[g]:null,r=e?e[g]:null,t;t=n(k,m,q,r);k&&!p(k)&&delete a[g];m&&!f(m)&&delete b[g];q&&!p(q)&&delete d[g];r&&!f(r)&&delete e[g];return t}function e(a,b){return{opSpecsA:[a],opSpecsB:[b]}}var r;r={AddCursor:{AddCursor:e,AddMember:e,AddStyle:e,ApplyDirectStyling:e,
-InsertText:e,MoveCursor:e,RemoveCursor:e,RemoveMember:e,RemoveStyle:e,RemoveText:e,SetParagraphStyle:e,SplitParagraph:e,UpdateMember:e,UpdateMetadata:e,UpdateParagraphStyle:e},AddMember:{AddStyle:e,InsertText:e,MoveCursor:e,RemoveCursor:e,RemoveStyle:e,RemoveText:e,SetParagraphStyle:e,SplitParagraph:e,UpdateMetadata:e,UpdateParagraphStyle:e},AddStyle:{AddStyle:e,ApplyDirectStyling:e,InsertText:e,MoveCursor:e,RemoveCursor:e,RemoveMember:e,RemoveStyle:function(a,c){var d,e=[a],f=[c];a.styleFamily===
-c.styleFamily&&(d=b(a.setProperties,c.styleName),0<d.length&&(d={optype:"UpdateParagraphStyle",memberid:c.memberid,timestamp:c.timestamp,styleName:a.styleName,removedProperties:{attributes:d.join(",")}},f.unshift(d)),k(a.setProperties,c.styleName));return{opSpecsA:e,opSpecsB:f}},RemoveText:e,SetParagraphStyle:e,SplitParagraph:e,UpdateMember:e,UpdateMetadata:e,UpdateParagraphStyle:e},ApplyDirectStyling:{ApplyDirectStyling:function(a,b,e){var h,f,g,k,m,n,r,s;k=[a];g=[b];if(!(a.position+a.length<=b.position||
-a.position>=b.position+b.length)){h=e?a:b;f=e?b:a;if(a.position!==b.position||a.length!==b.length)n=d(h),r=d(f);b=q(f.setProperties,null,h.setProperties,null,"style:text-properties");if(b.majorChanged||b.minorChanged)g=[],a=[],k=h.position+h.length,m=f.position+f.length,f.position<h.position?b.minorChanged&&(s=d(r),s.length=h.position-f.position,a.push(s),f.position=h.position,f.length=m-f.position):h.position<f.position&&b.majorChanged&&(s=d(n),s.length=f.position-h.position,g.push(s),h.position=
-f.position,h.length=k-h.position),m>k?b.minorChanged&&(n=r,n.position=k,n.length=m-k,a.push(n),f.length=k-f.position):k>m&&b.majorChanged&&(n.position=m,n.length=k-m,g.push(n),h.length=m-h.position),h.setProperties&&p(h.setProperties)&&g.push(h),f.setProperties&&p(f.setProperties)&&a.push(f),e?(k=g,g=a):k=a}return{opSpecsA:k,opSpecsB:g}},InsertText:function(a,b){b.position<=a.position?a.position+=b.text.length:b.position<=a.position+a.length&&(a.length+=b.text.length);return{opSpecsA:[a],opSpecsB:[b]}},
-MoveCursor:e,RemoveCursor:e,RemoveStyle:e,RemoveText:function(a,b){var d=a.position+a.length,e=b.position+b.length,f=[a],g=[b];e<=a.position?a.position-=b.length:b.position<d&&(a.position<b.position?a.length=e<d?a.length-b.length:b.position-a.position:(a.position=b.position,e<d?a.length=d-e:f=[]));return{opSpecsA:f,opSpecsB:g}},SetParagraphStyle:e,SplitParagraph:function(a,b){b.position<a.position?a.position+=1:b.position<a.position+a.length&&(a.length+=1);return{opSpecsA:[a],opSpecsB:[b]}},UpdateMetadata:e,
-UpdateParagraphStyle:e},InsertText:{InsertText:function(a,b,d){a.position<b.position?b.position+=a.text.length:a.position>b.position?a.position+=b.text.length:d?b.position+=a.text.length:a.position+=b.text.length;return{opSpecsA:[a],opSpecsB:[b]}},MoveCursor:function(a,b){var d=g(b);a.position<b.position?b.position+=a.text.length:a.position<b.position+b.length&&(b.length+=a.text.length);d&&m(b);return{opSpecsA:[a],opSpecsB:[b]}},RemoveCursor:e,RemoveMember:e,RemoveStyle:e,RemoveText:function(a,b){var d;
-d=b.position+b.length;var e=[a],f=[b];d<=a.position?a.position-=b.length:a.position<=b.position?b.position+=a.text.length:(b.length=a.position-b.position,d={optype:"RemoveText",memberid:b.memberid,timestamp:b.timestamp,position:a.position+a.text.length,length:d-a.position},f.unshift(d),a.position=b.position);return{opSpecsA:e,opSpecsB:f}},SplitParagraph:function(a,b,d){if(a.position<b.position)b.position+=a.text.length;else if(a.position>b.position)a.position+=1;else return d?b.position+=a.text.length:
-a.position+=1,null;return{opSpecsA:[a],opSpecsB:[b]}},UpdateMember:e,UpdateMetadata:e,UpdateParagraphStyle:e},MoveCursor:{MoveCursor:e,RemoveCursor:function(a,b){return{opSpecsA:a.memberid===b.memberid?[]:[a],opSpecsB:[b]}},RemoveMember:e,RemoveStyle:e,RemoveText:function(a,b){var d=g(a),e=a.position+a.length,f=b.position+b.length;f<=a.position?a.position-=b.length:b.position<e&&(a.position<b.position?a.length=f<e?a.length-b.length:b.position-a.position:(a.position=b.position,a.length=f<e?e-f:0));
-d&&m(a);return{opSpecsA:[a],opSpecsB:[b]}},SetParagraphStyle:e,SplitParagraph:function(a,b){var d=g(a);b.position<a.position?a.position+=1:b.position<a.position+a.length&&(a.length+=1);d&&m(a);return{opSpecsA:[a],opSpecsB:[b]}},UpdateMember:e,UpdateMetadata:e,UpdateParagraphStyle:e},RemoveCursor:{RemoveCursor:function(a,b){var d=a.memberid===b.memberid;return{opSpecsA:d?[]:[a],opSpecsB:d?[]:[b]}},RemoveMember:e,RemoveStyle:e,RemoveText:e,SetParagraphStyle:e,SplitParagraph:e,UpdateMember:e,UpdateMetadata:e,
-UpdateParagraphStyle:e},RemoveMember:{RemoveStyle:e,RemoveText:e,SetParagraphStyle:e,SplitParagraph:e,UpdateMetadata:e,UpdateParagraphStyle:e},RemoveStyle:{RemoveStyle:function(a,b){var d=a.styleName===b.styleName&&a.styleFamily===b.styleFamily;return{opSpecsA:d?[]:[a],opSpecsB:d?[]:[b]}},RemoveText:e,SetParagraphStyle:function(a,b){var d,e=[a],f=[b];"paragraph"===a.styleFamily&&a.styleName===b.styleName&&(d={optype:"SetParagraphStyle",memberid:a.memberid,timestamp:a.timestamp,position:b.position,
-styleName:""},e.unshift(d),b.styleName="");return{opSpecsA:e,opSpecsB:f}},SplitParagraph:e,UpdateMember:e,UpdateMetadata:e,UpdateParagraphStyle:function(a,c){var d,e=[a],f=[c];"paragraph"===a.styleFamily&&(d=b(c.setProperties,a.styleName),0<d.length&&(d={optype:"UpdateParagraphStyle",memberid:a.memberid,timestamp:a.timestamp,styleName:c.styleName,removedProperties:{attributes:d.join(",")}},e.unshift(d)),a.styleName===c.styleName?f=[]:k(c.setProperties,a.styleName));return{opSpecsA:e,opSpecsB:f}}},
-RemoveText:{RemoveText:function(a,b){var d=a.position+a.length,e=b.position+b.length,f=[a],g=[b];e<=a.position?a.position-=b.length:d<=b.position?b.position-=a.length:b.position<d&&(a.position<b.position?(a.length=e<d?a.length-b.length:b.position-a.position,d<e?(b.position=a.position,b.length=e-d):g=[]):(d<e?b.length-=a.length:b.position<a.position?b.length=a.position-b.position:g=[],e<d?(a.position=b.position,a.length=d-e):f=[]));return{opSpecsA:f,opSpecsB:g}},SplitParagraph:function(a,b){var d=
-a.position+a.length,e=[a],f=[b];b.position<=a.position?a.position+=1:b.position<d&&(a.length=b.position-a.position,d={optype:"RemoveText",memberid:a.memberid,timestamp:a.timestamp,position:b.position+1,length:d-b.position},e.unshift(d));a.position+a.length<=b.position?b.position-=a.length:a.position<b.position&&(b.position=a.position);return{opSpecsA:e,opSpecsB:f}},UpdateMember:e,UpdateMetadata:e,UpdateParagraphStyle:e},SetParagraphStyle:{UpdateMember:e,UpdateMetadata:e,UpdateParagraphStyle:e},SplitParagraph:{SplitParagraph:function(a,
-b,d){a.position<b.position?b.position+=1:a.position>b.position?a.position+=1:a.position===b.position&&(d?b.position+=1:a.position+=1);return{opSpecsA:[a],opSpecsB:[b]}},UpdateMember:e,UpdateMetadata:e,UpdateParagraphStyle:e},UpdateMember:{UpdateMetadata:e,UpdateParagraphStyle:e},UpdateMetadata:{UpdateMetadata:function(a,b,d){var e,g=[a],k=[b];e=d?a:b;a=d?b:a;n(a.setProperties||null,a.removedProperties||null,e.setProperties||null,e.removedProperties||null);e.setProperties&&p(e.setProperties)||e.removedProperties&&
-f(e.removedProperties)||(d?g=[]:k=[]);a.setProperties&&p(a.setProperties)||a.removedProperties&&f(a.removedProperties)||(d?k=[]:g=[]);return{opSpecsA:g,opSpecsB:k}},UpdateParagraphStyle:e},UpdateParagraphStyle:{UpdateParagraphStyle:function(a,b,d){var e,g=[a],k=[b];a.styleName===b.styleName&&(e=d?a:b,a=d?b:a,q(a.setProperties,a.removedProperties,e.setProperties,e.removedProperties,"style:paragraph-properties"),q(a.setProperties,a.removedProperties,e.setProperties,e.removedProperties,"style:text-properties"),
-n(a.setProperties||null,a.removedProperties||null,e.setProperties||null,e.removedProperties||null),e.setProperties&&p(e.setProperties)||e.removedProperties&&f(e.removedProperties)||(d?g=[]:k=[]),a.setProperties&&p(a.setProperties)||a.removedProperties&&f(a.removedProperties)||(d?k=[]:g=[]));return{opSpecsA:g,opSpecsB:k}}}};this.passUnchanged=e;this.extendTransformations=function(a){Object.keys(a).forEach(function(b){var d=a[b],e,f=r.hasOwnProperty(b);runtime.log((f?"Extending":"Adding")+" map for optypeA: "+
-b);f||(r[b]={});e=r[b];Object.keys(d).forEach(function(a){var f=e.hasOwnProperty(a);runtime.assert(b<=a,"Wrong order:"+b+", "+a);runtime.log(" "+(f?"Overwriting":"Adding")+" entry for optypeB: "+a);e[a]=d[a]})})};this.transformOpspecVsOpspec=function(a,b){var d=a.optype<=b.optype,e;runtime.log("Crosstransforming:");runtime.log(runtime.toJson(a));runtime.log(runtime.toJson(b));d||(e=a,a=b,b=e);(e=(e=r[a.optype])&&e[b.optype])?(e=e(a,b,!d),d||null===e||(e={opSpecsA:e.opSpecsB,opSpecsB:e.opSpecsA})):
-e=null;runtime.log("result:");e?(runtime.log(runtime.toJson(e.opSpecsA)),runtime.log(runtime.toJson(e.opSpecsB))):runtime.log("null");return e}};
-// Input 108
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- This file is part of WebODF.
-
- WebODF is free software: you can redistribute it and/or modify it
- under the terms of the GNU Affero General Public License (GNU AGPL)
- as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- WebODF is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with WebODF. If not, see <http://www.gnu.org/licenses/>.
- @licend
-
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.OperationTransformer=function(){function m(d){var g=[];d.forEach(function(d){g.push(b.create(d))});return g}function g(b,m){for(var p,f,q=[],e=[];0<b.length&&m;){p=b.shift();p=k.transformOpspecVsOpspec(p,m);if(!p)return null;q=q.concat(p.opSpecsA);if(0===p.opSpecsB.length){q=q.concat(b);m=null;break}for(;1<p.opSpecsB.length;){f=g(b,p.opSpecsB.shift());if(!f)return null;e=e.concat(f.opSpecsB);b=f.opSpecsA}m=p.opSpecsB.pop()}m&&e.push(m);return{opSpecsA:q,opSpecsB:e}}var b,k=new ops.OperationTransformMatrix;
-this.setOperationFactory=function(d){b=d};this.getOperationTransformMatrix=function(){return k};this.transform=function(b,k){for(var p,f=[];0<k.length;){p=g(b,k.shift());if(!p)return null;b=p.opSpecsA;f=f.concat(p.opSpecsB)}return{opsA:m(b),opsB:m(f)}}};
-// Input 109
-/*
-
- Copyright (C) 2013 KO GmbH <copyright@kogmbh.com>
-
- @licstart
- The JavaScript code in this page is free software: you can redistribute it
- and/or modify it under the terms of the GNU Affero General Public License
- (GNU AGPL) as published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version. The code is distributed
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this code. If not, see <http://www.gnu.org/licenses/>.
-
- As additional permission under GNU AGPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
-
- As a special exception to the AGPL, any HTML file which merely makes function
- calls to this code, and for that purpose includes it by reference shall be
- deemed a separate work for copyright law purposes. In addition, the copyright
- holders of this code give you permission to combine this code with free
- software libraries that are released under the GNU LGPL. You may copy and
- distribute such a system following the terms of the GNU AGPL for this code
- and the LGPL for the libraries. If you modify this code, you may extend this
- exception to your version of the code, but you are not obligated to do so.
- If you do not wish to do so, delete this exception statement from your
- version.
-
- This license applies to this entire compilation.
- @licend
- @source: http://www.webodf.org/
- @source: https://github.com/kogmbh/WebODF/
-*/
-ops.Server=function(){};ops.Server.prototype.connect=function(m,g){};ops.Server.prototype.networkStatus=function(){};ops.Server.prototype.login=function(m,g,b,k){};ops.Server.prototype.joinSession=function(m,g,b,k){};ops.Server.prototype.leaveSession=function(m,g,b,k){};ops.Server.prototype.getGenesisUrl=function(m){};
-// Input 110
-var webodf_css='@namespace draw url(urn:oasis:names:tc:opendocument:xmlns:drawing:1.0);\n@namespace fo url(urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0);\n@namespace office url(urn:oasis:names:tc:opendocument:xmlns:office:1.0);\n@namespace presentation url(urn:oasis:names:tc:opendocument:xmlns:presentation:1.0);\n@namespace style url(urn:oasis:names:tc:opendocument:xmlns:style:1.0);\n@namespace svg url(urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0);\n@namespace table url(urn:oasis:names:tc:opendocument:xmlns:table:1.0);\n@namespace text url(urn:oasis:names:tc:opendocument:xmlns:text:1.0);\n@namespace webodfhelper url(urn:webodf:names:helper);\n@namespace cursor url(urn:webodf:names:cursor);\n@namespace editinfo url(urn:webodf:names:editinfo);\n@namespace annotation url(urn:webodf:names:annotation);\n@namespace dc url(http://purl.org/dc/elements/1.1/);\n@namespace svgns url(http://www.w3.org/2000/svg);\n\noffice|document > *, office|document-content > * {\n display: none;\n}\noffice|body, office|document {\n display: inline-block;\n position: relative;\n}\n\ntext|p, text|h {\n display: block;\n padding: 0;\n margin: 0;\n line-height: normal;\n position: relative;\n min-height: 1.3em; /* prevent empty paragraphs and headings from collapsing if they are empty */\n}\n*[webodfhelper|containsparagraphanchor] {\n position: relative;\n}\ntext|s {\n white-space: pre;\n}\ntext|tab {\n display: inline;\n white-space: pre;\n}\ntext|tracked-changes {\n /*Consumers that do not support change tracking, should ignore changes.*/\n display: none;\n}\noffice|binary-data {\n display: none;\n}\noffice|text {\n display: block;\n text-align: left;\n overflow: visible;\n word-wrap: break-word;\n}\n\noffice|text::selection {\n /** Let\'s not draw selection highlight that overflows into the office|text\n * node when selecting content across several paragraphs\n */\n background: transparent;\n}\n\noffice|document *::selection {\n background: transparent;\n}\noffice|document *::-moz-selection {\n background: transparent;\n}\n\noffice|text * draw|text-box {\n/** only for text documents */\n display: block;\n border: 1px solid #d3d3d3;\n}\ndraw|frame {\n /** make sure frames are above the main body. */\n z-index: 1;\n}\noffice|spreadsheet {\n display: block;\n border-collapse: collapse;\n empty-cells: show;\n font-family: sans-serif;\n font-size: 10pt;\n text-align: left;\n page-break-inside: avoid;\n overflow: hidden;\n}\noffice|presentation {\n display: inline-block;\n text-align: left;\n}\n#shadowContent {\n display: inline-block;\n text-align: left;\n}\ndraw|page {\n display: block;\n position: relative;\n overflow: hidden;\n}\npresentation|notes, presentation|footer-decl, presentation|date-time-decl {\n display: none;\n}\n@media print {\n draw|page {\n border: 1pt solid black;\n page-break-inside: avoid;\n }\n presentation|notes {\n /*TODO*/\n }\n}\noffice|spreadsheet text|p {\n border: 0px;\n padding: 1px;\n margin: 0px;\n}\noffice|spreadsheet table|table {\n margin: 3px;\n}\noffice|spreadsheet table|table:after {\n /* show sheet name the end of the sheet */\n /*content: attr(table|name);*/ /* gives parsing error in opera */\n}\noffice|spreadsheet table|table-row {\n counter-increment: row;\n}\noffice|spreadsheet table|table-row:before {\n width: 3em;\n background: #cccccc;\n border: 1px solid black;\n text-align: center;\n content: counter(row);\n display: table-cell;\n}\noffice|spreadsheet table|table-cell {\n border: 1px solid #cccccc;\n}\ntable|table {\n display: table;\n}\ndraw|frame table|table {\n width: 100%;\n height: 100%;\n background: white;\n}\ntable|table-header-rows {\n display: table-header-group;\n}\ntable|table-row {\n display: table-row;\n}\ntable|table-column {\n display: table-column;\n}\ntable|table-cell {\n width: 0.889in;\n display: table-cell;\n word-break: break-all; /* prevent long words from extending out the table cell */\n}\ndraw|frame {\n display: block;\n}\ndraw|image {\n display: block;\n width: 100%;\n height: 100%;\n top: 0px;\n left: 0px;\n background-repeat: no-repeat;\n background-size: 100% 100%;\n -moz-background-size: 100% 100%;\n}\n/* only show the first image in frame */\ndraw|frame > draw|image:nth-of-type(n+2) {\n display: none;\n}\ntext|list:before {\n display: none;\n content:"";\n}\ntext|list {\n counter-reset: list;\n}\ntext|list-item {\n display: block;\n}\ntext|number {\n display:none;\n}\n\ntext|a {\n color: blue;\n text-decoration: underline;\n cursor: pointer;\n}\noffice|text[webodfhelper|links="inactive"] text|a {\n cursor: text;\n}\ntext|note-citation {\n vertical-align: super;\n font-size: smaller;\n}\ntext|note-body {\n display: none;\n}\ntext|note:hover text|note-citation {\n background: #dddddd;\n}\ntext|note:hover text|note-body {\n display: block;\n left:1em;\n max-width: 80%;\n position: absolute;\n background: #ffffaa;\n}\nsvg|title, svg|desc {\n display: none;\n}\nvideo {\n width: 100%;\n height: 100%\n}\n\n/* below set up the cursor */\ncursor|cursor {\n display: inline;\n width: 0;\n height: 1em;\n /* making the position relative enables the avatar to use\n the cursor as reference for its absolute position */\n position: relative;\n z-index: 1;\n pointer-events: none;\n}\n\ncursor|cursor > .caret {\n /* IMPORTANT: when changing these values ensure DEFAULT_CARET_TOP and DEFAULT_CARET_HEIGHT\n in Caret.js remain in sync */\n display: inline;\n position: absolute;\n top: 5%; /* push down the caret; 0px can do the job, 5% looks better, 10% is a bit over */\n height: 1em;\n border-left: 2px solid black;\n outline: none;\n}\n\ncursor|cursor > .handle {\n padding: 3px;\n box-shadow: 0px 0px 5px rgba(50, 50, 50, 0.75);\n border: none !important;\n border-radius: 5px;\n opacity: 0.3;\n}\n\ncursor|cursor > .handle > img {\n border-radius: 5px;\n}\n\ncursor|cursor > .handle.active {\n opacity: 0.8;\n}\n\ncursor|cursor > .handle:after {\n content: \' \';\n position: absolute;\n width: 0px;\n height: 0px;\n border-style: solid;\n border-width: 8.7px 5px 0 5px;\n border-color: black transparent transparent transparent;\n\n top: 100%;\n left: 43%;\n}\n\n/** Input Method Editor input pane & behaviours */\n/* not within a cursor */\n#eventTrap {\n height: auto;\n display: block;\n position: absolute;\n width: 1px;\n outline: none;\n opacity: 0;\n color: rgba(255, 255, 255, 0); /* hide the blinking caret by setting the colour to fully transparent */\n overflow: hidden; /* The overflow visibility is used to hide and show characters being entered */\n pointer-events: none;\n}\n\n/* within a cursor */\ncursor|cursor > #composer {\n text-decoration: underline;\n}\n\ncursor|cursor[cursor|composing="true"] > #composer {\n display: inline-block;\n height: auto;\n width: auto;\n}\n\ncursor|cursor[cursor|composing="true"] {\n display: inline-block;\n width: auto;\n height: inherit;\n}\n\ncursor|cursor[cursor|composing="true"] > .caret {\n /* during composition, the caret should be pushed along by the composition text, inline with the text */\n position: static;\n /* as it is now part of an inline-block, it will no longer need correct to top or height values to align properly */\n height: auto !important;\n top: auto !important;\n}\n\neditinfo|editinfo {\n /* Empty or invisible display:inline elements respond very badly to mouse selection.\n Inline blocks are much more reliably selectable in Chrome & friends */\n display: inline-block;\n}\n\n.editInfoMarker {\n position: absolute;\n width: 10px;\n height: 100%;\n left: -20px;\n opacity: 0.8;\n top: 0;\n border-radius: 5px;\n background-color: transparent;\n box-shadow: 0px 0px 5px rgba(50, 50, 50, 0.75);\n}\n.editInfoMarker:hover {\n box-shadow: 0px 0px 8px rgba(0, 0, 0, 1);\n}\n\n.editInfoHandle {\n position: absolute;\n background-color: black;\n padding: 5px;\n border-radius: 5px;\n opacity: 0.8;\n box-shadow: 0px 0px 5px rgba(50, 50, 50, 0.75);\n bottom: 100%;\n margin-bottom: 10px;\n z-index: 3;\n left: -25px;\n}\n.editInfoHandle:after {\n content: \' \';\n position: absolute;\n width: 0px;\n height: 0px;\n border-style: solid;\n border-width: 8.7px 5px 0 5px;\n border-color: black transparent transparent transparent;\n\n top: 100%;\n left: 5px;\n}\n.editInfo {\n font-family: sans-serif;\n font-weight: normal;\n font-style: normal;\n text-decoration: none;\n color: white;\n width: 100%;\n height: 12pt;\n}\n.editInfoColor {\n float: left;\n width: 10pt;\n height: 10pt;\n border: 1px solid white;\n}\n.editInfoAuthor {\n float: left;\n margin-left: 5pt;\n font-size: 10pt;\n text-align: left;\n height: 12pt;\n line-height: 12pt;\n}\n.editInfoTime {\n float: right;\n margin-left: 30pt;\n font-size: 8pt;\n font-style: italic;\n color: yellow;\n height: 12pt;\n line-height: 12pt;\n}\n\n.annotationWrapper {\n display: inline;\n position: relative;\n}\n\n.annotationRemoveButton:before {\n content: \'\u00d7\';\n color: white;\n padding: 5px;\n line-height: 1em;\n}\n\n.annotationRemoveButton {\n width: 20px;\n height: 20px;\n border-radius: 10px;\n background-color: black;\n box-shadow: 0px 0px 5px rgba(50, 50, 50, 0.75);\n position: absolute;\n top: -10px;\n left: -10px;\n z-index: 3;\n text-align: center;\n font-family: sans-serif;\n font-style: normal;\n font-weight: normal;\n text-decoration: none;\n font-size: 15px;\n}\n.annotationRemoveButton:hover {\n cursor: pointer;\n box-shadow: 0px 0px 5px rgba(0, 0, 0, 1);\n}\n\n.annotationNote {\n width: 4cm;\n position: absolute;\n display: inline;\n z-index: 10;\n}\n.annotationNote > office|annotation {\n display: block;\n text-align: left;\n}\n\n.annotationConnector {\n position: absolute;\n display: inline;\n z-index: 2;\n border-top: 1px dashed brown;\n}\n.annotationConnector.angular {\n -moz-transform-origin: left top;\n -webkit-transform-origin: left top;\n -ms-transform-origin: left top;\n transform-origin: left top;\n}\n.annotationConnector.horizontal {\n left: 0;\n}\n.annotationConnector.horizontal:before {\n content: \'\';\n display: inline;\n position: absolute;\n width: 0px;\n height: 0px;\n border-style: solid;\n border-width: 8.7px 5px 0 5px;\n border-color: brown transparent transparent transparent;\n top: -1px;\n left: -5px;\n}\n\noffice|annotation {\n width: 100%;\n height: 100%;\n display: none;\n background: rgb(198, 238, 184);\n background: -moz-linear-gradient(90deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);\n background: -webkit-linear-gradient(90deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);\n background: -o-linear-gradient(90deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);\n background: -ms-linear-gradient(90deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);\n background: linear-gradient(180deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);\n box-shadow: 0 3px 4px -3px #ccc;\n}\n\noffice|annotation > dc|creator {\n display: block;\n font-size: 10pt;\n font-weight: normal;\n font-style: normal;\n font-family: sans-serif;\n color: white;\n background-color: brown;\n padding: 4px;\n}\noffice|annotation > dc|date {\n display: block;\n font-size: 10pt;\n font-weight: normal;\n font-style: normal;\n font-family: sans-serif;\n border: 4px solid transparent;\n color: black;\n}\noffice|annotation > text|list {\n display: block;\n padding: 5px;\n}\n\n/* This is very temporary CSS. This must go once\n * we start bundling webodf-default ODF styles for annotations.\n */\noffice|annotation text|p {\n font-size: 10pt;\n color: black;\n font-weight: normal;\n font-style: normal;\n text-decoration: none;\n font-family: sans-serif;\n}\n\ndc|*::selection {\n background: transparent;\n}\ndc|*::-moz-selection {\n background: transparent;\n}\n\n#annotationsPane {\n background-color: #EAEAEA;\n width: 4cm;\n height: 100%;\n display: none;\n position: absolute;\n outline: 1px solid #ccc;\n}\n\n.annotationHighlight {\n background-color: yellow;\n position: relative;\n}\n\n.selectionOverlay {\n position: absolute;\n pointer-events: none;\n top: 0;\n left: 0;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 15;\n}\n.selectionOverlay > polygon {\n fill-opacity: 0.3;\n stroke-opacity: 0.8;\n stroke-width: 1;\n fill-rule: evenodd;\n}\n\n.selectionOverlay > .draggable {\n fill-opacity: 0.8;\n stroke-opacity: 0;\n stroke-width: 8;\n pointer-events: all;\n display: none;\n\n -moz-transform-origin: center center;\n -webkit-transform-origin: center center;\n -ms-transform-origin: center center;\n transform-origin: center center;\n}\n\n#imageSelector {\n display: none;\n position: absolute;\n border-style: solid;\n border-color: black;\n}\n\n#imageSelector > div {\n width: 5px;\n height: 5px;\n display: block;\n position: absolute;\n border: 1px solid black;\n background-color: #ffffff;\n}\n\n#imageSelector > .topLeft {\n top: -4px;\n left: -4px;\n}\n\n#imageSelector > .topRight {\n top: -4px;\n right: -4px;\n}\n\n#imageSelector > .bottomRight {\n right: -4px;\n bottom: -4px;\n}\n\n#imageSelector > .bottomLeft {\n bottom: -4px;\n left: -4px;\n}\n\n#imageSelector > .topMiddle {\n top: -4px;\n left: 50%;\n margin-left: -2.5px; /* half of the width defined in #imageSelector > div */\n}\n\n#imageSelector > .rightMiddle {\n top: 50%;\n right: -4px;\n margin-top: -2.5px; /* half of the height defined in #imageSelector > div */\n}\n\n#imageSelector > .bottomMiddle {\n bottom: -4px;\n left: 50%;\n margin-left: -2.5px; /* half of the width defined in #imageSelector > div */\n}\n\n#imageSelector > .leftMiddle {\n top: 50%;\n left: -4px;\n margin-top: -2.5px; /* half of the height defined in #imageSelector > div */\n}\n\ndiv.customScrollbars::-webkit-scrollbar\n{\n width: 8px;\n height: 8px;\n background-color: transparent;\n}\n\ndiv.customScrollbars::-webkit-scrollbar-track\n{\n background-color: transparent;\n}\n\ndiv.customScrollbars::-webkit-scrollbar-thumb\n{\n background-color: #444;\n border-radius: 4px;\n}\n';
+var webodf_version="0.5.7-66-g25bf592";function Runtime(){}Runtime.prototype.getVariable=function(h){};Runtime.prototype.toJson=function(h){};Runtime.prototype.fromJson=function(h){};Runtime.prototype.byteArrayFromString=function(h,k){};Runtime.prototype.byteArrayToString=function(h,k){};Runtime.prototype.read=function(h,k,c,b){};Runtime.prototype.readFile=function(h,k,c){};Runtime.prototype.readFileSync=function(h,k){};Runtime.prototype.loadXML=function(h,k){};Runtime.prototype.writeFile=function(h,k,c){};
+Runtime.prototype.deleteFile=function(h,k){};Runtime.prototype.log=function(h,k){};Runtime.prototype.setTimeout=function(h,k){};Runtime.prototype.clearTimeout=function(h){};Runtime.prototype.libraryPaths=function(){};Runtime.prototype.currentDirectory=function(){};Runtime.prototype.setCurrentDirectory=function(h){};Runtime.prototype.type=function(){};Runtime.prototype.getDOMImplementation=function(){};Runtime.prototype.parseXML=function(h){};Runtime.prototype.exit=function(h){};
+Runtime.prototype.getWindow=function(){};Runtime.prototype.requestAnimationFrame=function(h){};Runtime.prototype.cancelAnimationFrame=function(h){};Runtime.prototype.assert=function(h,k){};var IS_COMPILED_CODE=!0;
+Runtime.byteArrayToString=function(h,k){function c(b){var c="",m,q=b.length;for(m=0;m<q;m+=1)c+=String.fromCharCode(b[m]&255);return c}function b(b){var c="",m,q=b.length,f=[],e,a,d,r;for(m=3<=q&&239===b[0]&&187===b[1]&&191===b[2]?3:0;m<q;m+=1)e=b[m],128>e?f.push(e):(m+=1,a=b[m],194<=e&&224>e?f.push((e&31)<<6|a&63):(m+=1,d=b[m],224<=e&&240>e?f.push((e&15)<<12|(a&63)<<6|d&63):(m+=1,r=b[m],240<=e&&245>e&&(e=(e&7)<<18|(a&63)<<12|(d&63)<<6|r&63,e-=65536,f.push((e>>10)+55296,(e&1023)+56320))))),1E3<=f.length&&
+(c+=String.fromCharCode.apply(null,f),f.length=0);return c+String.fromCharCode.apply(null,f)}var g;"utf8"===k?g=b(h):("binary"!==k&&this.log("Unsupported encoding: "+k),g=c(h));return g};Runtime.getVariable=function(h){try{return eval(h)}catch(k){}};Runtime.toJson=function(h){return JSON.stringify(h)};Runtime.fromJson=function(h){return JSON.parse(h)};Runtime.getFunctionName=function(h){return void 0===h.name?(h=/function\s+(\w+)/.exec(h))&&h[1]:h.name};
+Runtime.assert=function(h,k){if(!h)throw this.log("alert","ASSERTION FAILED:\n"+k),Error(k);};
+function BrowserRuntime(){function h(b){var f=b.length,e,a,d=0;for(e=0;e<f;e+=1)a=b.charCodeAt(e),d+=1+(128<a)+(2048<a),55040<a&&57344>a&&(d+=1,e+=1);return d}function k(b,f,e){var a=b.length,d,r;f=new Uint8Array(new ArrayBuffer(f));e?(f[0]=239,f[1]=187,f[2]=191,r=3):r=0;for(e=0;e<a;e+=1)d=b.charCodeAt(e),128>d?(f[r]=d,r+=1):2048>d?(f[r]=192|d>>>6,f[r+1]=128|d&63,r+=2):55040>=d||57344<=d?(f[r]=224|d>>>12&15,f[r+1]=128|d>>>6&63,f[r+2]=128|d&63,r+=3):(e+=1,d=(d-55296<<10|b.charCodeAt(e)-56320)+65536,
+f[r]=240|d>>>18&7,f[r+1]=128|d>>>12&63,f[r+2]=128|d>>>6&63,f[r+3]=128|d&63,r+=4);return f}function c(b){var f=b.length,e=new Uint8Array(new ArrayBuffer(f)),a;for(a=0;a<f;a+=1)e[a]=b.charCodeAt(a)&255;return e}function b(b,f){var e;void 0!==f?e=b:f=b;console.log(f);m.enableAlerts&&"alert"===e&&alert(f)}function g(b,f,e){if(0!==e.status||e.responseText)if(200===e.status||0===e.status){if(e.response&&"string"!==typeof e.response)"binary"===f?(e=e.response,e=new Uint8Array(e)):e=String(e.response);else if("binary"===
+f)if(null!==e.responseBody&&"undefined"!==String(typeof VBArray)){e=(new VBArray(e.responseBody)).toArray();var a=e.length;f=new Uint8Array(new ArrayBuffer(a));for(b=0;b<a;b+=1)f[b]=e[b];e=f}else{(b=e.getResponseHeader("Content-Length"))&&(b=parseInt(b,10));if(b&&b!==e.responseText.length)a:{a=e.responseText;f=!1;var d=h(a);if("number"===typeof b){if(b!==d&&b!==d+3){a=void 0;break a}f=d+3===b;d=b}a=k(a,d,f)}void 0===a&&(a=c(e.responseText));e=a}else e=e.responseText;e={err:null,data:e}}else e={err:e.responseText||
+e.statusText,data:null};else e={err:"File "+b+" is empty.",data:null};return e}function n(b,f,e){var a=new XMLHttpRequest;a.open("GET",b,e);a.overrideMimeType&&("binary"!==f?a.overrideMimeType("text/plain; charset="+f):a.overrideMimeType("text/plain; charset=x-user-defined"));return a}function p(b,f,e){var a=n(b,f,!0);a.onreadystatechange=function(){var d;4===a.readyState&&(d=g(b,f,a),e(d.err,d.data))};try{a.send(null)}catch(d){e(d.message,null)}}var m=this;this.byteArrayFromString=function(b,f){var e;
+"utf8"===f?e=k(b,h(b),!1):("binary"!==f&&m.log("unknown encoding: "+f),e=c(b));return e};this.byteArrayToString=Runtime.byteArrayToString;this.getVariable=Runtime.getVariable;this.fromJson=Runtime.fromJson;this.toJson=Runtime.toJson;this.readFile=p;this.read=function(b,f,e,a){p(b,"binary",function(d,r){var l=null;if(r){if("string"===typeof r)throw"This should not happen.";l=r.subarray(f,f+e)}a(d,l)})};this.readFileSync=function(b,f){var e=n(b,f,!1),a;try{e.send(null);a=g(b,f,e);if(a.err)throw a.err;
+if(null===a.data)throw"No data read from "+b+".";}catch(d){throw d;}return a.data};this.writeFile=function(b,f,e){var a=new XMLHttpRequest,d;a.open("PUT",b,!0);a.onreadystatechange=function(){4===a.readyState&&(0!==a.status||a.responseText?200<=a.status&&300>a.status||0===a.status?e(null):e("Status "+String(a.status)+": "+a.responseText||a.statusText):e("File "+b+" is empty."))};d=f.buffer&&!a.sendAsBinary?f.buffer:m.byteArrayToString(f,"binary");try{a.sendAsBinary?a.sendAsBinary(d):a.send(d)}catch(r){m.log("HUH? "+
+r+" "+f),e(r.message)}};this.deleteFile=function(b,f){var e=new XMLHttpRequest;e.open("DELETE",b,!0);e.onreadystatechange=function(){4===e.readyState&&(200>e.status&&300<=e.status?f(e.responseText):f(null))};e.send(null)};this.loadXML=function(b,f){var e=new XMLHttpRequest;e.open("GET",b,!0);e.overrideMimeType&&e.overrideMimeType("text/xml");e.onreadystatechange=function(){4===e.readyState&&(0!==e.status||e.responseText?200===e.status||0===e.status?f(null,e.responseXML):f(e.responseText,null):f("File "+
+b+" is empty.",null))};try{e.send(null)}catch(a){f(a.message,null)}};this.log=b;this.enableAlerts=!0;this.assert=Runtime.assert;this.setTimeout=function(b,f){return setTimeout(function(){b()},f)};this.clearTimeout=function(b){clearTimeout(b)};this.libraryPaths=function(){return["lib"]};this.setCurrentDirectory=function(){};this.currentDirectory=function(){return""};this.type=function(){return"BrowserRuntime"};this.getDOMImplementation=function(){return window.document.implementation};this.parseXML=
+function(b){return(new DOMParser).parseFromString(b,"text/xml")};this.exit=function(c){b("Calling exit with code "+String(c)+", but exit() is not implemented.")};this.getWindow=function(){return window};this.requestAnimationFrame=function(b){var f=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame,e=0;if(f)f.bind(window),e=f(b);else return setTimeout(b,15);return e};this.cancelAnimationFrame=function(b){var f=window.cancelAnimationFrame||
+window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.msCancelAnimationFrame;f?(f.bind(window),f(b)):clearTimeout(b)}}
+function NodeJSRuntime(){function h(b){var f=b.length,e,a=new Uint8Array(new ArrayBuffer(f));for(e=0;e<f;e+=1)a[e]=b[e];return a}function k(c,f,e){function a(a,r){if(a)return e(a,null);if(!r)return e("No data for "+c+".",null);if("string"===typeof r)return e(a,r);e(a,h(r))}c=g.resolve(n,c);"binary"!==f?b.readFile(c,f,a):b.readFile(c,null,a)}var c=this,b=require("fs"),g=require("path"),n="",p,m;this.byteArrayFromString=function(b,f){var e=new Buffer(b,f),a,d=e.length,r=new Uint8Array(new ArrayBuffer(d));
+for(a=0;a<d;a+=1)r[a]=e[a];return r};this.byteArrayToString=Runtime.byteArrayToString;this.getVariable=Runtime.getVariable;this.fromJson=Runtime.fromJson;this.toJson=Runtime.toJson;this.readFile=k;this.loadXML=function(b,f){k(b,"utf-8",function(e,a){if(e)return f(e,null);if(!a)return f("No data for "+b+".",null);f(null,c.parseXML(a))})};this.writeFile=function(c,f,e){f=new Buffer(f);c=g.resolve(n,c);b.writeFile(c,f,"binary",function(a){e(a||null)})};this.deleteFile=function(c,f){c=g.resolve(n,c);
+b.unlink(c,f)};this.read=function(c,f,e,a){c=g.resolve(n,c);b.open(c,"r+",666,function(d,r){if(d)a(d,null);else{var l=new Buffer(e);b.read(r,l,0,e,f,function(d){b.close(r);a(d,h(l))})}})};this.readFileSync=function(c,f){var e;e=b.readFileSync(c,"binary"===f?null:f);if(null===e)throw"File "+c+" could not be read.";"binary"===f&&(e=h(e));return e};this.log=function(b,c){var e;void 0!==c?e=b:c=b;"alert"===e&&process.stderr.write("\n!!!!! ALERT !!!!!\n");process.stderr.write(c+"\n");"alert"===e&&process.stderr.write("!!!!! ALERT !!!!!\n")};
+this.assert=Runtime.assert;this.setTimeout=function(b,c){return setTimeout(function(){b()},c)};this.clearTimeout=function(b){clearTimeout(b)};this.libraryPaths=function(){return[__dirname]};this.setCurrentDirectory=function(b){n=b};this.currentDirectory=function(){return n};this.type=function(){return"NodeJSRuntime"};this.getDOMImplementation=function(){return m};this.parseXML=function(b){return p.parseFromString(b,"text/xml")};this.exit=process.exit;this.getWindow=function(){return null};this.requestAnimationFrame=
+function(b){return setTimeout(b,15)};this.cancelAnimationFrame=function(b){clearTimeout(b)};p=new (require("xmldom").DOMParser);m=c.parseXML("<a/>").implementation}
+function RhinoRuntime(){var h=this,k={},c=k.javax.xml.parsers.DocumentBuilderFactory.newInstance(),b,g,n="";c.setValidating(!1);c.setNamespaceAware(!0);c.setExpandEntityReferences(!1);c.setSchema(null);g=k.org.xml.sax.EntityResolver({resolveEntity:function(b,c){var g=new k.java.io.FileReader(c);return new k.org.xml.sax.InputSource(g)}});b=c.newDocumentBuilder();b.setEntityResolver(g);this.byteArrayFromString=function(b,c){var g,f=b.length,e=new Uint8Array(new ArrayBuffer(f));for(g=0;g<f;g+=1)e[g]=
+b.charCodeAt(g)&255;return e};this.byteArrayToString=Runtime.byteArrayToString;this.getVariable=Runtime.getVariable;this.fromJson=Runtime.fromJson;this.toJson=Runtime.toJson;this.loadXML=function(c,m){var g=new k.java.io.File(c),f=null;try{f=b.parse(g)}catch(e){return print(e),m(e,null)}m(null,f)};this.readFile=function(b,c,g){n&&(b=n+"/"+b);var f=new k.java.io.File(b),e="binary"===c?"latin1":c;f.isFile()?((b=readFile(b,e))&&"binary"===c&&(b=h.byteArrayFromString(b,"binary")),g(null,b)):g(b+" is not a file.",
+null)};this.writeFile=function(b,c,g){n&&(b=n+"/"+b);b=new k.java.io.FileOutputStream(b);var f,e=c.length;for(f=0;f<e;f+=1)b.write(c[f]);b.close();g(null)};this.deleteFile=function(b,c){n&&(b=n+"/"+b);var g=new k.java.io.File(b),f=b+Math.random(),f=new k.java.io.File(f);g.rename(f)?(f.deleteOnExit(),c(null)):c("Could not delete "+b)};this.read=function(b,c,g,f){n&&(b=n+"/"+b);var e;e=b;var a="binary";(new k.java.io.File(e)).isFile()?("binary"===a&&(a="latin1"),e=readFile(e,a)):e=null;e?f(null,this.byteArrayFromString(e.substring(c,
+c+g),"binary")):f("Cannot read "+b,null)};this.readFileSync=function(b,c){if(!c)return"";var g=readFile(b,c);if(null===g)throw"File could not be read.";return g};this.log=function(b,c){var g;void 0!==c?g=b:c=b;"alert"===g&&print("\n!!!!! ALERT !!!!!");print(c);"alert"===g&&print("!!!!! ALERT !!!!!")};this.assert=Runtime.assert;this.setTimeout=function(b){b();return 0};this.clearTimeout=function(){};this.libraryPaths=function(){return["lib"]};this.setCurrentDirectory=function(b){n=b};this.currentDirectory=
+function(){return n};this.type=function(){return"RhinoRuntime"};this.getDOMImplementation=function(){return b.getDOMImplementation()};this.parseXML=function(c){c=new k.java.io.StringReader(c);c=new k.org.xml.sax.InputSource(c);return b.parse(c)};this.exit=quit;this.getWindow=function(){return null};this.requestAnimationFrame=function(b){b();return 0};this.cancelAnimationFrame=function(){}}
+Runtime.create=function(){return"undefined"!==String(typeof window)?new BrowserRuntime:"undefined"!==String(typeof require)?new NodeJSRuntime:new RhinoRuntime};var runtime=Runtime.create(),core={},gui={},xmldom={},odf={},ops={},webodf={};(function(){webodf.Version="undefined"!==String(typeof webodf_version)?webodf_version:"From Source"})();
+(function(){function h(b,c,f){var e=b+"/manifest.json",a,d;runtime.log("Loading manifest: "+e);try{a=runtime.readFileSync(e,"utf-8")}catch(r){if(f)runtime.log("No loadable manifest found.");else throw console.log(String(r)),r;return}f=JSON.parse(a);for(d in f)f.hasOwnProperty(d)&&(c[d]={dir:b,deps:f[d]})}function k(b,c,f){function e(l){if(!r[l]&&!f(l)){if(d[l])throw"Circular dependency detected for "+l+".";d[l]=!0;if(!c[l])throw"Missing dependency information for class "+l+".";var b=c[l],g=b.deps,
+m,n=g.length;for(m=0;m<n;m+=1)e(g[m]);d[l]=!1;r[l]=!0;a.push(b.dir+"/"+l.replace(".","/")+".js")}}var a=[],d={},r={};b.forEach(e);return a}function c(b,c){return c+("\n//# sourceURL="+b)}function b(b){var g,f;for(g=0;g<b.length;g+=1)f=runtime.readFileSync(b[g],"utf-8"),f=c(b[g],f),eval(f)}function g(b){b=b.split(".");var c,f=p,e=b.length;for(c=0;c<e;c+=1){if(!f.hasOwnProperty(b[c]))return!1;f=f[b[c]]}return!0}var n,p={core:core,gui:gui,xmldom:xmldom,odf:odf,ops:ops};runtime.loadClasses=function(c,
+p){if(IS_COMPILED_CODE||0===c.length)return p&&p();var f;if(!(f=n)){f=[];var e=runtime.libraryPaths(),a;runtime.currentDirectory()&&-1===e.indexOf(runtime.currentDirectory())&&h(runtime.currentDirectory(),f,!0);for(a=0;a<e.length;a+=1)h(e[a],f)}n=f;c=k(c,n,g);if(0===c.length)return p&&p();if("BrowserRuntime"===runtime.type()&&p){f=c;e=document.currentScript||document.documentElement.lastChild;a=document.createDocumentFragment();var d,r;for(r=0;r<f.length;r+=1)d=document.createElement("script"),d.type=
+"text/javascript",d.charset="utf-8",d.async=!1,d.setAttribute("src",f[r]),a.appendChild(d);p&&(d.onload=p);e.parentNode.insertBefore(a,e)}else b(c),p&&p()};runtime.loadClass=function(b,c){runtime.loadClasses([b],c)}})();(function(){var h=function(h){return h};runtime.getTranslator=function(){return h};runtime.setTranslator=function(k){h=k};runtime.tr=function(k){var c=h(k);return c&&"string"===String(typeof c)?c:k}})();
+(function(h){function k(c){if(c.length){var b=c[0];runtime.readFile(b,"utf8",function(g,n){function p(){var b;(b=eval(h))&&runtime.exit(b)}var m="",m=b.lastIndexOf("/"),h=n,m=-1!==m?b.substring(0,m):".";runtime.setCurrentDirectory(m);g?(runtime.log(g),runtime.exit(1)):null===h?(runtime.log("No code found for "+b),runtime.exit(1)):p.apply(null,c)})}}h=h?Array.prototype.slice.call(h):[];"NodeJSRuntime"===runtime.type()?k(process.argv.slice(2)):"RhinoRuntime"===runtime.type()?k(h):k(h.slice(1))})("undefined"!==
+String(typeof arguments)&&arguments);(function(){core.Async=function(){return{forEach:function(h,k,c){function b(b){p!==n&&(b?(p=n,c(b)):(p+=1,p===n&&c(null)))}var g,n=h.length,p=0;for(g=0;g<n;g+=1)k(h[g],b)},destroyAll:function(h,k){function c(b,g){if(g)k(g);else if(b<h.length)h[b](function(g){c(b+1,g)});else k()}c(0,void 0)}}}()})();function makeBase64(){function h(a){var d,l=a.length,r=new Uint8Array(new ArrayBuffer(l));for(d=0;d<l;d+=1)r[d]=a.charCodeAt(d)&255;return r}function k(a){var d,l="",r,b=a.length-2;for(r=0;r<b;r+=3)d=a[r]<<16|a[r+1]<<8|a[r+2],l+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[d>>>18],l+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[d>>>12&63],l+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[d>>>6&63],l+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[d&
+63];r===b+1?(d=a[r]<<4,l+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[d>>>6],l+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[d&63],l+="=="):r===b&&(d=a[r]<<10|a[r+1]<<2,l+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[d>>>12],l+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[d>>>6&63],l+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[d&63],l+="=");return l}function c(a){a=a.replace(/[^A-Za-z0-9+\/]+/g,
+"");var d=a.length,r=new Uint8Array(new ArrayBuffer(3*d)),b=a.length%4,c=0,e,f;for(e=0;e<d;e+=4)f=(l[a.charAt(e)]||0)<<18|(l[a.charAt(e+1)]||0)<<12|(l[a.charAt(e+2)]||0)<<6|(l[a.charAt(e+3)]||0),r[c]=f>>16,r[c+1]=f>>8&255,r[c+2]=f&255,c+=3;d=3*d-[0,0,2,1][b];return r.subarray(0,d)}function b(a){var d,l,r=a.length,b=0,c=new Uint8Array(new ArrayBuffer(3*r));for(d=0;d<r;d+=1)l=a[d],128>l?c[b++]=l:(2048>l?c[b++]=192|l>>>6:(c[b++]=224|l>>>12&15,c[b++]=128|l>>>6&63),c[b++]=128|l&63);return c.subarray(0,
+b)}function g(a){var d,l,r,b,c=a.length,e=new Uint8Array(new ArrayBuffer(c)),f=0;for(d=0;d<c;d+=1)l=a[d],128>l?e[f++]=l:(d+=1,r=a[d],224>l?e[f++]=(l&31)<<6|r&63:(d+=1,b=a[d],e[f++]=(l&15)<<12|(r&63)<<6|b&63));return e.subarray(0,f)}function n(a){return k(h(a))}function p(a){return String.fromCharCode.apply(String,c(a))}function m(a){return g(h(a))}function q(a){a=g(a);for(var d="",l=0;l<a.length;)d+=String.fromCharCode.apply(String,a.subarray(l,l+45E3)),l+=45E3;return d}function f(a,d,l){var r,b,
+c,e="";for(c=d;c<l;c+=1)d=a.charCodeAt(c)&255,128>d?e+=String.fromCharCode(d):(c+=1,r=a.charCodeAt(c)&255,224>d?e+=String.fromCharCode((d&31)<<6|r&63):(c+=1,b=a.charCodeAt(c)&255,e+=String.fromCharCode((d&15)<<12|(r&63)<<6|b&63)));return e}function e(a,d){function l(){var c=b+1E5;c>a.length&&(c=a.length);r+=f(a,b,c);b=c;c=b===a.length;d(r,c)&&!c&&runtime.setTimeout(l,0)}var r="",b=0;1E5>a.length?d(f(a,0,a.length),!0):("string"!==typeof a&&(a=a.slice()),l())}function a(a){return b(h(a))}function d(a){return String.fromCharCode.apply(String,
+b(a))}function r(a){return String.fromCharCode.apply(String,b(h(a)))}var l=function(a){var d={},l,r;l=0;for(r=a.length;l<r;l+=1)d[a.charAt(l)]=l;return d}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),B,y,D=runtime.getWindow(),z,t;D&&D.btoa?(z=D.btoa,B=function(a){return z(r(a))}):(z=n,B=function(d){return k(a(d))});D&&D.atob?(t=D.atob,y=function(a){a=t(a);return f(a,0,a.length)}):(t=p,y=function(a){return q(c(a))});core.Base64=function(){this.convertByteArrayToBase64=this.convertUTF8ArrayToBase64=
+k;this.convertBase64ToByteArray=this.convertBase64ToUTF8Array=c;this.convertUTF16ArrayToByteArray=this.convertUTF16ArrayToUTF8Array=b;this.convertByteArrayToUTF16Array=this.convertUTF8ArrayToUTF16Array=g;this.convertUTF8StringToBase64=n;this.convertBase64ToUTF8String=p;this.convertUTF8StringToUTF16Array=m;this.convertByteArrayToUTF16String=this.convertUTF8ArrayToUTF16String=q;this.convertUTF8StringToUTF16String=e;this.convertUTF16StringToByteArray=this.convertUTF16StringToUTF8Array=a;this.convertUTF16ArrayToUTF8String=
+d;this.convertUTF16StringToUTF8String=r;this.convertUTF16StringToBase64=B;this.convertBase64ToUTF16String=y;this.fromBase64=p;this.toBase64=n;this.atob=t;this.btoa=z;this.utob=r;this.btou=e;this.encode=B;this.encodeURI=function(a){return B(a).replace(/[+\/]/g,function(a){return"+"===a?"-":"_"}).replace(/\\=+$/,"")};this.decode=function(a){return y(a.replace(/[\-_]/g,function(a){return"-"===a?"+":"/"}))};return this};return core.Base64}core.Base64=makeBase64();core.ByteArray=function(h){this.pos=0;this.data=h;this.readUInt32LE=function(){this.pos+=4;var h=this.data,c=this.pos;return h[--c]<<24|h[--c]<<16|h[--c]<<8|h[--c]};this.readUInt16LE=function(){this.pos+=2;var h=this.data,c=this.pos;return h[--c]<<8|h[--c]}};core.ByteArrayWriter=function(h){function k(c){c>g-b&&(g=Math.max(2*g,b+c),c=new Uint8Array(new ArrayBuffer(g)),c.set(n),n=c)}var c=this,b=0,g=1024,n=new Uint8Array(new ArrayBuffer(g));this.appendByteArrayWriter=function(b){c.appendByteArray(b.getByteArray())};this.appendByteArray=function(c){var g=c.length;k(g);n.set(c,b);b+=g};this.appendArray=function(c){var g=c.length;k(g);n.set(c,b);b+=g};this.appendUInt16LE=function(b){c.appendArray([b&255,b>>8&255])};this.appendUInt32LE=function(b){c.appendArray([b&
+255,b>>8&255,b>>16&255,b>>24&255])};this.appendString=function(b){c.appendByteArray(runtime.byteArrayFromString(b,h))};this.getLength=function(){return b};this.getByteArray=function(){var c=new Uint8Array(new ArrayBuffer(b));c.set(n.subarray(0,b));return c}};core.CSSUnits=function(){var h=this,k={"in":1,cm:2.54,mm:25.4,pt:72,pc:12,px:96};this.convert=function(c,b,g){return c*k[g]/k[b]};this.convertMeasure=function(c,b){var g,n;c&&b&&(g=parseFloat(c),n=c.replace(g.toString(),""),g=h.convert(g,n,b));return g};this.getUnits=function(c){return c.substr(c.length-2,c.length)}};(function(){function h(){var b,g,n,h,m,k,f,e,a;void 0===c&&(g=(b=runtime.getWindow())&&b.document,k=g.documentElement,f=g.body,c={rangeBCRIgnoresElementBCR:!1,unscaledRangeClientRects:!1,elementBCRIgnoresBodyScroll:!1},g&&(h=g.createElement("div"),h.style.position="absolute",h.style.left="-99999px",h.style.transform="scale(2)",h.style["-webkit-transform"]="scale(2)",m=g.createElement("div"),h.appendChild(m),f.appendChild(h),b=g.createRange(),b.selectNode(m),c.rangeBCRIgnoresElementBCR=0===b.getClientRects().length,
+m.appendChild(g.createTextNode("Rect transform test")),g=m.getBoundingClientRect(),n=b.getBoundingClientRect(),c.unscaledRangeClientRects=2<Math.abs(g.height-n.height),h.style.transform="",h.style["-webkit-transform"]="",g=k.style.overflow,n=f.style.overflow,e=f.style.height,a=f.scrollTop,k.style.overflow="visible",f.style.overflow="visible",f.style.height="200%",f.scrollTop=f.scrollHeight,c.elementBCRIgnoresBodyScroll=b.getBoundingClientRect().top!==m.getBoundingClientRect().top,f.scrollTop=a,f.style.height=
+e,f.style.overflow=n,k.style.overflow=g,b.detach(),f.removeChild(h),b=Object.keys(c).map(function(a){return a+":"+String(c[a])}).join(", "),runtime.log("Detected browser quirks - "+b)));return c}function k(b,c,n){for(b=b?b.firstElementChild:null;b;){if(b.localName===n&&b.namespaceURI===c)return b;b=b.nextElementSibling}return null}var c;core.DomUtilsImpl=function(){function b(a,d){for(var b=0,c;a.parentNode!==d;)runtime.assert(null!==a.parentNode,"parent is null"),a=a.parentNode;for(c=d.firstChild;c!==
+a;)b+=1,c=c.nextSibling;return b}function c(a,d){return 0>=a.compareBoundaryPoints(Range.START_TO_START,d)&&0<=a.compareBoundaryPoints(Range.END_TO_END,d)}function n(a,d){return 0>=a.compareBoundaryPoints(Range.END_TO_START,d)&&0<=a.compareBoundaryPoints(Range.START_TO_END,d)}function p(a,d){var b=null;a.nodeType===Node.TEXT_NODE&&(0===a.length?(a.parentNode.removeChild(a),d.nodeType===Node.TEXT_NODE&&(b=d)):(d.nodeType===Node.TEXT_NODE&&(a.appendData(d.data),d.parentNode.removeChild(d)),b=a));return b}
+function m(a){for(var d=a.parentNode;a.firstChild;)d.insertBefore(a.firstChild,a);d.removeChild(a);return d}function q(a,d){var b=a.parentNode,c=a.firstChild,e=d(a),f;if(e===NodeFilter.FILTER_SKIP)return b;for(;c;)f=c.nextSibling,q(c,d),c=f;b&&e===NodeFilter.FILTER_REJECT&&m(a);return b}function f(a,d){return a===d||Boolean(a.compareDocumentPosition(d)&Node.DOCUMENT_POSITION_CONTAINED_BY)}function e(a,d){return h().unscaledRangeClientRects?a:a/d}function a(d,l,b){Object.keys(l).forEach(function(c){var e=
+c.split(":"),f=e[1],g=b(e[0]),e=l[c],n=typeof e;"object"===n?Object.keys(e).length&&(c=g?d.getElementsByTagNameNS(g,f)[0]||d.ownerDocument.createElementNS(g,c):d.getElementsByTagName(f)[0]||d.ownerDocument.createElement(c),d.appendChild(c),a(c,e,b)):g&&(runtime.assert("number"===n||"string"===n,"attempting to map unsupported type '"+n+"' (key: "+c+")"),d.setAttributeNS(g,c,String(e)))})}var d=null;this.splitBoundaries=function(a){var d,c=[],e,f,g;if(a.startContainer.nodeType===Node.TEXT_NODE||a.endContainer.nodeType===
+Node.TEXT_NODE){e=a.endContainer;f=a.endContainer.nodeType!==Node.TEXT_NODE?a.endOffset===a.endContainer.childNodes.length:!1;g=a.endOffset;d=a.endContainer;if(g<d.childNodes.length)for(d=d.childNodes.item(g),g=0;d.firstChild;)d=d.firstChild;else for(;d.lastChild;)d=d.lastChild,g=d.nodeType===Node.TEXT_NODE?d.textContent.length:d.childNodes.length;d===e&&(e=null);a.setEnd(d,g);g=a.endContainer;0!==a.endOffset&&g.nodeType===Node.TEXT_NODE&&(d=g,a.endOffset!==d.length&&(c.push(d.splitText(a.endOffset)),
+c.push(d)));g=a.startContainer;0!==a.startOffset&&g.nodeType===Node.TEXT_NODE&&(d=g,a.startOffset!==d.length&&(g=d.splitText(a.startOffset),c.push(d),c.push(g),a.setStart(g,0)));if(null!==e){for(g=a.endContainer;g.parentNode&&g.parentNode!==e;)g=g.parentNode;f=f?e.childNodes.length:b(g,e);a.setEnd(e,f)}}return c};this.containsRange=c;this.rangesIntersect=n;this.rangeIntersection=function(a,d){var b;n(a,d)&&(b=a.cloneRange(),-1===a.compareBoundaryPoints(Range.START_TO_START,d)&&b.setStart(d.startContainer,
+d.startOffset),1===a.compareBoundaryPoints(Range.END_TO_END,d)&&b.setEnd(d.endContainer,d.endOffset));return b};this.getNodesInRange=function(a,d,b){var c=[],e=a.commonAncestorContainer,e=e.nodeType===Node.TEXT_NODE?e.parentNode:e;b=a.startContainer.ownerDocument.createTreeWalker(e,b,d,!1);var f,g;a.endContainer.childNodes[a.endOffset-1]?(f=a.endContainer.childNodes[a.endOffset-1],g=Node.DOCUMENT_POSITION_PRECEDING|Node.DOCUMENT_POSITION_CONTAINED_BY):(f=a.endContainer,g=Node.DOCUMENT_POSITION_PRECEDING);
+if(a.startContainer.childNodes[a.startOffset])a=a.startContainer.childNodes[a.startOffset],b.currentNode=a;else{var n=a.startContainer;a.startOffset===(n.nodeType===Node.TEXT_NODE?n.length:n.childNodes.length)?(a=a.startContainer,b.currentNode=a,b.lastChild(),a=b.nextNode()):(a=a.startContainer,b.currentNode=a)}if(a){a=b.currentNode;if(a!==e)for(a=a.parentNode;a&&a!==e;)d(a)===NodeFilter.FILTER_REJECT&&(b.currentNode=a),a=a.parentNode;a=b.currentNode;switch(d(a)){case NodeFilter.FILTER_REJECT:for(a=
+b.nextSibling();!a&&b.parentNode();)a=b.nextSibling();break;case NodeFilter.FILTER_SKIP:a=b.nextNode()}for(;a;){d=f.compareDocumentPosition(a);if(0!==d&&0===(d&g))break;c.push(a);a=b.nextNode()}}return c};this.normalizeTextNodes=function(a){a&&a.nextSibling&&(a=p(a,a.nextSibling));a&&a.previousSibling&&p(a.previousSibling,a)};this.rangeContainsNode=function(a,d){var b=d.ownerDocument.createRange(),e=d.ownerDocument.createRange(),f;b.setStart(a.startContainer,a.startOffset);b.setEnd(a.endContainer,
+a.endOffset);e.selectNodeContents(d);f=c(b,e);b.detach();e.detach();return f};this.mergeIntoParent=m;this.removeUnwantedNodes=q;this.removeAllChildNodes=function(a){for(;a.firstChild;)a.removeChild(a.firstChild)};this.getElementsByTagNameNS=function(a,d,b){var c=[];a=a.getElementsByTagNameNS(d,b);c.length=b=a.length;for(d=0;d<b;d+=1)c[d]=a.item(d);return c};this.getElementsByTagName=function(a,d){var b=[],c,e,f;c=a.getElementsByTagName(d);b.length=f=c.length;for(e=0;e<f;e+=1)b[e]=c.item(e);return b};
+this.containsNode=function(a,d){return a===d||a.contains(d)};this.comparePoints=function(a,d,c,e){if(a===c)return e-d;var f=a.compareDocumentPosition(c);2===f?f=-1:4===f?f=1:10===f?(d=b(a,c),f=d<e?1:-1):(e=b(c,a),f=e<d?-1:1);return f};this.adaptRangeDifferenceToZoomLevel=e;this.translateRect=function(a,d,b){return{top:e(a.top-d.top,b),left:e(a.left-d.left,b),bottom:e(a.bottom-d.top,b),right:e(a.right-d.left,b),width:e(a.width,b),height:e(a.height,b)}};this.getBoundingClientRect=function(a){var b=
+a.ownerDocument,c=h(),e=b.body;if((!1===c.unscaledRangeClientRects||c.rangeBCRIgnoresElementBCR)&&a.nodeType===Node.ELEMENT_NODE)return a=a.getBoundingClientRect(),c.elementBCRIgnoresBodyScroll?{left:a.left+e.scrollLeft,right:a.right+e.scrollLeft,top:a.top+e.scrollTop,bottom:a.bottom+e.scrollTop,width:a.width,height:a.height}:a;var f;d?f=d:d=f=b.createRange();c=f;c.selectNode(a);return c.getBoundingClientRect()};this.mapKeyValObjOntoNode=function(a,d,b){Object.keys(d).forEach(function(c){var e=c.split(":"),
+f=e[1],e=b(e[0]),g=d[c];e?(f=a.getElementsByTagNameNS(e,f)[0],f||(f=a.ownerDocument.createElementNS(e,c),a.appendChild(f)),f.textContent=g):runtime.log("Key ignored: "+c)})};this.removeKeyElementsFromNode=function(a,d,b){d.forEach(function(d){var l=d.split(":"),c=l[1];(l=b(l[0]))?(c=a.getElementsByTagNameNS(l,c)[0])?c.parentNode.removeChild(c):runtime.log("Element for "+d+" not found."):runtime.log("Property Name ignored: "+d)})};this.getKeyValRepresentationOfNode=function(a,d){for(var b={},c=a.firstElementChild,
+e;c;){if(e=d(c.namespaceURI))b[e+":"+c.localName]=c.textContent;c=c.nextElementSibling}return b};this.mapObjOntoNode=a;this.cloneEvent=function(a){var d=Object.create(null);Object.keys(a).forEach(function(b){d[b]=a[b]});d.prototype=a.constructor.prototype;return d};this.getDirectChild=k;(function(a){var d,b;b=runtime.getWindow();null!==b&&(d=b.navigator.appVersion.toLowerCase(),b=-1===d.indexOf("chrome")&&(-1!==d.indexOf("applewebkit")||-1!==d.indexOf("safari")),d=-1!==d.indexOf("msie")||-1!==d.indexOf("trident"),
+b||d)&&(a.containsNode=f)})(this)};core.DomUtils=new core.DomUtilsImpl})();core.Cursor=function(h,k){function c(a){a.parentNode&&(m.push(a.previousSibling),m.push(a.nextSibling),a.parentNode.removeChild(a))}function b(a,d,b){if(d.nodeType===Node.TEXT_NODE){runtime.assert(Boolean(d),"putCursorIntoTextNode: invalid container");var l=d.parentNode;runtime.assert(Boolean(l),"putCursorIntoTextNode: container without parent");runtime.assert(0<=b&&b<=d.length,"putCursorIntoTextNode: offset is out of bounds");0===b?l.insertBefore(a,d):(b!==d.length&&d.splitText(b),l.insertBefore(a,
+d.nextSibling))}else d.nodeType===Node.ELEMENT_NODE&&d.insertBefore(a,d.childNodes.item(b));m.push(a.previousSibling);m.push(a.nextSibling)}var g=h.createElementNS("urn:webodf:names:cursor","cursor"),n=h.createElementNS("urn:webodf:names:cursor","anchor"),p,m=[],q=h.createRange(),f,e=core.DomUtils;this.getNode=function(){return g};this.getAnchorNode=function(){return n.parentNode?n:g};this.getSelectedRange=function(){f?(q.setStartBefore(g),q.collapse(!0)):(q.setStartAfter(p?n:g),q.setEndBefore(p?
+g:n));return q};this.setSelectedRange=function(a,d){q&&q!==a&&q.detach();q=a;p=!1!==d;(f=a.collapsed)?(c(n),c(g),b(g,a.startContainer,a.startOffset)):(c(n),c(g),b(p?g:n,a.endContainer,a.endOffset),b(p?n:g,a.startContainer,a.startOffset));m.forEach(e.normalizeTextNodes);m.length=0};this.hasForwardSelection=function(){return p};this.remove=function(){c(g);m.forEach(e.normalizeTextNodes);m.length=0};g.setAttributeNS("urn:webodf:names:cursor","memberId",k);n.setAttributeNS("urn:webodf:names:cursor","memberId",
+k)};core.Destroyable=function(){};core.Destroyable.prototype.destroy=function(h){};core.EventSource=function(){};core.EventSource.prototype.subscribe=function(h,k){};core.EventSource.prototype.unsubscribe=function(h,k){};core.EventNotifier=function(h){function k(b){runtime.assert(!c.hasOwnProperty(b),'Duplicated event ids: "'+b+'" registered more than once.');c[b]=[]}var c={};this.emit=function(b,g){var n,h;runtime.assert(c.hasOwnProperty(b),'unknown event fired "'+b+'"');h=c[b];for(n=0;n<h.length;n+=1)h[n](g)};this.subscribe=function(b,g){runtime.assert(c.hasOwnProperty(b),'tried to subscribe to unknown event "'+b+'"');c[b].push(g)};this.unsubscribe=function(b,g){var n;runtime.assert(c.hasOwnProperty(b),'tried to unsubscribe from unknown event "'+
+b+'"');n=c[b].indexOf(g);runtime.assert(-1!==n,'tried to unsubscribe unknown callback from event "'+b+'"');-1!==n&&c[b].splice(n,1)};this.register=k;h&&h.forEach(k)};core.ScheduledTask=function(h,k,c){function b(){p&&(c(n),p=!1)}function g(){b();h.apply(void 0,m);m=null}var n,p=!1,m=[],q=!1;this.trigger=function(){runtime.assert(!1===q,"Can't trigger destroyed ScheduledTask instance");m=Array.prototype.slice.call(arguments);p||(p=!0,n=k(g))};this.triggerImmediate=function(){runtime.assert(!1===q,"Can't trigger destroyed ScheduledTask instance");m=Array.prototype.slice.call(arguments);g()};this.processRequests=function(){p&&g()};this.cancel=b;this.restart=function(){runtime.assert(!1===
+q,"Can't trigger destroyed ScheduledTask instance");b();p=!0;n=k(g)};this.destroy=function(c){b();q=!0;c()}};(function(){var h;core.Task={};core.Task.SUPPRESS_MANUAL_PROCESSING=!1;core.Task.processTasks=function(){core.Task.SUPPRESS_MANUAL_PROCESSING||h.performRedraw()};core.Task.createRedrawTask=function(k){return new core.ScheduledTask(k,h.requestRedrawTask,h.cancelRedrawTask)};core.Task.createTimeoutTask=function(h,c){return new core.ScheduledTask(h,function(b){return runtime.setTimeout(b,c)},runtime.clearTimeout)};h=new function(){var h={};this.requestRedrawTask=function(c){var b=runtime.requestAnimationFrame(function(){c();
+delete h[b]});h[b]=c;return b};this.performRedraw=function(){Object.keys(h).forEach(function(c){h[c]();runtime.cancelAnimationFrame(parseInt(c,10))});h={}};this.cancelRedrawTask=function(c){runtime.cancelAnimationFrame(c);delete h[c]}}})();core.EventSubscriptions=function(){function h(b,g,n){b.subscribe(g,n);c.push({eventSource:b,eventid:g,callback:n})}function k(){var n=[];c.forEach(function(b){b.eventSource.unsubscribe(b.eventid,b.callback)});c.length=0;Object.keys(g).forEach(function(b){g[b].forEach(function(b){n.push(b.task.destroy)});delete g[b]});core.Async.destroyAll(n,function(){});b=new core.EventNotifier}var c=[],b=new core.EventNotifier,g={},n=0;this.addSubscription=h;this.addFrameSubscription=function(c,m,k){var f,e,a,d;
+g.hasOwnProperty(m)||(g[m]=[]);a=g[m];for(d=0;d<a.length;d+=1)if(a[d].eventSource===c){f=a[d];break}f||(e="s"+n,n+=1,b.register(e),f={frameEventId:e,eventSource:c,task:core.Task.createRedrawTask(function(){b.emit(e,void 0)})},a.push(f),h(c,m,f.task.trigger));b.subscribe(f.frameEventId,k)};this.unsubscribeAll=k;this.destroy=function(b){k();b()}};core.LazyProperty=function(h){var k,c=!1;this.value=function(){c||(k=h(),c=!0);return k};this.reset=function(){c=!1}};core.LoopWatchDog=function(h,k){var c=Date.now(),b=0;this.check=function(){var g;if(h&&(g=Date.now(),g-c>h))throw runtime.log("alert","watchdog timeout"),"timeout!";if(0<k&&(b+=1,b>k))throw runtime.log("alert","watchdog loop overflow"),"loop overflow";}};core.NodeFilterChain=function(h){var k=NodeFilter.FILTER_REJECT,c=NodeFilter.FILTER_ACCEPT;this.acceptNode=function(b){var g;for(g=0;g<h.length;g+=1)if(h[g].acceptNode(b)===k)return k;return c}};core.PositionIterator=function(h,k,c,b){function g(){this.acceptNode=function(a){return!a||a.nodeType===r&&0===a.length?y:B}}function n(a){this.acceptNode=function(d){return!d||d.nodeType===r&&0===d.length?y:a.acceptNode(d)}}function p(){var d=e.currentNode,b=d.nodeType;a=b===r?d.length-1:b===l?1:0}function m(){if(null===e.previousSibling()){if(!e.parentNode()||e.currentNode===h)return e.firstChild(),!1;a=0}else p();return!0}function q(){var b=e.currentNode,l;l=d(b);if(b!==h)for(b=b.parentNode;b&&
+b!==h;)d(b)===y&&(e.currentNode=b,l=y),b=b.parentNode;l===y?(a=e.currentNode.nodeType===r?b.length:1,b=f.nextPosition()):b=l===B?!0:f.nextPosition();b&&runtime.assert(d(e.currentNode)===B,"moveToAcceptedNode did not result in walker being on an accepted node");return b}var f=this,e,a,d,r=Node.TEXT_NODE,l=Node.ELEMENT_NODE,B=NodeFilter.FILTER_ACCEPT,y=NodeFilter.FILTER_REJECT;this.nextPosition=function(){var d=e.currentNode,b=d.nodeType;if(d===h)return!1;if(0===a&&b===l)null===e.firstChild()&&(a=1);
+else if(b===r&&a+1<d.length)a+=1;else if(null!==e.nextSibling())a=0;else if(e.parentNode())a=1;else return!1;return!0};this.previousPosition=function(){var d=!0,b=e.currentNode;0===a?d=m():b.nodeType===r?--a:null!==e.lastChild()?p():b===h?d=!1:a=0;return d};this.previousNode=m;this.container=function(){var d=e.currentNode,b=d.nodeType;0===a&&b!==r&&(d=d.parentNode);return d};this.rightNode=function(){var b=e.currentNode,c=b.nodeType;if(c===r&&a===b.length)for(b=b.nextSibling;b&&d(b)!==B;)b=b.nextSibling;
+else c===l&&1===a&&(b=null);return b};this.leftNode=function(){var b=e.currentNode;if(0===a)for(b=b.previousSibling;b&&d(b)!==B;)b=b.previousSibling;else if(b.nodeType===l)for(b=b.lastChild;b&&d(b)!==B;)b=b.previousSibling;return b};this.getCurrentNode=function(){return e.currentNode};this.unfilteredDomOffset=function(){if(e.currentNode.nodeType===r)return a;for(var d=0,b=e.currentNode,b=1===a?b.lastChild:b.previousSibling;b;)d+=1,b=b.previousSibling;return d};this.getPreviousSibling=function(){var a=
+e.currentNode,d=e.previousSibling();e.currentNode=a;return d};this.getNextSibling=function(){var a=e.currentNode,d=e.nextSibling();e.currentNode=a;return d};this.setPositionBeforeElement=function(d){runtime.assert(Boolean(d),"setPositionBeforeElement called without element");e.currentNode=d;a=0;return q()};this.setUnfilteredPosition=function(d,b){runtime.assert(Boolean(d),"PositionIterator.setUnfilteredPosition called without container");e.currentNode=d;d.nodeType===r?(a=b,runtime.assert(b<=d.length,
+"Error in setPosition: "+b+" > "+d.length),runtime.assert(0<=b,"Error in setPosition: "+b+" < 0"),b===d.length&&(e.nextSibling()?a=0:e.parentNode()?a=1:runtime.assert(!1,"Error in setUnfilteredPosition: position not valid."))):b<d.childNodes.length?(e.currentNode=d.childNodes.item(b),a=0):a=1;return q()};this.moveToEnd=function(){e.currentNode=h;a=1};this.moveToEndOfNode=function(d){d.nodeType===r?f.setUnfilteredPosition(d,d.length):(e.currentNode=d,a=1)};this.isBeforeNode=function(){return 0===a};
+this.getNodeFilter=function(){return d};d=(c?new n(c):new g).acceptNode;d.acceptNode=d;k=k||NodeFilter.SHOW_ALL;runtime.assert(h.nodeType!==Node.TEXT_NODE,"Internet Explorer doesn't allow tree walker roots to be text nodes");e=h.ownerDocument.createTreeWalker(h,k,d,b);a=0;null===e.firstChild()&&(a=1)};core.PositionFilter=function(){};core.PositionFilter.FilterResult={FILTER_ACCEPT:1,FILTER_REJECT:2,FILTER_SKIP:3};core.PositionFilter.prototype.acceptPosition=function(h){};core.PositionFilterChain=function(){var h=[],k=core.PositionFilter.FilterResult.FILTER_ACCEPT,c=core.PositionFilter.FilterResult.FILTER_REJECT;this.acceptPosition=function(b){var g;for(g=0;g<h.length;g+=1)if(h[g].acceptPosition(b)===c)return c;return k};this.addFilter=function(b){h.push(b)}};(function(){core.RawInflate=function(){var h;(function(k){h=k()})(function(){return function c(b,g,n){function h(m,f){if(!g[m]){if(!b[m])throw Error("Cannot find module '"+m+"'");var e=g[m]={exports:{}};b[m][0].call(e.exports,function(a){var d=b[m][1][a];return h(d?d:a)},e,e.exports,c,b,g,n)}return g[m].exports}for(var m=0;m<n.length;m++)h(n[m]);return h}({1:[function(c,b,g){function n(a,d){var b=new r(d);b.push(a,!0);if(b.err)throw b.msg;return b.result}var h=c("./zlib/inflate.js"),m=c("./utils/common"),
+q=c("./utils/strings"),f=c("./zlib/constants"),e=c("./zlib/messages"),a=c("./zlib/zstream"),d=c("./zlib/gzheader"),r=function(b){var c=this.options=m.assign({chunkSize:16384,windowBits:0,to:""},b||{});c.raw&&0<=c.windowBits&&16>c.windowBits&&(c.windowBits=-c.windowBits,0===c.windowBits&&(c.windowBits=-15));!(0<=c.windowBits&&16>c.windowBits)||b&&b.windowBits||(c.windowBits+=32);15<c.windowBits&&48>c.windowBits&&0===(c.windowBits&15)&&(c.windowBits|=15);this.err=0;this.msg="";this.ended=!1;this.chunks=
+[];this.strm=new a;this.strm.avail_out=0;b=h.inflateInit2(this.strm,c.windowBits);if(b!==f.Z_OK)throw Error(e[b]);this.header=new d;h.inflateGetHeader(this.strm,this.header)};r.prototype.push=function(a,d){var b=this.strm,c=this.options.chunkSize,e,r,g,w,n;if(this.ended)return!1;r=d===~~d?d:!0===d?f.Z_FINISH:f.Z_NO_FLUSH;b.input="string"===typeof a?q.binstring2buf(a):a;b.next_in=0;b.avail_in=b.input.length;do{0===b.avail_out&&(b.output=new m.Buf8(c),b.next_out=0,b.avail_out=c);e=h.inflate(b,f.Z_NO_FLUSH);
+if(e!==f.Z_STREAM_END&&e!==f.Z_OK)return this.onEnd(e),this.ended=!0,!1;if(b.next_out&&(0===b.avail_out||e===f.Z_STREAM_END||0===b.avail_in&&r===f.Z_FINISH))if("string"===this.options.to)g=q.utf8border(b.output,b.next_out),w=b.next_out-g,n=q.buf2string(b.output,g),b.next_out=w,b.avail_out=c-w,w&&m.arraySet(b.output,b.output,g,w,0),this.onData(n);else this.onData(m.shrinkBuf(b.output,b.next_out))}while((0<b.avail_in||0===b.avail_out)&&e!==f.Z_STREAM_END);e===f.Z_STREAM_END&&(r=f.Z_FINISH);return r===
+f.Z_FINISH?(e=h.inflateEnd(this.strm),this.onEnd(e),this.ended=!0,e===f.Z_OK):!0};r.prototype.onData=function(a){this.chunks.push(a)};r.prototype.onEnd=function(a){a===f.Z_OK&&(this.result="string"===this.options.to?this.chunks.join(""):m.flattenChunks(this.chunks));this.chunks=[];this.err=a;this.msg=this.strm.msg};g.Inflate=r;g.inflate=n;g.inflateRaw=function(a,d){d=d||{};d.raw=!0;return n(a,d)};g.ungzip=n},{"./utils/common":2,"./utils/strings":3,"./zlib/constants":5,"./zlib/gzheader":7,"./zlib/inflate.js":9,
+"./zlib/messages":11,"./zlib/zstream":12}],2:[function(c,b,g){c="undefined"!==typeof Uint8Array&&"undefined"!==typeof Uint16Array&&"undefined"!==typeof Int32Array;g.assign=function(b){for(var c=Array.prototype.slice.call(arguments,1);c.length;){var f=c.shift();if(f){if("object"!==typeof f)throw new TypeError(f+"must be non-object");for(var e in f)f.hasOwnProperty(e)&&(b[e]=f[e])}}return b};g.shrinkBuf=function(b,c){if(b.length===c)return b;if(b.subarray)return b.subarray(0,c);b.length=c;return b};
+var n={arraySet:function(b,c,f,e,a){if(c.subarray&&b.subarray)b.set(c.subarray(f,f+e),a);else for(var d=0;d<e;d++)b[a+d]=c[f+d]},flattenChunks:function(b){var c,f,e,a,d;c=e=0;for(f=b.length;c<f;c++)e+=b[c].length;d=new Uint8Array(e);c=e=0;for(f=b.length;c<f;c++)a=b[c],d.set(a,e),e+=a.length;return d}},h={arraySet:function(b,c,f,e,a){for(var d=0;d<e;d++)b[a+d]=c[f+d]},flattenChunks:function(b){return[].concat.apply([],b)}};g.setTyped=function(b){b?(g.Buf8=Uint8Array,g.Buf16=Uint16Array,g.Buf32=Int32Array,
+g.assign(g,n)):(g.Buf8=Array,g.Buf16=Array,g.Buf32=Array,g.assign(g,h))};g.setTyped(c)},{}],3:[function(c,b,g){function n(a,b){if(65537>b&&(a.subarray&&q||!a.subarray&&m))return String.fromCharCode.apply(null,h.shrinkBuf(a,b));for(var c="",e=0;e<b;e++)c+=String.fromCharCode(a[e]);return c}var h=c("./common"),m=!0,q=!0;try{String.fromCharCode.apply(null,[0])}catch(f){m=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){q=!1}var a=new h.Buf8(256);for(c=0;256>c;c++)a[c]=252<=c?6:248<=
+c?5:240<=c?4:224<=c?3:192<=c?2:1;a[254]=a[254]=1;g.string2buf=function(a){var b,c,e,f,g,n=a.length,m=0;for(f=0;f<n;f++)c=a.charCodeAt(f),55296===(c&64512)&&f+1<n&&(e=a.charCodeAt(f+1),56320===(e&64512)&&(c=65536+(c-55296<<10)+(e-56320),f++)),m+=128>c?1:2048>c?2:65536>c?3:4;b=new h.Buf8(m);for(f=g=0;g<m;f++)c=a.charCodeAt(f),55296===(c&64512)&&f+1<n&&(e=a.charCodeAt(f+1),56320===(e&64512)&&(c=65536+(c-55296<<10)+(e-56320),f++)),128>c?b[g++]=c:(2048>c?b[g++]=192|c>>>6:(65536>c?b[g++]=224|c>>>12:(b[g++]=
+240|c>>>18,b[g++]=128|c>>>12&63),b[g++]=128|c>>>6&63),b[g++]=128|c&63);return b};g.buf2binstring=function(a){return n(a,a.length)};g.binstring2buf=function(a){for(var b=new h.Buf8(a.length),c=0,e=b.length;c<e;c++)b[c]=a.charCodeAt(c);return b};g.buf2string=function(d,b){var c,e,f,g,h=b||d.length,m=Array(2*h);for(c=e=0;c<h;)if(f=d[c++],128>f)m[e++]=f;else if(g=a[f],4<g)m[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;1<g&&c<h;)f=f<<6|d[c++]&63,g--;1<g?m[e++]=65533:65536>f?m[e++]=f:(f-=65536,m[e++]=
+55296|f>>10&1023,m[e++]=56320|f&1023)}return n(m,e)};g.utf8border=function(d,b){var c;b=b||d.length;b>d.length&&(b=d.length);for(c=b-1;0<=c&&128===(d[c]&192);)c--;return 0>c||0===c?b:c+a[d[c]]>b?c:b}},{"./common":2}],4:[function(c,b,g){b.exports=function(b,c,g,h){var f=b&65535|0;b=b>>>16&65535|0;for(var e=0;0!==g;){e=2E3<g?2E3:g;g-=e;do f=f+c[h++]|0,b=b+f|0;while(--e);f%=65521;b%=65521}return f|b<<16|0}},{}],5:[function(c,b,g){b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,
+Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],6:[function(c,b,g){var n=function(){for(var b,c=[],g=0;256>g;g++){b=g;for(var f=0;8>f;f++)b=b&1?3988292384^b>>>1:b>>>1;c[g]=b}return c}();b.exports=function(b,c,g,f){g=f+g;for(b^=
+-1;f<g;f++)b=b>>>8^n[(b^c[f])&255];return b^-1}},{}],7:[function(c,b,g){b.exports=function(){this.os=this.xflags=this.time=this.text=0;this.extra=null;this.extra_len=0;this.comment=this.name="";this.hcrc=0;this.done=!1}},{}],8:[function(c,b,g){b.exports=function(b,c){var g,h,f,e,a,d,r,l,B,y,D,z,t,x,w,F,L,H,G,A,K,v,u,Q;g=b.state;h=b.next_in;u=b.input;f=h+(b.avail_in-5);e=b.next_out;Q=b.output;a=e-(c-b.avail_out);d=e+(b.avail_out-257);r=g.dmax;l=g.wsize;B=g.whave;y=g.wnext;D=g.window;z=g.hold;t=g.bits;
+x=g.lencode;w=g.distcode;F=(1<<g.lenbits)-1;L=(1<<g.distbits)-1;a:do b:for(15>t&&(z+=u[h++]<<t,t+=8,z+=u[h++]<<t,t+=8),H=x[z&F];;){G=H>>>24;z>>>=G;t-=G;G=H>>>16&255;if(0===G)Q[e++]=H&65535;else if(G&16){A=H&65535;if(G&=15)t<G&&(z+=u[h++]<<t,t+=8),A+=z&(1<<G)-1,z>>>=G,t-=G;15>t&&(z+=u[h++]<<t,t+=8,z+=u[h++]<<t,t+=8);H=w[z&L];c:for(;;){G=H>>>24;z>>>=G;t-=G;G=H>>>16&255;if(G&16){H&=65535;G&=15;t<G&&(z+=u[h++]<<t,t+=8,t<G&&(z+=u[h++]<<t,t+=8));H+=z&(1<<G)-1;if(H>r){b.msg="invalid distance too far back";
+g.mode=30;break a}z>>>=G;t-=G;G=e-a;if(H>G){G=H-G;if(G>B&&g.sane){b.msg="invalid distance too far back";g.mode=30;break a}K=0;v=D;if(0===y){if(K+=l-G,G<A){A-=G;do Q[e++]=D[K++];while(--G);K=e-H;v=Q}}else if(y<G){if(K+=l+y-G,G-=y,G<A){A-=G;do Q[e++]=D[K++];while(--G);K=0;if(y<A){G=y;A-=G;do Q[e++]=D[K++];while(--G);K=e-H;v=Q}}}else if(K+=y-G,G<A){A-=G;do Q[e++]=D[K++];while(--G);K=e-H;v=Q}for(;2<A;)Q[e++]=v[K++],Q[e++]=v[K++],Q[e++]=v[K++],A-=3;A&&(Q[e++]=v[K++],1<A&&(Q[e++]=v[K++]))}else{K=e-H;do Q[e++]=
+Q[K++],Q[e++]=Q[K++],Q[e++]=Q[K++],A-=3;while(2<A);A&&(Q[e++]=Q[K++],1<A&&(Q[e++]=Q[K++]))}}else if(0===(G&64)){H=w[(H&65535)+(z&(1<<G)-1)];continue c}else{b.msg="invalid distance code";g.mode=30;break a}break}}else if(0===(G&64)){H=x[(H&65535)+(z&(1<<G)-1)];continue b}else{G&32?g.mode=12:(b.msg="invalid literal/length code",g.mode=30);break a}break}while(h<f&&e<d);A=t>>3;h-=A;t-=A<<3;b.next_in=h;b.next_out=e;b.avail_in=h<f?5+(f-h):5-(h-f);b.avail_out=e<d?257+(d-e):257-(e-d);g.hold=z&(1<<t)-1;g.bits=
+t}},{}],9:[function(c,b,g){function h(a){return(a>>>24&255)+(a>>>8&65280)+((a&65280)<<8)+((a&255)<<24)}function p(){this.mode=0;this.last=!1;this.wrap=0;this.havedict=!1;this.total=this.check=this.dmax=this.flags=0;this.head=null;this.wnext=this.whave=this.wsize=this.wbits=0;this.window=null;this.extra=this.offset=this.length=this.bits=this.hold=0;this.distcode=this.lencode=null;this.have=this.ndist=this.nlen=this.ncode=this.distbits=this.lenbits=0;this.next=null;this.lens=new a.Buf16(320);this.work=
+new a.Buf16(288);this.distdyn=this.lendyn=null;this.was=this.back=this.sane=0}function m(d){var b;if(!d||!d.state)return-2;b=d.state;d.total_in=d.total_out=b.total=0;d.msg="";b.wrap&&(d.adler=b.wrap&1);b.mode=1;b.last=0;b.havedict=0;b.dmax=32768;b.head=null;b.hold=0;b.bits=0;b.lencode=b.lendyn=new a.Buf32(852);b.distcode=b.distdyn=new a.Buf32(592);b.sane=1;b.back=-1;return 0}function q(a){var d;if(!a||!a.state)return-2;d=a.state;d.wsize=0;d.whave=0;d.wnext=0;return m(a)}function f(a,d){var b,c;if(!a||
+!a.state)return-2;c=a.state;0>d?(b=0,d=-d):(b=(d>>4)+1,48>d&&(d&=15));if(d&&(8>d||15<d))return-2;null!==c.window&&c.wbits!==d&&(c.window=null);c.wrap=b;c.wbits=d;return q(a)}function e(a,d){var b;if(!a)return-2;b=new p;a.state=b;b.window=null;b=f(a,d);0!==b&&(a.state=null);return b}var a=c("../utils/common"),d=c("./adler32"),r=c("./crc32"),l=c("./inffast"),B=c("./inftrees"),y=!0,D,z;g.inflateReset=q;g.inflateReset2=f;g.inflateResetKeep=m;g.inflateInit=function(a){return e(a,15)};g.inflateInit2=e;
+g.inflate=function(b,c){var e,f,g,m,p,A,q,v,u,Q,R,C,I,P,U=0,T,ca,Y,E=new a.Buf8(4),Z=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!b||!b.state||!b.output||!b.input&&0!==b.avail_in)return-2;e=b.state;12===e.mode&&(e.mode=13);p=b.next_out;g=b.output;q=b.avail_out;m=b.next_in;f=b.input;A=b.avail_in;v=e.hold;u=e.bits;Q=A;R=q;Y=0;a:for(;;)switch(e.mode){case 1:if(0===e.wrap){e.mode=13;break}for(;16>u;){if(0===A)break a;A--;v+=f[m++]<<u;u+=8}if(e.wrap&2&&35615===v){e.check=0;E[0]=v&255;E[1]=v>>>
+8&255;e.check=r(e.check,E,2,0);u=v=0;e.mode=2;break}e.flags=0;e.head&&(e.head.done=!1);if(!(e.wrap&1)||(((v&255)<<8)+(v>>8))%31){b.msg="incorrect header check";e.mode=30;break}if(8!==(v&15)){b.msg="unknown compression method";e.mode=30;break}v>>>=4;u-=4;I=(v&15)+8;if(0===e.wbits)e.wbits=I;else if(I>e.wbits){b.msg="invalid window size";e.mode=30;break}e.dmax=1<<I;b.adler=e.check=1;e.mode=v&512?10:12;u=v=0;break;case 2:for(;16>u;){if(0===A)break a;A--;v+=f[m++]<<u;u+=8}e.flags=v;if(8!==(e.flags&255)){b.msg=
+"unknown compression method";e.mode=30;break}if(e.flags&57344){b.msg="unknown header flags set";e.mode=30;break}e.head&&(e.head.text=v>>8&1);e.flags&512&&(E[0]=v&255,E[1]=v>>>8&255,e.check=r(e.check,E,2,0));u=v=0;e.mode=3;case 3:for(;32>u;){if(0===A)break a;A--;v+=f[m++]<<u;u+=8}e.head&&(e.head.time=v);e.flags&512&&(E[0]=v&255,E[1]=v>>>8&255,E[2]=v>>>16&255,E[3]=v>>>24&255,e.check=r(e.check,E,4,0));u=v=0;e.mode=4;case 4:for(;16>u;){if(0===A)break a;A--;v+=f[m++]<<u;u+=8}e.head&&(e.head.xflags=v&255,
+e.head.os=v>>8);e.flags&512&&(E[0]=v&255,E[1]=v>>>8&255,e.check=r(e.check,E,2,0));u=v=0;e.mode=5;case 5:if(e.flags&1024){for(;16>u;){if(0===A)break a;A--;v+=f[m++]<<u;u+=8}e.length=v;e.head&&(e.head.extra_len=v);e.flags&512&&(E[0]=v&255,E[1]=v>>>8&255,e.check=r(e.check,E,2,0));u=v=0}else e.head&&(e.head.extra=null);e.mode=6;case 6:if(e.flags&1024&&(C=e.length,C>A&&(C=A),C&&(e.head&&(I=e.head.extra_len-e.length,e.head.extra||(e.head.extra=Array(e.head.extra_len)),a.arraySet(e.head.extra,f,m,C,I)),
+e.flags&512&&(e.check=r(e.check,f,C,m)),A-=C,m+=C,e.length-=C),e.length))break a;e.length=0;e.mode=7;case 7:if(e.flags&2048){if(0===A)break a;C=0;do I=f[m+C++],e.head&&I&&65536>e.length&&(e.head.name+=String.fromCharCode(I));while(I&&C<A);e.flags&512&&(e.check=r(e.check,f,C,m));A-=C;m+=C;if(I)break a}else e.head&&(e.head.name=null);e.length=0;e.mode=8;case 8:if(e.flags&4096){if(0===A)break a;C=0;do I=f[m+C++],e.head&&I&&65536>e.length&&(e.head.comment+=String.fromCharCode(I));while(I&&C<A);e.flags&
+512&&(e.check=r(e.check,f,C,m));A-=C;m+=C;if(I)break a}else e.head&&(e.head.comment=null);e.mode=9;case 9:if(e.flags&512){for(;16>u;){if(0===A)break a;A--;v+=f[m++]<<u;u+=8}if(v!==(e.check&65535)){b.msg="header crc mismatch";e.mode=30;break}u=v=0}e.head&&(e.head.hcrc=e.flags>>9&1,e.head.done=!0);b.adler=e.check=0;e.mode=12;break;case 10:for(;32>u;){if(0===A)break a;A--;v+=f[m++]<<u;u+=8}b.adler=e.check=h(v);u=v=0;e.mode=11;case 11:if(0===e.havedict)return b.next_out=p,b.avail_out=q,b.next_in=m,b.avail_in=
+A,e.hold=v,e.bits=u,2;b.adler=e.check=1;e.mode=12;case 12:if(5===c||6===c)break a;case 13:if(e.last){v>>>=u&7;u-=u&7;e.mode=27;break}for(;3>u;){if(0===A)break a;A--;v+=f[m++]<<u;u+=8}e.last=v&1;v>>>=1;--u;switch(v&3){case 0:e.mode=14;break;case 1:C=e;if(y){I=void 0;D=new a.Buf32(512);z=new a.Buf32(32);for(I=0;144>I;)C.lens[I++]=8;for(;256>I;)C.lens[I++]=9;for(;280>I;)C.lens[I++]=7;for(;288>I;)C.lens[I++]=8;B(1,C.lens,0,288,D,0,C.work,{bits:9});for(I=0;32>I;)C.lens[I++]=5;B(2,C.lens,0,32,z,0,C.work,
+{bits:5});y=!1}C.lencode=D;C.lenbits=9;C.distcode=z;C.distbits=5;e.mode=20;if(6===c){v>>>=2;u-=2;break a}break;case 2:e.mode=17;break;case 3:b.msg="invalid block type",e.mode=30}v>>>=2;u-=2;break;case 14:v>>>=u&7;for(u-=u&7;32>u;){if(0===A)break a;A--;v+=f[m++]<<u;u+=8}if((v&65535)!==(v>>>16^65535)){b.msg="invalid stored block lengths";e.mode=30;break}e.length=v&65535;u=v=0;e.mode=15;if(6===c)break a;case 15:e.mode=16;case 16:if(C=e.length){C>A&&(C=A);C>q&&(C=q);if(0===C)break a;a.arraySet(g,f,m,
+C,p);A-=C;m+=C;q-=C;p+=C;e.length-=C;break}e.mode=12;break;case 17:for(;14>u;){if(0===A)break a;A--;v+=f[m++]<<u;u+=8}e.nlen=(v&31)+257;v>>>=5;u-=5;e.ndist=(v&31)+1;v>>>=5;u-=5;e.ncode=(v&15)+4;v>>>=4;u-=4;if(286<e.nlen||30<e.ndist){b.msg="too many length or distance symbols";e.mode=30;break}e.have=0;e.mode=18;case 18:for(;e.have<e.ncode;){for(;3>u;){if(0===A)break a;A--;v+=f[m++]<<u;u+=8}e.lens[Z[e.have++]]=v&7;v>>>=3;u-=3}for(;19>e.have;)e.lens[Z[e.have++]]=0;e.lencode=e.lendyn;e.lenbits=7;C={bits:e.lenbits};
+Y=B(0,e.lens,0,19,e.lencode,0,e.work,C);e.lenbits=C.bits;if(Y){b.msg="invalid code lengths set";e.mode=30;break}e.have=0;e.mode=19;case 19:for(;e.have<e.nlen+e.ndist;){for(;;){U=e.lencode[v&(1<<e.lenbits)-1];C=U>>>24;U&=65535;if(C<=u)break;if(0===A)break a;A--;v+=f[m++]<<u;u+=8}if(16>U)v>>>=C,u-=C,e.lens[e.have++]=U;else{if(16===U){for(I=C+2;u<I;){if(0===A)break a;A--;v+=f[m++]<<u;u+=8}v>>>=C;u-=C;if(0===e.have){b.msg="invalid bit length repeat";e.mode=30;break}I=e.lens[e.have-1];C=3+(v&3);v>>>=2;
+u-=2}else if(17===U){for(I=C+3;u<I;){if(0===A)break a;A--;v+=f[m++]<<u;u+=8}v>>>=C;u-=C;I=0;C=3+(v&7);v>>>=3;u-=3}else{for(I=C+7;u<I;){if(0===A)break a;A--;v+=f[m++]<<u;u+=8}v>>>=C;u-=C;I=0;C=11+(v&127);v>>>=7;u-=7}if(e.have+C>e.nlen+e.ndist){b.msg="invalid bit length repeat";e.mode=30;break}for(;C--;)e.lens[e.have++]=I}}if(30===e.mode)break;if(0===e.lens[256]){b.msg="invalid code -- missing end-of-block";e.mode=30;break}e.lenbits=9;C={bits:e.lenbits};Y=B(1,e.lens,0,e.nlen,e.lencode,0,e.work,C);e.lenbits=
+C.bits;if(Y){b.msg="invalid literal/lengths set";e.mode=30;break}e.distbits=6;e.distcode=e.distdyn;C={bits:e.distbits};Y=B(2,e.lens,e.nlen,e.ndist,e.distcode,0,e.work,C);e.distbits=C.bits;if(Y){b.msg="invalid distances set";e.mode=30;break}e.mode=20;if(6===c)break a;case 20:e.mode=21;case 21:if(6<=A&&258<=q){b.next_out=p;b.avail_out=q;b.next_in=m;b.avail_in=A;e.hold=v;e.bits=u;l(b,R);p=b.next_out;g=b.output;q=b.avail_out;m=b.next_in;f=b.input;A=b.avail_in;v=e.hold;u=e.bits;12===e.mode&&(e.back=-1);
+break}for(e.back=0;;){U=e.lencode[v&(1<<e.lenbits)-1];C=U>>>24;I=U>>>16&255;U&=65535;if(C<=u)break;if(0===A)break a;A--;v+=f[m++]<<u;u+=8}if(I&&0===(I&240)){P=C;T=I;for(ca=U;;){U=e.lencode[ca+((v&(1<<P+T)-1)>>P)];C=U>>>24;I=U>>>16&255;U&=65535;if(P+C<=u)break;if(0===A)break a;A--;v+=f[m++]<<u;u+=8}v>>>=P;u-=P;e.back+=P}v>>>=C;u-=C;e.back+=C;e.length=U;if(0===I){e.mode=26;break}if(I&32){e.back=-1;e.mode=12;break}if(I&64){b.msg="invalid literal/length code";e.mode=30;break}e.extra=I&15;e.mode=22;case 22:if(e.extra){for(I=
+e.extra;u<I;){if(0===A)break a;A--;v+=f[m++]<<u;u+=8}e.length+=v&(1<<e.extra)-1;v>>>=e.extra;u-=e.extra;e.back+=e.extra}e.was=e.length;e.mode=23;case 23:for(;;){U=e.distcode[v&(1<<e.distbits)-1];C=U>>>24;I=U>>>16&255;U&=65535;if(C<=u)break;if(0===A)break a;A--;v+=f[m++]<<u;u+=8}if(0===(I&240)){P=C;T=I;for(ca=U;;){U=e.distcode[ca+((v&(1<<P+T)-1)>>P)];C=U>>>24;I=U>>>16&255;U&=65535;if(P+C<=u)break;if(0===A)break a;A--;v+=f[m++]<<u;u+=8}v>>>=P;u-=P;e.back+=P}v>>>=C;u-=C;e.back+=C;if(I&64){b.msg="invalid distance code";
+e.mode=30;break}e.offset=U;e.extra=I&15;e.mode=24;case 24:if(e.extra){for(I=e.extra;u<I;){if(0===A)break a;A--;v+=f[m++]<<u;u+=8}e.offset+=v&(1<<e.extra)-1;v>>>=e.extra;u-=e.extra;e.back+=e.extra}if(e.offset>e.dmax){b.msg="invalid distance too far back";e.mode=30;break}e.mode=25;case 25:if(0===q)break a;C=R-q;if(e.offset>C){C=e.offset-C;if(C>e.whave&&e.sane){b.msg="invalid distance too far back";e.mode=30;break}C>e.wnext?(C-=e.wnext,I=e.wsize-C):I=e.wnext-C;C>e.length&&(C=e.length);P=e.window}else P=
+g,I=p-e.offset,C=e.length;C>q&&(C=q);q-=C;e.length-=C;do g[p++]=P[I++];while(--C);0===e.length&&(e.mode=21);break;case 26:if(0===q)break a;g[p++]=e.length;q--;e.mode=21;break;case 27:if(e.wrap){for(;32>u;){if(0===A)break a;A--;v|=f[m++]<<u;u+=8}R-=q;b.total_out+=R;e.total+=R;R&&(b.adler=e.check=e.flags?r(e.check,g,R,p-R):d(e.check,g,R,p-R));R=q;if((e.flags?v:h(v))!==e.check){b.msg="incorrect data check";e.mode=30;break}u=v=0}e.mode=28;case 28:if(e.wrap&&e.flags){for(;32>u;){if(0===A)break a;A--;v+=
+f[m++]<<u;u+=8}if(v!==(e.total&4294967295)){b.msg="incorrect length check";e.mode=30;break}u=v=0}e.mode=29;case 29:Y=1;break a;case 30:Y=-3;break a;case 31:return-4;default:return-2}b.next_out=p;b.avail_out=q;b.next_in=m;b.avail_in=A;e.hold=v;e.bits=u;if(e.wsize||R!==b.avail_out&&30>e.mode&&(27>e.mode||4!==c))f=b.output,m=b.next_out,p=R-b.avail_out,q=b.state,null===q.window&&(q.wsize=1<<q.wbits,q.wnext=0,q.whave=0,q.window=new a.Buf8(q.wsize)),p>=q.wsize?(a.arraySet(q.window,f,m-q.wsize,q.wsize,0),
+q.wnext=0,q.whave=q.wsize):(A=q.wsize-q.wnext,A>p&&(A=p),a.arraySet(q.window,f,m-p,A,q.wnext),(p-=A)?(a.arraySet(q.window,f,m-p,p,0),q.wnext=p,q.whave=q.wsize):(q.wnext+=A,q.wnext===q.wsize&&(q.wnext=0),q.whave<q.wsize&&(q.whave+=A)));Q-=b.avail_in;R-=b.avail_out;b.total_in+=Q;b.total_out+=R;e.total+=R;e.wrap&&R&&(b.adler=e.check=e.flags?r(e.check,g,R,b.next_out-R):d(e.check,g,R,b.next_out-R));b.data_type=e.bits+(e.last?64:0)+(12===e.mode?128:0)+(20===e.mode||15===e.mode?256:0);(0===Q&&0===R||4===
+c)&&0===Y&&(Y=-5);return Y};g.inflateEnd=function(a){if(!a||!a.state)return-2;var d=a.state;d.window&&(d.window=null);a.state=null;return 0};g.inflateGetHeader=function(a,d){var b;if(!a||!a.state)return-2;b=a.state;if(0===(b.wrap&2))return-2;b.head=d;d.done=!1;return 0};g.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":2,"./adler32":4,"./crc32":6,"./inffast":8,"./inftrees":10}],10:[function(c,b,g){var h=c("../utils/common"),p=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,
+59,67,83,99,115,131,163,195,227,258,0,0],m=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],q=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],f=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];b.exports=function(b,a,d,c,l,g,y,D){for(var z=D.bits,t=0,x=0,w=0,F=0,L=0,H=0,G=0,A=0,K=0,v=0,u,Q,R=null,C=0,I,P=new h.Buf16(16),H=new h.Buf16(16),
+U=null,T=0,ca,Y,E,t=0;15>=t;t++)P[t]=0;for(x=0;x<c;x++)P[a[d+x]]++;L=z;for(F=15;1<=F&&0===P[F];F--);L>F&&(L=F);if(0===F)return l[g++]=20971520,l[g++]=20971520,D.bits=1,0;for(w=1;w<F&&0===P[w];w++);L<w&&(L=w);for(t=A=1;15>=t;t++)if(A<<=1,A-=P[t],0>A)return-1;if(0<A&&(0===b||1!==F))return-1;H[1]=0;for(t=1;15>t;t++)H[t+1]=H[t]+P[t];for(x=0;x<c;x++)0!==a[d+x]&&(y[H[a[d+x]]++]=x);switch(b){case 0:R=U=y;I=19;break;case 1:R=p;C-=257;U=m;T-=257;I=256;break;default:R=q,U=f,I=-1}x=v=0;t=w;z=g;H=L;G=0;Q=-1;
+K=1<<L;c=K-1;if(1===b&&852<K||2===b&&592<K)return 1;for(var Z=0;;){Z++;ca=t-G;y[x]<I?(Y=0,E=y[x]):y[x]>I?(Y=U[T+y[x]],E=R[C+y[x]]):(Y=96,E=0);A=1<<t-G;w=u=1<<H;do u-=A,l[z+(v>>G)+u]=ca<<24|Y<<16|E|0;while(0!==u);for(A=1<<t-1;v&A;)A>>=1;0!==A?(v&=A-1,v+=A):v=0;x++;if(0===--P[t]){if(t===F)break;t=a[d+y[x]]}if(t>L&&(v&c)!==Q){0===G&&(G=L);z+=w;H=t-G;for(A=1<<H;H+G<F;){A-=P[H+G];if(0>=A)break;H++;A<<=1}K+=1<<H;if(1===b&&852<K||2===b&&592<K)return 1;Q=v&c;l[Q]=L<<24|H<<16|z-g|0}}0!==v&&(l[z+v]=t-G<<24|
+4194304);D.bits=L;return 0}},{"../utils/common":2}],11:[function(c,b,g){b.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],12:[function(c,b,g){b.exports=function(){this.input=null;this.total_in=this.avail_in=this.next_in=0;this.output=null;this.total_out=this.avail_out=this.next_out=0;this.msg="";this.state=null;this.data_type=2;this.adler=0}},{}]},{},[1])(1)});
+return{inflate:function(k,c){return h.inflateRaw(k)}}}()})();core.StepDirection={PREVIOUS:1,NEXT:2};core.StepIterator=function(h,k){function c(){a=null;r=d=void 0}function b(){void 0===r&&(r=h.acceptPosition(k)===f);return r}function g(a,d){c();return k.setUnfilteredPosition(a,d)}function n(){a||(a=k.container());return a}function p(){void 0===d&&(d=k.unfilteredDomOffset());return d}function m(){for(c();k.nextPosition();)if(c(),b())return!0;return!1}function q(){for(c();k.previousPosition();)if(c(),b())return!0;return!1}var f=core.PositionFilter.FilterResult.FILTER_ACCEPT,e=core.StepDirection.NEXT,
+a,d,r;this.isStep=b;this.setPosition=g;this.container=n;this.offset=p;this.nextStep=m;this.previousStep=q;this.advanceStep=function(a){return a===e?m():q()};this.roundToClosestStep=function(){var a,d,e=b();e||(a=n(),d=p(),e=q(),e||(g(a,d),e=m()));return e};this.roundToPreviousStep=function(){var a=b();a||(a=q());return a};this.roundToNextStep=function(){var a=b();a||(a=m());return a};this.leftNode=function(){return k.leftNode()};this.snapshot=function(){return new core.StepIterator.StepSnapshot(n(),
+p())};this.restore=function(a){g(a.container,a.offset)}};core.StepIterator.StepSnapshot=function(h,k){this.container=h;this.offset=k};core.Utils=function(){function h(k,c){if(c&&Array.isArray(c)){k=k||[];if(!Array.isArray(k))throw"Destination is not an array.";k=k.concat(c.map(function(b){return h(null,b)}))}else if(c&&"object"===typeof c){k=k||{};if("object"!==typeof k)throw"Destination is not an object.";Object.keys(c).forEach(function(b){k[b]=h(k[b],c[b])})}else k=c;return k}this.hashString=function(h){var c=0,b,g;b=0;for(g=h.length;b<g;b+=1)c=(c<<5)-c+h.charCodeAt(b),c|=0;return c};this.mergeObjects=function(k,c){Object.keys(c).forEach(function(b){k[b]=
+h(k[b],c[b])});return k}};core.Zip=function(h,k){function c(a,d,b){B?b(null,B.subarray(a,a+d)):b("File data not loaded",null)}function b(a){var d=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,
+1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,
+1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,
+1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,
+628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,
+3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918E3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],b,e,c=a.length,l=0,l=0;b=-1;for(e=0;e<c;e+=1)l=(b^a[e])&255,l=d[l],b=b>>>8^l;return b^-1}function g(a){return new Date((a>>25&127)+1980,(a>>21&15)-1,a>>16&31,a>>11&15,
+a>>5&63,(a&31)<<1)}function n(a){var d=a.getFullYear();return 1980>d?0:d-1980<<25|a.getMonth()+1<<21|a.getDate()<<16|a.getHours()<<11|a.getMinutes()<<5|a.getSeconds()>>1}function p(a,d){var b,e,l,f,r,v,u,h=this;this.load=function(d){if(null!==h.data)d(null,h.data);else{var b=r+34+e+l+256;b+u>y&&(b=y-u);c(u,b,function(b,e){if(b||null===e)d(b,e);else a:{var c=e,l=new core.ByteArray(c),g=l.readUInt32LE(),u;if(67324752!==g)d("File entry signature is wrong."+g.toString()+" "+c.length.toString(),null);
+else{l.pos+=22;g=l.readUInt16LE();u=l.readUInt16LE();l.pos+=g+u;if(f){c=c.subarray(l.pos,l.pos+r);if(r!==c.length){d("The amount of compressed bytes read was "+c.length.toString()+" instead of "+r.toString()+" for "+h.filename+" in "+a+".",null);break a}c=z(c,v)}else c=c.subarray(l.pos,l.pos+v);v!==c.length?d("The amount of bytes read was "+c.length.toString()+" instead of "+v.toString()+" for "+h.filename+" in "+a+".",null):(h.data=c,d(null,c))}}})}};this.set=function(a,d,b,e){h.filename=a;h.data=
+d;h.compressed=b;h.date=e};this.error=null;d&&(b=d.readUInt32LE(),33639248!==b?this.error="Central directory entry has wrong signature at position "+(d.pos-4).toString()+' for file "'+a+'": '+d.data.length.toString():(d.pos+=6,f=d.readUInt16LE(),this.date=g(d.readUInt32LE()),d.readUInt32LE(),r=d.readUInt32LE(),v=d.readUInt32LE(),e=d.readUInt16LE(),l=d.readUInt16LE(),b=d.readUInt16LE(),d.pos+=8,u=d.readUInt32LE(),this.filename=runtime.byteArrayToString(d.data.subarray(d.pos,d.pos+e),"utf8"),this.data=
+null,d.pos+=e+l+b))}function m(a,d){if(22!==a.length)d("Central directory length should be 22.",t);else{var b=new core.ByteArray(a),e;e=b.readUInt32LE();101010256!==e?d("Central directory signature is wrong: "+e.toString(),t):(e=b.readUInt16LE(),0!==e?d("Zip files with non-zero disk numbers are not supported.",t):(e=b.readUInt16LE(),0!==e?d("Zip files with non-zero disk numbers are not supported.",t):(e=b.readUInt16LE(),D=b.readUInt16LE(),e!==D?d("Number of entries is inconsistent.",t):(e=b.readUInt32LE(),
+b=b.readUInt16LE(),b=y-22-e,c(b,y-b,function(a,b){if(a||null===b)d(a,t);else a:{var e=new core.ByteArray(b),c,f;l=[];for(c=0;c<D;c+=1){f=new p(h,e);if(f.error){d(f.error,t);break a}l[l.length]=f}d(null,t)}})))))}}function q(a,d){var b=null,e,c;for(c=0;c<l.length;c+=1)if(e=l[c],e.filename===a){b=e;break}b?b.data?d(null,b.data):b.load(d):d(a+" not found.",null)}function f(a){var d=new core.ByteArrayWriter("utf8"),e=0;d.appendArray([80,75,3,4,20,0,0,0,0,0]);a.data&&(e=a.data.length);d.appendUInt32LE(n(a.date));
+d.appendUInt32LE(a.data?b(a.data):0);d.appendUInt32LE(e);d.appendUInt32LE(e);d.appendUInt16LE(a.filename.length);d.appendUInt16LE(0);d.appendString(a.filename);a.data&&d.appendByteArray(a.data);return d}function e(a,d){var e=new core.ByteArrayWriter("utf8"),c=0;e.appendArray([80,75,1,2,20,0,20,0,0,0,0,0]);a.data&&(c=a.data.length);e.appendUInt32LE(n(a.date));e.appendUInt32LE(a.data?b(a.data):0);e.appendUInt32LE(c);e.appendUInt32LE(c);e.appendUInt16LE(a.filename.length);e.appendArray([0,0,0,0,0,0,
+0,0,0,0,0,0]);e.appendUInt32LE(d);e.appendString(a.filename);return e}function a(d,b){if(d===l.length)b(null);else{var e=l[d];null!==e.data?a(d+1,b):e.load(function(e){e?b(e):a(d+1,b)})}}function d(d,b){a(0,function(a){if(a)b(a);else{var c,g,r=new core.ByteArrayWriter("utf8"),h=[0];for(c=0;c<l.length;c+=1)r.appendByteArrayWriter(f(l[c])),h.push(r.getLength());a=r.getLength();for(c=0;c<l.length;c+=1)g=l[c],r.appendByteArrayWriter(e(g,h[c]));c=r.getLength()-a;r.appendArray([80,75,5,6,0,0,0,0]);r.appendUInt16LE(l.length);
+r.appendUInt16LE(l.length);r.appendUInt32LE(c);r.appendUInt32LE(a);r.appendArray([0,0]);d(r.getByteArray())}})}function r(a,b){d(function(d){runtime.writeFile(a,d,function(a){a||(B=d,y=B.length);b(a)})},b)}var l,B,y,D,z=core.RawInflate.inflate,t=this,x=new core.Base64;this.load=q;this.save=function(a,d,b,e){var c,f;for(c=0;c<l.length;c+=1)if(f=l[c],f.filename===a){f.set(a,d,b,e);return}f=new p(h);f.set(a,d,b,e);l.push(f)};this.remove=function(a){var d,b;for(d=0;d<l.length;d+=1)if(b=l[d],b.filename===
+a)return l.splice(d,1),!0;return!1};this.write=function(a){r(h,a)};this.writeAs=r;this.createByteArray=d;this.loadContentXmlAsFragments=function(a,d){t.loadAsString(a,function(a,b){if(a)return d.rootElementReady(a);d.rootElementReady(null,b,!0)})};this.loadAsString=function(a,d){q(a,function(a,b){if(a||null===b)return d(a,null);var e=runtime.byteArrayToString(b,"utf8");d(null,e)})};this.loadAsDOM=function(a,d){t.loadAsString(a,function(a,b){if(a||null===b)d(a,null);else{var e=(new DOMParser).parseFromString(b,
+"text/xml");d(null,e)}})};this.loadAsDataURL=function(a,d,b){q(a,function(a,e){if(a||!e)return b(a,null);var c=0,l;d||(d=80===e[1]&&78===e[2]&&71===e[3]?"image/png":255===e[0]&&216===e[1]&&255===e[2]?"image/jpeg":71===e[0]&&73===e[1]&&70===e[2]?"image/gif":"");for(l="data:"+d+";base64,";c<e.length;)l+=x.convertUTF8ArrayToBase64(e.subarray(c,Math.min(c+45E3,e.length))),c+=45E3;b(null,l)})};this.getEntries=function(){return l.slice()};y=-1;null===k?l=[]:runtime.readFile(h,"binary",function(a,d){"string"===
+typeof d&&(a="file was read as a string. Should be Uint8Array.");a||!d||0===d.length?k("File '"+h+"' cannot be read. Err: "+(a||"[none]"),t):(B=d,y=B.length,c(y-22,22,function(a,d){a||null===d?k(a,t):m(d,k)}))})};core.SimpleClientRect=null;gui.CommonConstraints={EDIT:{ANNOTATIONS:{ONLY_DELETE_OWN:"onlyDeleteOwn"},REVIEW_MODE:"reviewMode"}};gui.SessionConstraints=function(){function h(b){k.hasOwnProperty(b)||(k[b]=!1,c.register(b))}var k={},c=new core.EventNotifier;this.registerConstraint=h;this.subscribe=function(b,g){h(b);c.subscribe(b,g)};this.unsubscribe=function(b,g){c.unsubscribe(b,g)};this.setState=function(b,g){runtime.assert(!0===k.hasOwnProperty(b),"No such constraint");k[b]!==g&&(k[b]=g,c.emit(b,g))};this.getState=function(b){runtime.assert(!0===k.hasOwnProperty(b),"No such constraint");return k[b]}};gui.BlacklistNamespaceNodeFilter=function(h){var k={},c=NodeFilter.FILTER_REJECT,b=NodeFilter.FILTER_ACCEPT;this.acceptNode=function(g){return!g||k.hasOwnProperty(g.namespaceURI)?c:b};(function(){h.forEach(function(b){k[b]=!0})})()};odf.Namespaces={namespaceMap:{config:"urn:oasis:names:tc:opendocument:xmlns:config:1.0",db:"urn:oasis:names:tc:opendocument:xmlns:database:1.0",dc:"http://purl.org/dc/elements/1.1/",dr3d:"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0",draw:"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0",chart:"urn:oasis:names:tc:opendocument:xmlns:chart:1.0",fo:"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0",form:"urn:oasis:names:tc:opendocument:xmlns:form:1.0",math:"http://www.w3.org/1998/Math/MathML",
+meta:"urn:oasis:names:tc:opendocument:xmlns:meta:1.0",number:"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0",office:"urn:oasis:names:tc:opendocument:xmlns:office:1.0",presentation:"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0",style:"urn:oasis:names:tc:opendocument:xmlns:style:1.0",svg:"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0",table:"urn:oasis:names:tc:opendocument:xmlns:table:1.0",text:"urn:oasis:names:tc:opendocument:xmlns:text:1.0",xforms:"http://www.w3.org/2002/xforms",
+xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace"},prefixMap:{},configns:"urn:oasis:names:tc:opendocument:xmlns:config:1.0",dbns:"urn:oasis:names:tc:opendocument:xmlns:database:1.0",dcns:"http://purl.org/dc/elements/1.1/",dr3dns:"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0",drawns:"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0",chartns:"urn:oasis:names:tc:opendocument:xmlns:chart:1.0",fons:"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0",formns:"urn:oasis:names:tc:opendocument:xmlns:form:1.0",
+mathns:"http://www.w3.org/1998/Math/MathML",metans:"urn:oasis:names:tc:opendocument:xmlns:meta:1.0",numberns:"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0",officens:"urn:oasis:names:tc:opendocument:xmlns:office:1.0",presentationns:"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0",stylens:"urn:oasis:names:tc:opendocument:xmlns:style:1.0",svgns:"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0",tablens:"urn:oasis:names:tc:opendocument:xmlns:table:1.0",textns:"urn:oasis:names:tc:opendocument:xmlns:text:1.0",
+xformsns:"http://www.w3.org/2002/xforms",xlinkns:"http://www.w3.org/1999/xlink",xmlns:"http://www.w3.org/XML/1998/namespace"};(function(){var h=odf.Namespaces.namespaceMap,k=odf.Namespaces.prefixMap,c;for(c in h)h.hasOwnProperty(c)&&(k[h[c]]=c)})();odf.Namespaces.forEachPrefix=function(h){var k=odf.Namespaces.namespaceMap,c;for(c in k)k.hasOwnProperty(c)&&h(c,k[c])};
+odf.Namespaces.lookupNamespaceURI=function(h){var k=null;odf.Namespaces.namespaceMap.hasOwnProperty(h)&&(k=odf.Namespaces.namespaceMap[h]);return k};odf.Namespaces.lookupPrefix=function(h){var k=odf.Namespaces.prefixMap;return k.hasOwnProperty(h)?k[h]:null};odf.Namespaces.lookupNamespaceURI.lookupNamespaceURI=odf.Namespaces.lookupNamespaceURI;(function(){odf.OdfSchemaImpl=function(){var h=[["config:config-item","uncategorized"],["form:item","object"],["form:option","uncategorized"],["math:math","field"],["meta:user-defined","uncategorized"],["number:currency-symbol","uncategorized"],["number:embedded-text","uncategorized"],["number:text","uncategorized"],["presentation:date-time-decl","uncategorized"],["presentation:footer-decl","uncategorized"],["presentation:header-decl","uncategorized"],["svg:desc","text"],["svg:title","text"],["table:desc",
+"uncategorized"],["table:title","uncategorized"],["text:a","text"],["text:author-initials","field"],["text:author-name","field"],["text:bibliography-mark","field"],["text:bookmark-ref","field"],["text:chapter","field"],["text:character-count","field"],["text:conditional-text","field"],["text:creation-date","field"],["text:creation-time","field"],["text:creator","field"],["text:database-display","field"],["text:database-name","field"],["text:database-row-number","field"],["text:date","field"],["text:dde-connection",
+"field"],["text:description","field"],["text:editing-cycles","field"],["text:editing-duration","field"],["text:execute-macro","uncategorized"],["text:expression","uncategorized"],["text:file-name","field"],["text:h","text"],["text:hidden-paragraph","text"],["text:hidden-text","text"],["text:image-count","field"],["text:index-entry-span","uncategorized"],["text:index-title-template","uncategorized"],["text:initial-creator","field"],["text:keywords","field"],["text:linenumbering-separator","style"],
+["text:measure","uncategorized"],["text:meta","uncategorized"],["text:meta-field","uncategorized"],["text:modification-date","field"],["text:modification-time","field"],["text:note-citation","field"],["text:note-continuation-notice-backward","style"],["text:note-continuation-notice-forward","style"],["text:note-ref","field"],["text:object-count","field"],["text:p","text"],["text:page-continuation","uncategorized"],["text:page-count","field"],["text:page-number","field"],["text:page-variable-get",
+"field"],["text:page-variable-set","field"],["text:paragraph-count","field"],["text:placeholder","field"],["text:print-date","field"],["text:print-time","field"],["text:printed-by","field"],["text:reference-ref","field"],["text:ruby-base","text"],["text:ruby-text","text"],["text:script","text"],["text:sender-city","field"],["text:sender-company","field"],["text:sender-country","field"],["text:sender-email","field"],["text:sender-fax","field"],["text:sender-firstname","field"],["text:sender-initials",
+"field"],["text:sender-lastname","field"],["text:sender-phone-private","field"],["text:sender-phone-work","field"],["text:sender-position","field"],["text:sender-postal-code","field"],["text:sender-state-or-province","field"],["text:sender-street","field"],["text:sender-title","field"],["text:sequence","uncategorized"],["text:sequence-ref","uncategorized"],["text:sheet-name","uncategorized"],["text:span","text"],["text:subject","field"],["text:table-count","field"],["text:table-formula","deprecated"],
+["text:template-name","uncategorized"],["text:text-input","field"],["text:time","field"],["text:title","field"],["text:user-defined","field"],["text:user-field-get","field"],["text:user-field-input","field"],["text:variable-get","field"],["text:variable-input","field"],["text:variable-set","field"],["text:word-count","field"],["xforms:model","uncategorized"]],k={};this.isTextContainer=function(c,b){return"text"===k[c+":"+b]};this.isField=function(c,b){return"field"===k[c+":"+b]};this.getFields=function(){return h.filter(function(c){return"field"===
+c[1]}).map(function(c){return c[0]})};(function(){h.forEach(function(c){var b=c[1],g=c[0].split(":");c=g[0];var g=g[1],h=odf.Namespaces.lookupNamespaceURI(c);h?k[h+":"+g]=b:runtime.log("DEBUG: OdfSchema - unknown prefix '"+c+"'")})})()};odf.OdfSchema=new odf.OdfSchemaImpl})();odf.OdfUtilsImpl=function(){function h(a){return"image"===(a&&a.localName)&&a.namespaceURI===I}function k(a){return null!==a&&a.nodeType===Node.ELEMENT_NODE&&"frame"===a.localName&&a.namespaceURI===I&&"as-char"===a.getAttributeNS(C,"anchor-type")}function c(a){var d;(d="annotation"===(a&&a.localName)&&a.namespaceURI===odf.Namespaces.officens)||(d="div"===(a&&a.localName)&&"annotationWrapper"===a.className);return d}function b(a){return"a"===(a&&a.localName)&&a.namespaceURI===C}function g(a){var d=
+a&&a.localName;return("p"===d||"h"===d)&&a.namespaceURI===C}function n(a,d){for(a&&void 0!==d&&!g(a)&&a.childNodes.item(d)&&(a=a.childNodes.item(d));a&&!g(a);)a=a.parentNode;return a}function p(a,d){for(;a&&a!==d;){if(a.namespaceURI===odf.Namespaces.officens&&"annotation"===a.localName)return a;a=a.parentNode}return null}function m(a){return/^[ \t\r\n]+$/.test(a)}function q(a){if(null===a||a.nodeType!==Node.ELEMENT_NODE)return!1;var d=a.localName;return ca.isTextContainer(a.namespaceURI,d)||"span"===
+d&&"webodf-annotationHighlight"===a.className}function f(a){return null===a||a.nodeType!==Node.ELEMENT_NODE?!1:ca.isField(a.namespaceURI,a.localName)}function e(a){var d=a&&a.localName,b=!1;d&&(a=a.namespaceURI,a===C&&(b="s"===d||"tab"===d||"line-break"===d));return b}function a(a){return e(a)||f(a)||k(a)||c(a)}function d(a){var d=a&&a.localName,b=!1;d&&(a=a.namespaceURI,a===C&&(b="s"===d));return b}function r(a){return-1!==T.indexOf(a.namespaceURI)}function l(a){if(e(a)||f(a))return!1;if(q(a.parentNode)&&
+a.nodeType===Node.TEXT_NODE)return 0===a.textContent.length;for(a=a.firstChild;a;){if(r(a)||!l(a))return!1;a=a.nextSibling}return!0}function B(a){for(;null!==a.firstChild&&q(a);)a=a.firstChild;return a}function y(a){for(;null!==a.lastChild&&q(a);)a=a.lastChild;return a}function D(a){for(;!g(a)&&null===a.previousSibling;)a=a.parentNode;return g(a)?null:y(a.previousSibling)}function z(a){for(;!g(a)&&null===a.nextSibling;)a=a.parentNode;return g(a)?null:B(a.nextSibling)}function t(b){for(var e=!1;b;)if(b.nodeType===
+Node.TEXT_NODE)if(0===b.length)b=D(b);else return!m(b.data.substr(b.length-1,1));else a(b)?(e=!1===d(b),b=null):b=D(b);return e}function x(d){var b=!1,e;for(d=d&&B(d);d;){e=d.nodeType===Node.TEXT_NODE?d.length:0;if(0<e&&!m(d.data)){b=!0;break}if(a(d)){b=!0;break}d=z(d)}return b}function w(a,d){return m(a.data.substr(d))?!x(z(a)):!1}function F(d,b){var e=d.data,c;if(!m(e[b])||a(d.parentNode))return!1;0<b?m(e[b-1])||(c=!0):t(D(d))&&(c=!0);return!0===c?w(d,b)?!1:!0:!1}function L(a){return(a=/(-?[0-9]*[0-9][0-9]*(\.[0-9]*)?|0+\.[0-9]*[1-9][0-9]*|\.[0-9]*[1-9][0-9]*)((cm)|(mm)|(in)|(pt)|(pc)|(px)|(%))/.exec(a))?
+{value:parseFloat(a[1]),unit:a[3]}:null}function H(a){return(a=L(a))&&(0>a.value||"%"===a.unit)?null:a}function G(a){return(a=L(a))&&"%"!==a.unit?null:a}function A(a){switch(a.namespaceURI){case odf.Namespaces.drawns:case odf.Namespaces.svgns:case odf.Namespaces.dr3dns:return!1;case odf.Namespaces.textns:switch(a.localName){case "note-body":case "ruby-text":return!1}break;case odf.Namespaces.officens:switch(a.localName){case "annotation":case "binary-data":case "event-listeners":return!1}break;default:switch(a.localName){case "cursor":case "editinfo":return!1}}return!0}
+function K(a){return Boolean(n(a)&&(!m(a.textContent)||F(a,0)))}function v(a,d){for(;0<d.length&&!U.rangeContainsNode(a,d[0]);)d.shift();for(;0<d.length&&!U.rangeContainsNode(a,d[d.length-1]);)d.pop()}function u(d,b,l){var g;g=U.getNodesInRange(d,function(d){var b=NodeFilter.FILTER_REJECT;if(e(d.parentNode)||f(d.parentNode)||c(d))b=NodeFilter.FILTER_REJECT;else if(d.nodeType===Node.TEXT_NODE){if(l||K(d))b=NodeFilter.FILTER_ACCEPT}else if(a(d))b=NodeFilter.FILTER_ACCEPT;else if(A(d)||q(d))b=NodeFilter.FILTER_SKIP;
+return b},NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT);b||v(d,g);return g}function Q(a,d,b){for(;a;){if(b(a)){d[0]!==a&&d.unshift(a);break}if(c(a))break;a=a.parentNode}}function R(a,d){var b=a;if(d<b.childNodes.length-1)b=b.childNodes[d+1];else{for(;!b.nextSibling;)b=b.parentNode;b=b.nextSibling}for(;b.firstChild;)b=b.firstChild;return b}var C=odf.Namespaces.textns,I=odf.Namespaces.drawns,P=odf.Namespaces.xlinkns,U=core.DomUtils,T=[odf.Namespaces.dbns,odf.Namespaces.dcns,odf.Namespaces.dr3dns,odf.Namespaces.drawns,
+odf.Namespaces.chartns,odf.Namespaces.formns,odf.Namespaces.numberns,odf.Namespaces.officens,odf.Namespaces.presentationns,odf.Namespaces.stylens,odf.Namespaces.svgns,odf.Namespaces.tablens,odf.Namespaces.textns],ca=odf.OdfSchema;this.isImage=h;this.isCharacterFrame=k;this.isInlineRoot=c;this.isTextSpan=function(a){return"span"===(a&&a.localName)&&a.namespaceURI===C};this.isHyperlink=b;this.getHyperlinkTarget=function(a){return a.getAttributeNS(P,"href")||""};this.isParagraph=g;this.getParagraphElement=
+n;this.getParentAnnotation=p;this.isWithinAnnotation=function(a,d){return Boolean(p(a,d))};this.getAnnotationCreator=function(a){return a.getElementsByTagNameNS(odf.Namespaces.dcns,"creator")[0].textContent};this.isListItem=function(a){return"list-item"===(a&&a.localName)&&a.namespaceURI===C};this.isLineBreak=function(a){return"line-break"===(a&&a.localName)&&a.namespaceURI===C};this.isODFWhitespace=m;this.isGroupingElement=q;this.isFieldElement=f;this.isCharacterElement=e;this.isAnchoredAsCharacterElement=
+a;this.isSpaceElement=d;this.isODFNode=r;this.hasNoODFContent=l;this.firstChild=B;this.lastChild=y;this.previousNode=D;this.nextNode=z;this.scanLeftForNonSpace=t;this.lookLeftForCharacter=function(d){var b,e=b=0;d.nodeType===Node.TEXT_NODE&&(e=d.length);0<e?(b=d.data,b=m(b.substr(e-1,1))?1===e?t(D(d))?2:0:m(b.substr(e-2,1))?0:2:1):a(d)&&(b=1);return b};this.lookRightForCharacter=function(d){var b=!1,e=0;d&&d.nodeType===Node.TEXT_NODE&&(e=d.length);0<e?b=!m(d.data.substr(0,1)):a(d)&&(b=!0);return b};
+this.scanLeftForAnyCharacter=function(d){var b=!1,e;for(d=d&&y(d);d;){e=d.nodeType===Node.TEXT_NODE?d.length:0;if(0<e&&!m(d.data)){b=!0;break}if(a(d)){b=!0;break}d=D(d)}return b};this.scanRightForAnyCharacter=x;this.isTrailingWhitespace=w;this.isSignificantWhitespace=F;this.isDowngradableSpaceElement=function(a){return d(a)?t(D(a))&&x(z(a)):!1};this.parseLength=L;this.parseNonNegativeLength=H;this.parseFoFontSize=function(a){var d;d=(d=L(a))&&(0>=d.value||"%"===d.unit)?null:d;return d||G(a)};this.parseFoLineHeight=
+function(a){return H(a)||G(a)};this.isTextContentContainingNode=A;this.getTextNodes=function(a,d){var b;b=U.getNodesInRange(a,function(a){var d=NodeFilter.FILTER_REJECT;a.nodeType===Node.TEXT_NODE?K(a)&&(d=NodeFilter.FILTER_ACCEPT):A(a)&&(d=NodeFilter.FILTER_SKIP);return d},NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT);d||v(a,b);return b};this.getTextElements=u;this.getParagraphElements=function(a){var d;d=U.getNodesInRange(a,function(a){var d=NodeFilter.FILTER_REJECT;if(g(a))d=NodeFilter.FILTER_ACCEPT;
+else if(A(a)||q(a))d=NodeFilter.FILTER_SKIP;return d},NodeFilter.SHOW_ELEMENT);Q(a.startContainer,d,g);return d};this.getImageElements=function(a){var d;d=U.getNodesInRange(a,function(a){var d=NodeFilter.FILTER_SKIP;h(a)&&(d=NodeFilter.FILTER_ACCEPT);return d},NodeFilter.SHOW_ELEMENT);Q(a.startContainer,d,h);return d};this.getHyperlinkElements=function(a){var d=[],e=a.cloneRange();a.collapsed&&a.endContainer.nodeType===Node.ELEMENT_NODE&&(a=R(a.endContainer,a.endOffset),a.nodeType===Node.TEXT_NODE&&
+e.setEnd(a,1));u(e,!0,!1).forEach(function(a){for(a=a.parentNode;!g(a);){if(b(a)&&-1===d.indexOf(a)){d.push(a);break}a=a.parentNode}});e.detach();return d};this.getNormalizedFontFamilyName=function(a){/^(["'])(?:.|[\n\r])*?\1$/.test(a)||(a=a.replace(/^[ \t\r\n\f]*((?:.|[\n\r])*?)[ \t\r\n\f]*$/,"$1"),/[ \t\r\n\f]/.test(a)&&(a="'"+a.replace(/[ \t\r\n\f]+/g," ")+"'"));return a}};odf.OdfUtils=new odf.OdfUtilsImpl;gui.OdfTextBodyNodeFilter=function(){var h=odf.OdfUtils,k=Node.TEXT_NODE,c=NodeFilter.FILTER_REJECT,b=NodeFilter.FILTER_ACCEPT,g=odf.Namespaces.textns;this.acceptNode=function(n){if(n.nodeType===k){if(!h.isGroupingElement(n.parentNode))return c}else if(n.namespaceURI===g&&"tracked-changes"===n.localName)return c;return b}};xmldom.LSSerializerFilter=function(){};xmldom.LSSerializerFilter.prototype.acceptNode=function(h){};odf.OdfNodeFilter=function(){this.acceptNode=function(h){return"http://www.w3.org/1999/xhtml"===h.namespaceURI?NodeFilter.FILTER_SKIP:h.namespaceURI&&h.namespaceURI.match(/^urn:webodf:/)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}};xmldom.XPathIterator=function(){};xmldom.XPathIterator.prototype.next=function(){};xmldom.XPathIterator.prototype.reset=function(){};
+function createXPathSingleton(){function h(b,a,d){return-1!==b&&(b<a||-1===a)&&(b<d||-1===d)}function k(b){for(var a=[],d=0,c=b.length,l;d<c;){var g=b,n=c,m=a,k="",p=[],q=g.indexOf("[",d),w=g.indexOf("/",d),F=g.indexOf("=",d);h(w,q,F)?(k=g.substring(d,w),d=w+1):h(q,w,F)?(k=g.substring(d,q),d=f(g,q,p)):h(F,w,q)?(k=g.substring(d,F),d=F):(k=g.substring(d,n),d=n);m.push({location:k,predicates:p});if(d<c&&"="===b[d]){l=b.substring(d+1,c);if(2<l.length&&("'"===l[0]||'"'===l[0]))l=l.slice(1,l.length-1);
+else try{l=parseInt(l,10)}catch(L){}d=c}}return{steps:a,value:l}}function c(){var b=null,a=!1;this.setNode=function(a){b=a};this.reset=function(){a=!1};this.next=function(){var d=a?null:b;a=!0;return d}}function b(b,a,d){this.reset=function(){b.reset()};this.next=function(){for(var c=b.next();c;){c.nodeType===Node.ELEMENT_NODE&&(c=c.getAttributeNodeNS(a,d));if(c)break;c=b.next()}return c}}function g(b,a){var d=b.next(),c=null;this.reset=function(){b.reset();d=b.next();c=null};this.next=function(){for(;d;){if(c)if(a&&
+c.firstChild)c=c.firstChild;else{for(;!c.nextSibling&&c!==d;)c=c.parentNode;c===d?d=b.next():c=c.nextSibling}else{do(c=d.firstChild)||(d=b.next());while(d&&!c)}if(c&&c.nodeType===Node.ELEMENT_NODE)return c}return null}}function n(b,a){this.reset=function(){b.reset()};this.next=function(){for(var d=b.next();d&&!a(d);)d=b.next();return d}}function p(b,a,d){a=a.split(":",2);var c=d(a[0]),l=a[1];return new n(b,function(a){return a.localName===l&&a.namespaceURI===c})}function m(b,a,d){var f=new c,l=q(f,
+a,d),g=a.value;return void 0===g?new n(b,function(a){f.setNode(a);l.reset();return null!==l.next()}):new n(b,function(a){f.setNode(a);l.reset();return(a=l.next())?a.nodeValue===g:!1})}var q,f;f=function(b,a,d){for(var c=a,l=b.length,f=0;c<l;)"]"===b[c]?(--f,0>=f&&d.push(k(b.substring(a,c)))):"["===b[c]&&(0>=f&&(a=c+1),f+=1),c+=1;return c};q=function(e,a,d){var c,l,f,h;for(c=0;c<a.steps.length;c+=1){f=a.steps[c];l=f.location;if(""===l)e=new g(e,!1);else if("@"===l[0]){l=l.substr(1).split(":",2);h=
+d(l[0]);if(!h)throw"No namespace associated with the prefix "+l[0];e=new b(e,h,l[1])}else"."!==l&&(e=new g(e,!1),-1!==l.indexOf(":")&&(e=p(e,l,d)));for(l=0;l<f.predicates.length;l+=1)h=f.predicates[l],e=m(e,h,d)}return e};return{getODFElementsWithXPath:function(b,a,d){var f=b.ownerDocument,l=[],g=null;if(f&&"function"===typeof f.evaluate)for(d=f.evaluate(a,b,d,XPathResult.UNORDERED_NODE_ITERATOR_TYPE,null),g=d.iterateNext();null!==g;)g.nodeType===Node.ELEMENT_NODE&&l.push(g),g=d.iterateNext();else{l=
+new c;l.setNode(b);b=k(a);l=q(l,b,d);b=[];for(d=l.next();d;)b.push(d),d=l.next();l=b}return l}}}xmldom.XPath=createXPathSingleton();odf.StyleInfo=function(){function h(a,d){var b,e,c,l,f,g=0;if(b=H[a.localName])if(c=b[a.namespaceURI])g=c.length;for(b=0;b<g;b+=1)e=c[b],l=e.ns,f=e.localname,(e=a.getAttributeNS(l,f))&&a.setAttributeNS(l,F[l]+f,d+e);for(c=a.firstElementChild;c;)h(c,d),c=c.nextElementSibling}function k(a,d){var b,e,c,l,f,g=0;if(b=H[a.localName])if(c=b[a.namespaceURI])g=c.length;for(b=0;b<g;b+=1)if(e=c[b],l=e.ns,f=e.localname,e=a.getAttributeNS(l,f))e=e.replace(d,""),a.setAttributeNS(l,F[l]+f,e);for(c=a.firstElementChild;c;)k(c,
+d),c=c.nextElementSibling}function c(a,d){var b,e,c,l,f,g=0;if(b=H[a.localName])if(c=b[a.namespaceURI])g=c.length;for(b=0;b<g;b+=1)if(l=c[b],e=l.ns,f=l.localname,e=a.getAttributeNS(e,f))d=d||{},l=l.keyname,d.hasOwnProperty(l)?d[l][e]=1:(f={},f[e]=1,d[l]=f);return d}function b(a,d){var e,l;c(a,d);for(e=a.firstChild;e;)e.nodeType===Node.ELEMENT_NODE&&(l=e,b(l,d)),e=e.nextSibling}function g(a,d,b){this.key=a;this.name=d;this.family=b;this.requires={}}function n(a,d,b){var e=a+'"'+d,c=b[e];c||(c=b[e]=
+new g(e,a,d));return c}function p(a,d,b){var e,c,l,f,g,r=0;e=a.getAttributeNS(t,"name");f=a.getAttributeNS(t,"family");e&&f&&(d=n(e,f,b));if(d){if(e=H[a.localName])if(l=e[a.namespaceURI])r=l.length;for(e=0;e<r;e+=1)if(f=l[e],c=f.ns,g=f.localname,c=a.getAttributeNS(c,g))f=f.keyname,f=n(c,f,b),d.requires[f.key]=f}for(a=a.firstElementChild;a;)p(a,d,b),a=a.nextElementSibling;return b}function m(a,d){var b=d[a.family];b||(b=d[a.family]={});b[a.name]=1;Object.keys(a.requires).forEach(function(b){m(a.requires[b],
+d)})}function q(a,d){var b=p(a,null,{});Object.keys(b).forEach(function(a){a=b[a];var e=d[a.family];e&&e.hasOwnProperty(a.name)&&m(a,d)})}function f(a,d){function b(d){(d=l.getAttributeNS(t,d))&&(a[d]=!0)}var e=["font-name","font-name-asian","font-name-complex"],c,l;for(c=d&&d.firstElementChild;c;)l=c,e.forEach(b),f(a,l),c=c.nextElementSibling}function e(a,d){function b(a){var e=f.getAttributeNS(t,a);e&&d.hasOwnProperty(e)&&f.setAttributeNS(t,"style:"+a,d[e])}var c=["font-name","font-name-asian",
+"font-name-complex"],l,f;for(l=a&&a.firstElementChild;l;)f=l,c.forEach(b),e(f,d),l=l.nextElementSibling}var a=odf.Namespaces.chartns,d=odf.Namespaces.dbns,r=odf.Namespaces.dr3dns,l=odf.Namespaces.drawns,B=odf.Namespaces.formns,y=odf.Namespaces.numberns,D=odf.Namespaces.officens,z=odf.Namespaces.presentationns,t=odf.Namespaces.stylens,x=odf.Namespaces.tablens,w=odf.Namespaces.textns,F={"urn:oasis:names:tc:opendocument:xmlns:chart:1.0":"chart:","urn:oasis:names:tc:opendocument:xmlns:database:1.0":"db:",
+"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0":"dr3d:","urn:oasis:names:tc:opendocument:xmlns:drawing:1.0":"draw:","urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0":"fo:","urn:oasis:names:tc:opendocument:xmlns:form:1.0":"form:","urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0":"number:","urn:oasis:names:tc:opendocument:xmlns:office:1.0":"office:","urn:oasis:names:tc:opendocument:xmlns:presentation:1.0":"presentation:","urn:oasis:names:tc:opendocument:xmlns:style:1.0":"style:","urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0":"svg:",
+"urn:oasis:names:tc:opendocument:xmlns:table:1.0":"table:","urn:oasis:names:tc:opendocument:xmlns:text:1.0":"chart:","http://www.w3.org/XML/1998/namespace":"xml:"},L={text:[{ens:t,en:"tab-stop",ans:t,a:"leader-text-style"},{ens:t,en:"drop-cap",ans:t,a:"style-name"},{ens:w,en:"notes-configuration",ans:w,a:"citation-body-style-name"},{ens:w,en:"notes-configuration",ans:w,a:"citation-style-name"},{ens:w,en:"a",ans:w,a:"style-name"},{ens:w,en:"alphabetical-index",ans:w,a:"style-name"},{ens:w,en:"linenumbering-configuration",
+ans:w,a:"style-name"},{ens:w,en:"list-level-style-number",ans:w,a:"style-name"},{ens:w,en:"ruby-text",ans:w,a:"style-name"},{ens:w,en:"span",ans:w,a:"style-name"},{ens:w,en:"a",ans:w,a:"visited-style-name"},{ens:t,en:"text-properties",ans:t,a:"text-line-through-text-style"},{ens:w,en:"alphabetical-index-source",ans:w,a:"main-entry-style-name"},{ens:w,en:"index-entry-bibliography",ans:w,a:"style-name"},{ens:w,en:"index-entry-chapter",ans:w,a:"style-name"},{ens:w,en:"index-entry-link-end",ans:w,a:"style-name"},
+{ens:w,en:"index-entry-link-start",ans:w,a:"style-name"},{ens:w,en:"index-entry-page-number",ans:w,a:"style-name"},{ens:w,en:"index-entry-span",ans:w,a:"style-name"},{ens:w,en:"index-entry-tab-stop",ans:w,a:"style-name"},{ens:w,en:"index-entry-text",ans:w,a:"style-name"},{ens:w,en:"index-title-template",ans:w,a:"style-name"},{ens:w,en:"list-level-style-bullet",ans:w,a:"style-name"},{ens:w,en:"outline-level-style",ans:w,a:"style-name"}],paragraph:[{ens:l,en:"caption",ans:l,a:"text-style-name"},{ens:l,
+en:"circle",ans:l,a:"text-style-name"},{ens:l,en:"connector",ans:l,a:"text-style-name"},{ens:l,en:"control",ans:l,a:"text-style-name"},{ens:l,en:"custom-shape",ans:l,a:"text-style-name"},{ens:l,en:"ellipse",ans:l,a:"text-style-name"},{ens:l,en:"frame",ans:l,a:"text-style-name"},{ens:l,en:"line",ans:l,a:"text-style-name"},{ens:l,en:"measure",ans:l,a:"text-style-name"},{ens:l,en:"path",ans:l,a:"text-style-name"},{ens:l,en:"polygon",ans:l,a:"text-style-name"},{ens:l,en:"polyline",ans:l,a:"text-style-name"},
+{ens:l,en:"rect",ans:l,a:"text-style-name"},{ens:l,en:"regular-polygon",ans:l,a:"text-style-name"},{ens:D,en:"annotation",ans:l,a:"text-style-name"},{ens:B,en:"column",ans:B,a:"text-style-name"},{ens:t,en:"style",ans:t,a:"next-style-name"},{ens:x,en:"body",ans:x,a:"paragraph-style-name"},{ens:x,en:"even-columns",ans:x,a:"paragraph-style-name"},{ens:x,en:"even-rows",ans:x,a:"paragraph-style-name"},{ens:x,en:"first-column",ans:x,a:"paragraph-style-name"},{ens:x,en:"first-row",ans:x,a:"paragraph-style-name"},
+{ens:x,en:"last-column",ans:x,a:"paragraph-style-name"},{ens:x,en:"last-row",ans:x,a:"paragraph-style-name"},{ens:x,en:"odd-columns",ans:x,a:"paragraph-style-name"},{ens:x,en:"odd-rows",ans:x,a:"paragraph-style-name"},{ens:w,en:"notes-configuration",ans:w,a:"default-style-name"},{ens:w,en:"alphabetical-index-entry-template",ans:w,a:"style-name"},{ens:w,en:"bibliography-entry-template",ans:w,a:"style-name"},{ens:w,en:"h",ans:w,a:"style-name"},{ens:w,en:"illustration-index-entry-template",ans:w,a:"style-name"},
+{ens:w,en:"index-source-style",ans:w,a:"style-name"},{ens:w,en:"object-index-entry-template",ans:w,a:"style-name"},{ens:w,en:"p",ans:w,a:"style-name"},{ens:w,en:"table-index-entry-template",ans:w,a:"style-name"},{ens:w,en:"table-of-content-entry-template",ans:w,a:"style-name"},{ens:w,en:"table-index-entry-template",ans:w,a:"style-name"},{ens:w,en:"user-index-entry-template",ans:w,a:"style-name"},{ens:t,en:"page-layout-properties",ans:t,a:"register-truth-ref-style-name"}],chart:[{ens:a,en:"axis",ans:a,
+a:"style-name"},{ens:a,en:"chart",ans:a,a:"style-name"},{ens:a,en:"data-label",ans:a,a:"style-name"},{ens:a,en:"data-point",ans:a,a:"style-name"},{ens:a,en:"equation",ans:a,a:"style-name"},{ens:a,en:"error-indicator",ans:a,a:"style-name"},{ens:a,en:"floor",ans:a,a:"style-name"},{ens:a,en:"footer",ans:a,a:"style-name"},{ens:a,en:"grid",ans:a,a:"style-name"},{ens:a,en:"legend",ans:a,a:"style-name"},{ens:a,en:"mean-value",ans:a,a:"style-name"},{ens:a,en:"plot-area",ans:a,a:"style-name"},{ens:a,en:"regression-curve",
+ans:a,a:"style-name"},{ens:a,en:"series",ans:a,a:"style-name"},{ens:a,en:"stock-gain-marker",ans:a,a:"style-name"},{ens:a,en:"stock-loss-marker",ans:a,a:"style-name"},{ens:a,en:"stock-range-line",ans:a,a:"style-name"},{ens:a,en:"subtitle",ans:a,a:"style-name"},{ens:a,en:"title",ans:a,a:"style-name"},{ens:a,en:"wall",ans:a,a:"style-name"}],section:[{ens:w,en:"alphabetical-index",ans:w,a:"style-name"},{ens:w,en:"bibliography",ans:w,a:"style-name"},{ens:w,en:"illustration-index",ans:w,a:"style-name"},
+{ens:w,en:"index-title",ans:w,a:"style-name"},{ens:w,en:"object-index",ans:w,a:"style-name"},{ens:w,en:"section",ans:w,a:"style-name"},{ens:w,en:"table-of-content",ans:w,a:"style-name"},{ens:w,en:"table-index",ans:w,a:"style-name"},{ens:w,en:"user-index",ans:w,a:"style-name"}],ruby:[{ens:w,en:"ruby",ans:w,a:"style-name"}],table:[{ens:d,en:"query",ans:d,a:"style-name"},{ens:d,en:"table-representation",ans:d,a:"style-name"},{ens:x,en:"background",ans:x,a:"style-name"},{ens:x,en:"table",ans:x,a:"style-name"}],
+"table-column":[{ens:d,en:"column",ans:d,a:"style-name"},{ens:x,en:"table-column",ans:x,a:"style-name"}],"table-row":[{ens:d,en:"query",ans:d,a:"default-row-style-name"},{ens:d,en:"table-representation",ans:d,a:"default-row-style-name"},{ens:x,en:"table-row",ans:x,a:"style-name"}],"table-cell":[{ens:d,en:"column",ans:d,a:"default-cell-style-name"},{ens:x,en:"table-column",ans:x,a:"default-cell-style-name"},{ens:x,en:"table-row",ans:x,a:"default-cell-style-name"},{ens:x,en:"body",ans:x,a:"style-name"},
+{ens:x,en:"covered-table-cell",ans:x,a:"style-name"},{ens:x,en:"even-columns",ans:x,a:"style-name"},{ens:x,en:"covered-table-cell",ans:x,a:"style-name"},{ens:x,en:"even-columns",ans:x,a:"style-name"},{ens:x,en:"even-rows",ans:x,a:"style-name"},{ens:x,en:"first-column",ans:x,a:"style-name"},{ens:x,en:"first-row",ans:x,a:"style-name"},{ens:x,en:"last-column",ans:x,a:"style-name"},{ens:x,en:"last-row",ans:x,a:"style-name"},{ens:x,en:"odd-columns",ans:x,a:"style-name"},{ens:x,en:"odd-rows",ans:x,a:"style-name"},
+{ens:x,en:"table-cell",ans:x,a:"style-name"}],graphic:[{ens:r,en:"cube",ans:l,a:"style-name"},{ens:r,en:"extrude",ans:l,a:"style-name"},{ens:r,en:"rotate",ans:l,a:"style-name"},{ens:r,en:"scene",ans:l,a:"style-name"},{ens:r,en:"sphere",ans:l,a:"style-name"},{ens:l,en:"caption",ans:l,a:"style-name"},{ens:l,en:"circle",ans:l,a:"style-name"},{ens:l,en:"connector",ans:l,a:"style-name"},{ens:l,en:"control",ans:l,a:"style-name"},{ens:l,en:"custom-shape",ans:l,a:"style-name"},{ens:l,en:"ellipse",ans:l,a:"style-name"},
+{ens:l,en:"frame",ans:l,a:"style-name"},{ens:l,en:"g",ans:l,a:"style-name"},{ens:l,en:"line",ans:l,a:"style-name"},{ens:l,en:"measure",ans:l,a:"style-name"},{ens:l,en:"page-thumbnail",ans:l,a:"style-name"},{ens:l,en:"path",ans:l,a:"style-name"},{ens:l,en:"polygon",ans:l,a:"style-name"},{ens:l,en:"polyline",ans:l,a:"style-name"},{ens:l,en:"rect",ans:l,a:"style-name"},{ens:l,en:"regular-polygon",ans:l,a:"style-name"},{ens:D,en:"annotation",ans:l,a:"style-name"}],presentation:[{ens:r,en:"cube",ans:z,
+a:"style-name"},{ens:r,en:"extrude",ans:z,a:"style-name"},{ens:r,en:"rotate",ans:z,a:"style-name"},{ens:r,en:"scene",ans:z,a:"style-name"},{ens:r,en:"sphere",ans:z,a:"style-name"},{ens:l,en:"caption",ans:z,a:"style-name"},{ens:l,en:"circle",ans:z,a:"style-name"},{ens:l,en:"connector",ans:z,a:"style-name"},{ens:l,en:"control",ans:z,a:"style-name"},{ens:l,en:"custom-shape",ans:z,a:"style-name"},{ens:l,en:"ellipse",ans:z,a:"style-name"},{ens:l,en:"frame",ans:z,a:"style-name"},{ens:l,en:"g",ans:z,a:"style-name"},
+{ens:l,en:"line",ans:z,a:"style-name"},{ens:l,en:"measure",ans:z,a:"style-name"},{ens:l,en:"page-thumbnail",ans:z,a:"style-name"},{ens:l,en:"path",ans:z,a:"style-name"},{ens:l,en:"polygon",ans:z,a:"style-name"},{ens:l,en:"polyline",ans:z,a:"style-name"},{ens:l,en:"rect",ans:z,a:"style-name"},{ens:l,en:"regular-polygon",ans:z,a:"style-name"},{ens:D,en:"annotation",ans:z,a:"style-name"}],"drawing-page":[{ens:l,en:"page",ans:l,a:"style-name"},{ens:z,en:"notes",ans:l,a:"style-name"},{ens:t,en:"handout-master",
+ans:l,a:"style-name"},{ens:t,en:"master-page",ans:l,a:"style-name"}],"list-style":[{ens:w,en:"list",ans:w,a:"style-name"},{ens:w,en:"numbered-paragraph",ans:w,a:"style-name"},{ens:w,en:"list-item",ans:w,a:"style-override"},{ens:t,en:"style",ans:t,a:"list-style-name"}],data:[{ens:t,en:"style",ans:t,a:"data-style-name"},{ens:t,en:"style",ans:t,a:"percentage-data-style-name"},{ens:z,en:"date-time-decl",ans:t,a:"data-style-name"},{ens:w,en:"creation-date",ans:t,a:"data-style-name"},{ens:w,en:"creation-time",
+ans:t,a:"data-style-name"},{ens:w,en:"database-display",ans:t,a:"data-style-name"},{ens:w,en:"date",ans:t,a:"data-style-name"},{ens:w,en:"editing-duration",ans:t,a:"data-style-name"},{ens:w,en:"expression",ans:t,a:"data-style-name"},{ens:w,en:"meta-field",ans:t,a:"data-style-name"},{ens:w,en:"modification-date",ans:t,a:"data-style-name"},{ens:w,en:"modification-time",ans:t,a:"data-style-name"},{ens:w,en:"print-date",ans:t,a:"data-style-name"},{ens:w,en:"print-time",ans:t,a:"data-style-name"},{ens:w,
+en:"table-formula",ans:t,a:"data-style-name"},{ens:w,en:"time",ans:t,a:"data-style-name"},{ens:w,en:"user-defined",ans:t,a:"data-style-name"},{ens:w,en:"user-field-get",ans:t,a:"data-style-name"},{ens:w,en:"user-field-input",ans:t,a:"data-style-name"},{ens:w,en:"variable-get",ans:t,a:"data-style-name"},{ens:w,en:"variable-input",ans:t,a:"data-style-name"},{ens:w,en:"variable-set",ans:t,a:"data-style-name"}],"page-layout":[{ens:z,en:"notes",ans:t,a:"page-layout-name"},{ens:t,en:"handout-master",ans:t,
+a:"page-layout-name"},{ens:t,en:"master-page",ans:t,a:"page-layout-name"}]},H,G=xmldom.XPath;this.collectUsedFontFaces=f;this.changeFontFaceNames=e;this.UsedStyleList=function(a,d){var e={};this.uses=function(a){var d=a.localName,b=a.getAttributeNS(l,"name")||a.getAttributeNS(t,"name");a="style"===d?a.getAttributeNS(t,"family"):a.namespaceURI===y?"data":d;return(a=e[a])?0<a[b]:!1};b(a,e);d&&q(d,e)};this.getStyleName=function(a,d){var b,e,c=H[d.localName];if(c&&(c=c[d.namespaceURI]))for(e=0;e<c.length;e+=
+1)if(c[e].keyname===a&&(c=c[e],d.hasAttributeNS(c.ns,c.localname))){b=d.getAttributeNS(c.ns,c.localname);break}return b};this.hasDerivedStyles=function(a,d,b){var e=b.getAttributeNS(t,"name");b=b.getAttributeNS(t,"family");return G.getODFElementsWithXPath(a,'//style:*[@style:parent-style-name="'+e+'"][@style:family="'+b+'"]',d).length?!0:!1};this.prefixStyleNames=function(a,d,b){var e;if(a){for(e=a.firstChild;e;){if(e.nodeType===Node.ELEMENT_NODE){var c=e,f=d,g=c.getAttributeNS(l,"name"),r=void 0;
+g?r=l:(g=c.getAttributeNS(t,"name"))&&(r=t);r&&c.setAttributeNS(r,F[r]+"name",f+g)}e=e.nextSibling}h(a,d);b&&h(b,d)}};this.removePrefixFromStyleNames=function(a,d,b){var e=new RegExp("^"+d);if(a){for(d=a.firstChild;d;){if(d.nodeType===Node.ELEMENT_NODE){var c=d,f=e,g=c.getAttributeNS(l,"name"),r=void 0;g?r=l:(g=c.getAttributeNS(t,"name"))&&(r=t);r&&(g=g.replace(f,""),c.setAttributeNS(r,F[r]+"name",g))}d=d.nextSibling}k(a,e);b&&k(b,e)}};this.determineStylesForNode=c;H=function(){var a,d,b,e,c,l={},
+f,g,r,h;for(b in L)if(L.hasOwnProperty(b))for(e=L[b],d=e.length,a=0;a<d;a+=1)c=e[a],r=c.en,h=c.ens,l.hasOwnProperty(r)?f=l[r]:l[r]=f={},f.hasOwnProperty(h)?g=f[h]:f[h]=g=[],g.push({ns:c.ans,localname:c.a,keyname:b});return l}()};"function"!==typeof Object.create&&(Object.create=function(h){var k=function(){};k.prototype=h;return new k});
+xmldom.LSSerializer=function(){function h(b){var c=b||{},h=function(b){var a={},d;for(d in b)b.hasOwnProperty(d)&&(a[b[d]]=d);return a}(b),m=[c],k=[h],f=0;this.push=function(){f+=1;c=m[f]=Object.create(c);h=k[f]=Object.create(h)};this.pop=function(){m.pop();k.pop();--f;c=m[f];h=k[f]};this.getLocalNamespaceDefinitions=function(){return h};this.getQName=function(b){var a=b.namespaceURI,d=0,f;if(!a)return b.localName;if(f=h[a])return f+":"+b.localName;do{f||!b.prefix?(f="ns"+d,d+=1):f=b.prefix;if(c[f]===
+a)break;if(!c[f]){c[f]=a;h[a]=f;break}f=null}while(null===f);return f+":"+b.localName}}function k(b){return b.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&apos;").replace(/"/g,"&quot;")}function c(g,h){var p="",m=b.filter?b.filter.acceptNode(h):NodeFilter.FILTER_ACCEPT,q;if(m===NodeFilter.FILTER_ACCEPT&&h.nodeType===Node.ELEMENT_NODE){g.push();q=g.getQName(h);var f,e=h.attributes,a,d,r,l="",B;f="<"+q;a=e.length;for(d=0;d<a;d+=1)r=e.item(d),"http://www.w3.org/2000/xmlns/"!==
+r.namespaceURI&&(B=b.filter?b.filter.acceptNode(r):NodeFilter.FILTER_ACCEPT,B===NodeFilter.FILTER_ACCEPT&&(B=g.getQName(r),r="string"===typeof r.value?k(r.value):r.value,l+=" "+(B+'="'+r+'"')));a=g.getLocalNamespaceDefinitions();for(d in a)a.hasOwnProperty(d)&&((e=a[d])?"xmlns"!==e&&(f+=" xmlns:"+a[d]+'="'+d+'"'):f+=' xmlns="'+d+'"');p+=f+(l+">")}if(m===NodeFilter.FILTER_ACCEPT||m===NodeFilter.FILTER_SKIP){for(m=h.firstChild;m;)p+=c(g,m),m=m.nextSibling;h.nodeValue&&(p+=k(h.nodeValue))}q&&(p+="</"+
+q+">",g.pop());return p}var b=this;this.filter=null;this.writeToString=function(b,n){if(!b)return"";var k=new h(n);return c(k,b)}};(function(){function h(b){var a,d=m.length;for(a=0;a<d;a+=1)if("urn:oasis:names:tc:opendocument:xmlns:office:1.0"===b.namespaceURI&&b.localName===m[a])return a;return-1}function k(b,a){var d=new g.UsedStyleList(b,a),c=new odf.OdfNodeFilter;this.acceptNode=function(b){var e=c.acceptNode(b);e===NodeFilter.FILTER_ACCEPT&&b.parentNode===a&&b.nodeType===Node.ELEMENT_NODE&&(e=d.uses(b)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT);return e}}function c(b,a){var d=new k(b,a);this.acceptNode=function(a){var b=
+d.acceptNode(a);b!==NodeFilter.FILTER_ACCEPT||!a.parentNode||a.parentNode.namespaceURI!==odf.Namespaces.textns||"s"!==a.parentNode.localName&&"tab"!==a.parentNode.localName||(b=NodeFilter.FILTER_REJECT);return b}}function b(b,a){if(a){var d=h(a),c,f=b.firstChild;if(-1!==d){for(;f;){c=h(f);if(-1!==c&&c>d)break;f=f.nextSibling}b.insertBefore(a,f)}}}var g=new odf.StyleInfo,n=core.DomUtils,p=odf.Namespaces.stylens,m="meta settings scripts font-face-decls styles automatic-styles master-styles body".split(" "),
+q=Date.now()+"_webodf_",f=new core.Base64;odf.ODFElement=function(){};odf.ODFDocumentElement=function(){};odf.ODFDocumentElement.prototype=new odf.ODFElement;odf.ODFDocumentElement.prototype.constructor=odf.ODFDocumentElement;odf.ODFDocumentElement.prototype.fontFaceDecls=null;odf.ODFDocumentElement.prototype.manifest=null;odf.ODFDocumentElement.prototype.settings=null;odf.ODFDocumentElement.namespaceURI="urn:oasis:names:tc:opendocument:xmlns:office:1.0";odf.ODFDocumentElement.localName="document";
+odf.AnnotationElement=function(){};odf.OdfPart=function(b,a,d,c){var f=this;this.size=0;this.type=null;this.name=b;this.container=d;this.url=null;this.mimetype=a;this.onstatereadychange=this.document=null;this.EMPTY=0;this.LOADING=1;this.DONE=2;this.state=this.EMPTY;this.data="";this.load=function(){null!==c&&(this.mimetype=a,c.loadAsDataURL(b,a,function(a,d){a&&runtime.log(a);f.url=d;if(f.onchange)f.onchange(f);if(f.onstatereadychange)f.onstatereadychange(f)}))}};odf.OdfPart.prototype.load=function(){};
+odf.OdfPart.prototype.getUrl=function(){return this.data?"data:;base64,"+f.toBase64(this.data):null};odf.OdfContainer=function a(d,r){function l(a){for(var d=a.firstChild,b;d;)b=d.nextSibling,d.nodeType===Node.ELEMENT_NODE?l(d):d.nodeType===Node.PROCESSING_INSTRUCTION_NODE&&a.removeChild(d),d=b}function h(a){var d={},b,c,f=a.ownerDocument.createNodeIterator(a,NodeFilter.SHOW_ELEMENT,null,!1);for(a=f.nextNode();a;)"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===a.namespaceURI&&("annotation"===
+a.localName?(b=a.getAttributeNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","name"))&&(d.hasOwnProperty(b)?runtime.log("Warning: annotation name used more than once with <office:annotation/>: '"+b+"'"):d[b]=a):"annotation-end"===a.localName&&((b=a.getAttributeNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","name"))?d.hasOwnProperty(b)?(c=d[b],c.annotationEndElement?runtime.log("Warning: annotation name used more than once with <office:annotation-end/>: '"+b+"'"):c.annotationEndElement=
+a):runtime.log("Warning: annotation end without an annotation start, name: '"+b+"'"):runtime.log("Warning: annotation end without a name found"))),a=f.nextNode()}function m(a,d){for(var b=a&&a.firstChild;b;)b.nodeType===Node.ELEMENT_NODE&&b.setAttributeNS("urn:webodf:names:scope","scope",d),b=b.nextSibling}function D(a,d){for(var b=J.rootElement.meta,b=b&&b.firstChild;b&&(b.namespaceURI!==a||b.localName!==d);)b=b.nextSibling;for(b=b&&b.firstChild;b&&b.nodeType!==Node.TEXT_NODE;)b=b.nextSibling;return b?
+b.data:null}function z(a){var d={},b;for(a=a.firstChild;a;)a.nodeType===Node.ELEMENT_NODE&&a.namespaceURI===p&&"font-face"===a.localName&&(b=a.getAttributeNS(p,"name"),d[b]=a),a=a.nextSibling;return d}function t(a,d){var b=null,c,f,l;if(a)for(b=a.cloneNode(!0),c=b.firstElementChild;c;)f=c.nextElementSibling,(l=c.getAttributeNS("urn:webodf:names:scope","scope"))&&l!==d&&b.removeChild(c),c=f;return b}function x(a,d){var b,c,f,l=null,r={};if(a)for(d.forEach(function(a){g.collectUsedFontFaces(r,a)}),
+l=a.cloneNode(!0),b=l.firstElementChild;b;)c=b.nextElementSibling,f=b.getAttributeNS(p,"name"),r[f]||l.removeChild(b),b=c;return l}function w(a){var d=J.rootElement.ownerDocument,b;if(a){l(a.documentElement);try{b=d.importNode(a.documentElement,!0)}catch(c){}}return b}function F(a){J.state=a;if(J.onchange)J.onchange(J);if(J.onstatereadychange)J.onstatereadychange(J)}function L(a){V=null;J.rootElement=a;a.fontFaceDecls=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","font-face-decls");
+a.styles=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","styles");a.automaticStyles=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","automatic-styles");a.masterStyles=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","master-styles");a.body=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","body");a.meta=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","meta");a.settings=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0",
+"settings");a.scripts=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","scripts");h(a)}function H(d){var c=w(d),f=J.rootElement,l;c&&"document-styles"===c.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===c.namespaceURI?(f.fontFaceDecls=n.getDirectChild(c,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","font-face-decls"),b(f,f.fontFaceDecls),l=n.getDirectChild(c,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","styles"),f.styles=l||d.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0",
+"styles"),b(f,f.styles),l=n.getDirectChild(c,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","automatic-styles"),f.automaticStyles=l||d.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","automatic-styles"),m(f.automaticStyles,"document-styles"),b(f,f.automaticStyles),c=n.getDirectChild(c,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","master-styles"),f.masterStyles=c||d.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","master-styles"),b(f,f.masterStyles),
+g.prefixStyleNames(f.automaticStyles,q,f.masterStyles)):F(a.INVALID)}function G(d){d=w(d);var c,f,l,r;if(d&&"document-content"===d.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===d.namespaceURI){c=J.rootElement;l=n.getDirectChild(d,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","font-face-decls");if(c.fontFaceDecls&&l){r=c.fontFaceDecls;var h,v,u,k,q={};f=z(r);k=z(l);for(l=l.firstElementChild;l;){h=l.nextElementSibling;if(l.namespaceURI===p&&"font-face"===l.localName)if(v=l.getAttributeNS(p,
+"name"),f.hasOwnProperty(v)){if(!l.isEqualNode(f[v])){u=v;for(var A=f,B=k,C=0,R=void 0,R=u=u.replace(/\d+$/,"");A.hasOwnProperty(R)||B.hasOwnProperty(R);)C+=1,R=u+C;u=R;l.setAttributeNS(p,"style:name",u);r.appendChild(l);f[u]=l;delete k[v];q[v]=u}}else r.appendChild(l),f[v]=l,delete k[v];l=h}r=q}else l&&(c.fontFaceDecls=l,b(c,l));f=n.getDirectChild(d,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","automatic-styles");m(f,"document-content");r&&g.changeFontFaceNames(f,r);if(c.automaticStyles&&f)for(r=
+f.firstChild;r;)c.automaticStyles.appendChild(r),r=f.firstChild;else f&&(c.automaticStyles=f,b(c,f));d=n.getDirectChild(d,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","body");if(null===d)throw"<office:body/> tag is mising.";c.body=d;b(c,c.body)}else F(a.INVALID)}function A(a){a=w(a);var d;a&&"document-meta"===a.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===a.namespaceURI&&(d=J.rootElement,d.meta=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","meta"),
+b(d,d.meta))}function K(a){a=w(a);var d;a&&"document-settings"===a.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===a.namespaceURI&&(d=J.rootElement,d.settings=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","settings"),b(d,d.settings))}function v(a){a=w(a);var d;if(a&&"manifest"===a.localName&&"urn:oasis:names:tc:opendocument:xmlns:manifest:1.0"===a.namespaceURI)for(d=J.rootElement,d.manifest=a,a=d.manifest.firstElementChild;a;)"file-entry"===a.localName&&"urn:oasis:names:tc:opendocument:xmlns:manifest:1.0"===
+a.namespaceURI&&(S[a.getAttributeNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0","full-path")]=a.getAttributeNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0","media-type")),a=a.nextElementSibling}function u(a,d,b){a=n.getElementsByTagName(a,d);var c;for(c=0;c<a.length;c+=1)d=a[c],b.hasOwnProperty(d.namespaceURI)||d.parentNode.removeChild(d)}function Q(a){u(a,"script",{"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0":!0,"urn:oasis:names:tc:opendocument:xmlns:office:1.0":!0,"urn:oasis:names:tc:opendocument:xmlns:table:1.0":!0,
+"urn:oasis:names:tc:opendocument:xmlns:text:1.0":!0,"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0":!0});u(a,"style",{"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0":!0,"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0":!0,"urn:oasis:names:tc:opendocument:xmlns:style:1.0":!0})}function R(a){var d=a.firstElementChild,b=[],c,f,l,g=a.attributes,r=g.length;for(c=0;c<r;c+=1)l=g.item(c),f=l.localName.substr(0,2).toLowerCase(),null===l.namespaceURI&&"on"===f&&b.push(l);r=b.length;for(c=
+0;c<r;c+=1)a.removeAttributeNode(b[c]);for(;d;)R(d),d=d.nextElementSibling}function C(d){var b=d.shift();b?ba.loadAsDOM(b.path,function(c,f){f&&(Q(f),R(f.documentElement));b.handler(f);J.state===a.INVALID?c?runtime.log("ERROR: Unable to load "+b.path+" - "+c):runtime.log("ERROR: Unable to load "+b.path):(c&&runtime.log("DEBUG: Unable to load "+b.path+" - "+c),C(d))}):(h(J.rootElement),F(a.DONE))}function I(a){var d="";odf.Namespaces.forEachPrefix(function(a,b){d+=" xmlns:"+a+'="'+b+'"'});return'<?xml version="1.0" encoding="UTF-8"?><office:'+
+a+" "+d+' office:version="1.2">'}function P(){var a=new xmldom.LSSerializer,d=I("document-meta");a.filter=new odf.OdfNodeFilter;d+=a.writeToString(J.rootElement.meta,odf.Namespaces.namespaceMap);return d+"</office:document-meta>"}function U(a,d){var b=document.createElementNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0","manifest:file-entry");b.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0","manifest:full-path",a);b.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0",
+"manifest:media-type",d);return b}function T(){var a=runtime.parseXML('<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0" manifest:version="1.2"></manifest:manifest>'),d=a.documentElement,b=new xmldom.LSSerializer,c;for(c in S)S.hasOwnProperty(c)&&d.appendChild(U(c,S[c]));b.filter=new odf.OdfNodeFilter;return'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n'+b.writeToString(a,odf.Namespaces.namespaceMap)}function ca(){var a,d,b,c=odf.Namespaces.namespaceMap,
+f=new xmldom.LSSerializer,l=I("document-styles");d=t(J.rootElement.automaticStyles,"document-styles");b=J.rootElement.masterStyles.cloneNode(!0);a=x(J.rootElement.fontFaceDecls,[b,J.rootElement.styles,d]);g.removePrefixFromStyleNames(d,q,b);f.filter=new k(b,d);l+=f.writeToString(a,c);l+=f.writeToString(J.rootElement.styles,c);l+=f.writeToString(d,c);l+=f.writeToString(b,c);return l+"</office:document-styles>"}function Y(){var a,d,b=odf.Namespaces.namespaceMap,f=new xmldom.LSSerializer,l=I("document-content");
+d=t(J.rootElement.automaticStyles,"document-content");a=x(J.rootElement.fontFaceDecls,[d]);f.filter=new c(J.rootElement.body,d);l+=f.writeToString(a,b);l+=f.writeToString(d,b);l+=f.writeToString(J.rootElement.body,b);return l+"</office:document-content>"}function E(d,b){runtime.loadXML(d,function(d,c){if(d)b(d);else if(c){Q(c);R(c.documentElement);var f=w(c);f&&"document"===f.localName&&"urn:oasis:names:tc:opendocument:xmlns:office:1.0"===f.namespaceURI?(L(f),F(a.DONE)):F(a.INVALID)}else b("No DOM was loaded.")})}
+function Z(a,d){var c;c=J.rootElement;var f=c.meta;f||(c.meta=f=document.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0","meta"),b(c,f));c=f;a&&n.mapKeyValObjOntoNode(c,a,odf.Namespaces.lookupNamespaceURI);d&&n.removeKeyElementsFromNode(c,d,odf.Namespaces.lookupNamespaceURI)}function da(d,b){function c(a,d){var b;d||(d=a);b=document.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0",d);r[a]=b;r.appendChild(b)}var f=new core.Zip("",null),l="application/vnd.oasis.opendocument."+
+d+(!0===b?"-template":""),g=runtime.byteArrayFromString(l,"utf8"),r=J.rootElement,h=document.createElementNS("urn:oasis:names:tc:opendocument:xmlns:office:1.0",d);f.save("mimetype",g,!1,new Date);c("meta");c("settings");c("scripts");c("fontFaceDecls","font-face-decls");c("styles");c("automaticStyles","automatic-styles");c("masterStyles","master-styles");c("body");r.body.appendChild(h);S["/"]=l;S["settings.xml"]="text/xml";S["meta.xml"]="text/xml";S["styles.xml"]="text/xml";S["content.xml"]="text/xml";
+F(a.DONE);return f}function X(){var a,d=new Date,b="";J.rootElement.settings&&J.rootElement.settings.firstElementChild&&(a=new xmldom.LSSerializer,b=I("document-settings"),a.filter=new odf.OdfNodeFilter,b+=a.writeToString(J.rootElement.settings,odf.Namespaces.namespaceMap),b+="</office:document-settings>");(a=b)?(a=runtime.byteArrayFromString(a,"utf8"),ba.save("settings.xml",a,!0,d)):ba.remove("settings.xml");b=runtime.getWindow();a="WebODF/"+webodf.Version;b&&(a=a+" "+b.navigator.userAgent);Z({"meta:generator":a},
+null);a=runtime.byteArrayFromString(P(),"utf8");ba.save("meta.xml",a,!0,d);a=runtime.byteArrayFromString(ca(),"utf8");ba.save("styles.xml",a,!0,d);a=runtime.byteArrayFromString(Y(),"utf8");ba.save("content.xml",a,!0,d);a=runtime.byteArrayFromString(T(),"utf8");ba.save("META-INF/manifest.xml",a,!0,d)}function ha(a,d){X();ba.writeAs(a,function(a){d(a)})}var J=this,ba,S={},V,M="";this.onstatereadychange=r;this.state=this.onchange=null;this.getMetadata=D;this.setRootElement=L;this.getContentElement=function(){var a;
+V||(a=J.rootElement.body,V=n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","text")||n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","presentation")||n.getDirectChild(a,"urn:oasis:names:tc:opendocument:xmlns:office:1.0","spreadsheet"));if(!V)throw"Could not find content element in <office:body/>.";return V};this.getDocumentType=function(){var a=J.getContentElement();return a&&a.localName};this.isTemplate=function(){return"-template"===S["/"].substr(-9)};
+this.setIsTemplate=function(a){var d=S["/"],b="-template"===d.substr(-9);a!==b&&(d=a?d+"-template":d.substr(0,d.length-9),S["/"]=d,a=runtime.byteArrayFromString(d,"utf8"),ba.save("mimetype",a,!1,new Date))};this.getPart=function(a){return new odf.OdfPart(a,S[a],J,ba)};this.getPartData=function(a,d){ba.load(a,d)};this.setMetadata=Z;this.incrementEditingCycles=function(){var a=D(odf.Namespaces.metans,"editing-cycles"),a=a?parseInt(a,10):0;isNaN(a)&&(a=0);Z({"meta:editing-cycles":a+1},null);return a+
+1};this.createByteArray=function(a,d){X();ba.createByteArray(a,d)};this.saveAs=ha;this.save=function(a){ha(M,a)};this.getUrl=function(){return M};this.setBlob=function(a,d,b){b=f.convertBase64ToByteArray(b);ba.save(a,b,!1,new Date);S.hasOwnProperty(a)&&runtime.log(a+" has been overwritten.");S[a]=d};this.removeBlob=function(a){var d=ba.remove(a);runtime.assert(d,"file is not found: "+a);delete S[a]};this.state=a.LOADING;this.rootElement=function(a){var d=document.createElementNS(a.namespaceURI,a.localName),
+b;a=new a.Type;for(b in a)a.hasOwnProperty(b)&&(d[b]=a[b]);return d}({Type:odf.ODFDocumentElement,namespaceURI:odf.ODFDocumentElement.namespaceURI,localName:odf.ODFDocumentElement.localName});d===odf.OdfContainer.DocumentType.TEXT?ba=da("text"):d===odf.OdfContainer.DocumentType.TEXT_TEMPLATE?ba=da("text",!0):d===odf.OdfContainer.DocumentType.PRESENTATION?ba=da("presentation"):d===odf.OdfContainer.DocumentType.PRESENTATION_TEMPLATE?ba=da("presentation",!0):d===odf.OdfContainer.DocumentType.SPREADSHEET?
+ba=da("spreadsheet"):d===odf.OdfContainer.DocumentType.SPREADSHEET_TEMPLATE?ba=da("spreadsheet",!0):(M=d,ba=new core.Zip(M,function(d,b){ba=b;d?E(M,function(b){d&&(ba.error=d+"\n"+b,F(a.INVALID))}):C([{path:"styles.xml",handler:H},{path:"content.xml",handler:G},{path:"meta.xml",handler:A},{path:"settings.xml",handler:K},{path:"META-INF/manifest.xml",handler:v}])}))};odf.OdfContainer.EMPTY=0;odf.OdfContainer.LOADING=1;odf.OdfContainer.DONE=2;odf.OdfContainer.INVALID=3;odf.OdfContainer.SAVING=4;odf.OdfContainer.MODIFIED=
+5;odf.OdfContainer.getContainer=function(a){return new odf.OdfContainer(a,null)}})();odf.OdfContainer.DocumentType={TEXT:1,TEXT_TEMPLATE:2,PRESENTATION:3,PRESENTATION_TEMPLATE:4,SPREADSHEET:5,SPREADSHEET_TEMPLATE:6};gui.AnnotatableCanvas=function(){};gui.AnnotatableCanvas.prototype.refreshSize=function(){};gui.AnnotatableCanvas.prototype.getZoomLevel=function(){};gui.AnnotatableCanvas.prototype.getSizer=function(){};
+gui.AnnotationViewManager=function(h,k,c,b){function g(d){var b=d.annotationEndElement,c=e.createRange(),f=d.getAttributeNS(odf.Namespaces.officens,"name");b&&(c.setStart(d,d.childNodes.length),c.setEnd(b,0),d=a.getTextNodes(c,!1),d.forEach(function(a){var d;a:{for(d=a.parentNode;d.namespaceURI!==odf.Namespaces.officens||"body"!==d.localName;){if("http://www.w3.org/1999/xhtml"===d.namespaceURI&&"webodf-annotationHighlight"===d.className&&d.getAttribute("annotation")===f){d=!0;break a}d=d.parentNode}d=
+!1}d||(d=e.createElement("span"),d.className="webodf-annotationHighlight",d.setAttribute("annotation",f),a.parentNode.replaceChild(d,a),d.appendChild(a))}));c.detach()}function n(a){var b=h.getSizer();a?(c.style.display="inline-block",b.style.paddingRight=d.getComputedStyle(c).width):(c.style.display="none",b.style.paddingRight=0);h.refreshSize()}function p(){f.sort(function(a,d){return 0!==(a.compareDocumentPosition(d)&Node.DOCUMENT_POSITION_FOLLOWING)?-1:1})}function m(){var a;for(a=0;a<f.length;a+=
+1){var d=f[a],b=d.parentNode,e=b.nextElementSibling,g=e.nextElementSibling,m=b.parentNode,n=0,n=f[f.indexOf(d)-1],k=void 0,d=h.getZoomLevel();b.style.left=(c.getBoundingClientRect().left-m.getBoundingClientRect().left)/d+"px";b.style.width=c.getBoundingClientRect().width/d+"px";e.style.width=parseFloat(b.style.left)-30+"px";n?(k=n.parentNode.getBoundingClientRect(),20>=(m.getBoundingClientRect().top-k.bottom)/d?b.style.top=Math.abs(m.getBoundingClientRect().top-k.bottom)/d+20+"px":b.style.top="0px"):
+b.style.top="0px";g.style.left=e.getBoundingClientRect().width/d+"px";var e=g.style,m=g.getBoundingClientRect().left/d,n=g.getBoundingClientRect().top/d,k=b.getBoundingClientRect().left/d,p=b.getBoundingClientRect().top/d,q=0,L=0,q=k-m,q=q*q,L=p-n,L=L*L,m=Math.sqrt(q+L);e.width=m+"px";n=Math.asin((b.getBoundingClientRect().top-g.getBoundingClientRect().top)/(d*parseFloat(g.style.width)));g.style.transform="rotate("+n+"rad)";g.style.MozTransform="rotate("+n+"rad)";g.style.WebkitTransform="rotate("+
+n+"rad)";g.style.msTransform="rotate("+n+"rad)"}}function q(a){var d=f.indexOf(a),b=a.parentNode.parentNode;"div"===b.localName&&(b.parentNode.insertBefore(a,b),b.parentNode.removeChild(b));a=a.getAttributeNS(odf.Namespaces.officens,"name");a=e.querySelectorAll('span.webodf-annotationHighlight[annotation="'+a+'"]');for(var c,b=0;b<a.length;b+=1){for(c=a.item(b);c.firstChild;)c.parentNode.insertBefore(c.firstChild,c);c.parentNode.removeChild(c)}-1!==d&&f.splice(d,1);0===f.length&&n(!1)}var f=[],e=
+k.ownerDocument,a=odf.OdfUtils,d=runtime.getWindow();runtime.assert(Boolean(d),"Expected to be run in an environment which has a global window, like a browser.");this.rerenderAnnotations=m;this.rehighlightAnnotations=function(){f.forEach(function(a){g(a)})};this.getMinimumHeightForAnnotationPane=function(){return"none"!==c.style.display&&0<f.length?(f[f.length-1].parentNode.getBoundingClientRect().bottom-c.getBoundingClientRect().top)/h.getZoomLevel()+"px":null};this.addAnnotations=function(d){0!==
+d.length&&(n(!0),d.forEach(function(d){f.push(d);var c=e.createElement("div"),r=e.createElement("div"),h=e.createElement("div"),m=e.createElement("div"),n;c.className="annotationWrapper";c.setAttribute("creator",a.getAnnotationCreator(d));d.parentNode.insertBefore(c,d);r.className="annotationNote";r.appendChild(d);b&&(n=e.createElement("div"),n.className="annotationRemoveButton",r.appendChild(n));h.className="annotationConnector horizontal";m.className="annotationConnector angular";c.appendChild(r);
+c.appendChild(h);c.appendChild(m);d.annotationEndElement&&g(d)}),p(),m())};this.forgetAnnotation=q;this.forgetAnnotations=function(){for(;f.length;)q(f[0])}};gui.Viewport=function(){};gui.Viewport.prototype.scrollIntoView=function(h,k){};gui.SingleScrollViewport=function(h){this.scrollIntoView=function(k,c){var b,g,n,p;p=h.offsetHeight-h.clientHeight;n=h.offsetWidth-h.clientWidth;var m=h.getBoundingClientRect();if(k&&m){b=m.left+5;g=m.top+5;n=m.right-(n+5);p=m.bottom-(p+5);if(c||k.top<g)h.scrollTop-=g-k.top;else if(k.top>p||k.bottom>p)h.scrollTop=k.bottom-k.top<=p-g?h.scrollTop+(k.bottom-p):h.scrollTop+(k.top-g);k.left<b?h.scrollLeft-=b-k.left:k.right>n&&(h.scrollLeft=k.right-k.left<=n-b?h.scrollLeft+(k.right-n):h.scrollLeft-(b-k.left))}}};(function(){function h(c,n,k,m,q){var f,e=0,a;for(a in c)if(c.hasOwnProperty(a)){if(e===k){f=a;break}e+=1}f?n.getPartData(c[f].href,function(a,e){if(a)runtime.log(a);else if(e){var l="@font-face { font-family: "+(c[f].family||f)+"; src: url(data:application/x-font-ttf;charset=binary;base64,"+b.convertUTF8ArrayToBase64(e)+') format("truetype"); }';try{m.insertRule(l,m.cssRules.length)}catch(B){runtime.log("Problem inserting rule in CSS: "+runtime.toJson(B)+"\nRule: "+l)}}else runtime.log("missing font data for "+
+c[f].href);h(c,n,k+1,m,q)}):q&&q()}var k=xmldom.XPath,c=odf.OdfUtils,b=new core.Base64;odf.FontLoader=function(){this.loadFonts=function(b,n){for(var p=b.rootElement.fontFaceDecls;n.cssRules.length;)n.deleteRule(n.cssRules.length-1);if(p){var m={},q,f,e,a;if(p)for(p=k.getODFElementsWithXPath(p,"style:font-face[svg:font-face-src]",odf.Namespaces.lookupNamespaceURI),q=0;q<p.length;q+=1)f=p[q],e=f.getAttributeNS(odf.Namespaces.stylens,"name"),a=c.getNormalizedFontFamilyName(f.getAttributeNS(odf.Namespaces.svgns,
+"font-family")),f=k.getODFElementsWithXPath(f,"svg:font-face-src/svg:font-face-uri",odf.Namespaces.lookupNamespaceURI),0<f.length&&(f=f[0].getAttributeNS(odf.Namespaces.xlinkns,"href"),m[e]={href:f,family:a});h(m,b,0,n)}}}})();odf.Formatting=function(){function h(a){return(a=F[a])?x.mergeObjects({},a):{}}function k(){for(var d=a.rootElement.fontFaceDecls,b={},c,e,d=d&&d.firstElementChild;d;){if(c=d.getAttributeNS(l,"name"))if((e=d.getAttributeNS(r,"font-family"))||0<d.getElementsByTagNameNS(r,"font-face-uri").length)b[c]=e;d=d.nextElementSibling}return b}function c(d){for(var b=a.rootElement.styles.firstElementChild;b;){if(b.namespaceURI===l&&"default-style"===b.localName&&b.getAttributeNS(l,"family")===d)return b;b=b.nextElementSibling}return null}
+function b(d,b,c){var e,f,g;c=c||[a.rootElement.automaticStyles,a.rootElement.styles];for(g=0;g<c.length;g+=1)for(e=c[g],e=e.firstElementChild;e;){f=e.getAttributeNS(l,"name");if(e.namespaceURI===l&&"style"===e.localName&&e.getAttributeNS(l,"family")===b&&f===d||"list-style"===b&&e.namespaceURI===B&&"list-style"===e.localName&&f===d||"data"===b&&e.namespaceURI===y&&f===d)return e;e=e.nextElementSibling}return null}function g(a){for(var d,b,c,e,f={},g=a.firstElementChild;g;){if(g.namespaceURI===l)for(c=
+f[g.nodeName]={},b=g.attributes,d=0;d<b.length;d+=1)e=b.item(d),c[e.name]=e.value;g=g.nextElementSibling}b=a.attributes;for(d=0;d<b.length;d+=1)e=b.item(d),f[e.name]=e.value;return f}function n(d,e){for(var f=a.rootElement.styles,r,m={},n=d.getAttributeNS(l,"family"),u=d;u;)r=g(u),m=x.mergeObjects(r,m),u=(r=u.getAttributeNS(l,"parent-style-name"))?b(r,n,[f]):null;if(u=c(n))r=g(u),m=x.mergeObjects(r,m);!1!==e&&(r=h(n),m=x.mergeObjects(r,m));return m}function p(b,c){function e(a){Object.keys(a).forEach(function(d){Object.keys(a[d]).forEach(function(a){r+=
+"|"+d+":"+a+"|"})})}for(var f=b.nodeType===Node.TEXT_NODE?b.parentNode:b,l,g=[],r="",h=!1;f&&!z.isInlineRoot(f)&&f.parentNode!==a.rootElement;)!h&&z.isGroupingElement(f)&&(h=!0),(l=d.determineStylesForNode(f))&&g.push(l),f=f.parentNode;h&&(g.forEach(e),c&&(c[r]=g));return h?g:void 0}function m(d){var c={orderedStyles:[],styleProperties:{}};d.forEach(function(d){Object.keys(d).forEach(function(e){var f=Object.keys(d[e])[0],g={name:f,family:e,displayName:void 0,isCommonStyle:!1},r;(r=b(f,e))?(e=n(r),
+c.styleProperties=x.mergeObjects(e,c.styleProperties),g.displayName=r.getAttributeNS(l,"display-name")||void 0,g.isCommonStyle=r.parentNode===a.rootElement.styles):runtime.log("No style element found for '"+f+"' of family '"+e+"'");c.orderedStyles.push(g)})});return c}function q(a,d){var b={},c=[];d||(d={});a.forEach(function(a){p(a,b)});Object.keys(b).forEach(function(a){d[a]||(d[a]=m(b[a]));c.push(d[a])});return c}function f(d){for(var b=a.rootElement.masterStyles.firstElementChild;b&&(b.namespaceURI!==
+l||"master-page"!==b.localName||b.getAttributeNS(l,"name")!==d);)b=b.nextElementSibling;return b}function e(a,d){var b;a&&(b=w.convertMeasure(a,"px"));void 0===b&&d&&(b=w.convertMeasure(d,"px"));return b}var a,d=new odf.StyleInfo,r=odf.Namespaces.svgns,l=odf.Namespaces.stylens,B=odf.Namespaces.textns,y=odf.Namespaces.numberns,D=odf.Namespaces.fons,z=odf.OdfUtils,t=core.DomUtils,x=new core.Utils,w=new core.CSSUnits,F={paragraph:{"style:paragraph-properties":{"fo:text-align":"left"}}};this.getSystemDefaultStyleAttributes=
+h;this.setOdfContainer=function(d){a=d};this.getFontMap=k;this.getAvailableParagraphStyles=function(){for(var d=a.rootElement.styles,b,c,e=[],d=d&&d.firstElementChild;d;)"style"===d.localName&&d.namespaceURI===l&&(b=d.getAttributeNS(l,"family"),"paragraph"===b&&(b=d.getAttributeNS(l,"name"),c=d.getAttributeNS(l,"display-name")||b,b&&c&&e.push({name:b,displayName:c}))),d=d.nextElementSibling;return e};this.isStyleUsed=function(b){var c,e=a.rootElement;c=d.hasDerivedStyles(e,odf.Namespaces.lookupNamespaceURI,
+b);b=(new d.UsedStyleList(e.styles)).uses(b)||(new d.UsedStyleList(e.automaticStyles)).uses(b)||(new d.UsedStyleList(e.body)).uses(b);return c||b};this.getDefaultStyleElement=c;this.getStyleElement=b;this.getStyleAttributes=g;this.getInheritedStyleAttributes=n;this.getFirstCommonParentStyleNameOrSelf=function(d){var c=a.rootElement.styles,e;if(e=b(d,"paragraph",[a.rootElement.automaticStyles]))if(d=e.getAttributeNS(l,"parent-style-name"),!d)return null;return(e=b(d,"paragraph",[c]))?d:null};this.hasParagraphStyle=
+function(a){return Boolean(b(a,"paragraph"))};this.getAppliedStyles=q;this.getAppliedStylesForElement=function(a,d){return q([a],d)[0]};this.updateStyle=function(d,b){var c,e;t.mapObjOntoNode(d,b,odf.Namespaces.lookupNamespaceURI);(c=(c=b["style:text-properties"])&&c["style:font-name"])&&!k().hasOwnProperty(c)&&(e=d.ownerDocument.createElementNS(l,"style:font-face"),e.setAttributeNS(l,"style:name",c),e.setAttributeNS(r,"svg:font-family",c),a.rootElement.fontFaceDecls.appendChild(e))};this.createDerivedStyleObject=
+function(d,c,e){var f=b(d,c);runtime.assert(Boolean(f),"No style element found for '"+d+"' of family '"+c+"'");d=f.parentNode===a.rootElement.styles?{"style:parent-style-name":d}:g(f);d["style:family"]=c;x.mergeObjects(d,e);return d};this.getDefaultTabStopDistance=function(){for(var a=c("paragraph"),a=a&&a.firstElementChild,d;a;)a.namespaceURI===l&&"paragraph-properties"===a.localName&&(d=a.getAttributeNS(l,"tab-stop-distance")),a=a.nextElementSibling;d||(d="1.25cm");return z.parseNonNegativeLength(d)};
+this.getMasterPageElement=f;this.getContentSize=function(d,c){var g,r,h,m,n,k,p,q,B,x;a:{r=b(d,c);runtime.assert("paragraph"===c||"table"===c,"styleFamily must be either paragraph or table");if(r){if(r=r.getAttributeNS(l,"master-page-name"))(g=f(r))||runtime.log("WARN: No master page definition found for "+r);g||(g=f("Standard"));g||(g=a.rootElement.masterStyles.getElementsByTagNameNS(l,"master-page")[0])||runtime.log("WARN: Document has no master pages defined");if(g)for(r=g.getAttributeNS(l,"page-layout-name"),
+h=a.rootElement.automaticStyles.getElementsByTagNameNS(l,"page-layout"),m=0;m<h.length;m+=1)if(g=h.item(m),g.getAttributeNS(l,"name")===r)break a}g=null}g||(g=t.getDirectChild(a.rootElement.styles,l,"default-page-layout"));(g=t.getDirectChild(g,l,"page-layout-properties"))?("landscape"===g.getAttributeNS(l,"print-orientation")?(r="29.7cm",h="21.001cm"):(r="21.001cm",h="29.7cm"),r=e(g.getAttributeNS(D,"page-width"),r),h=e(g.getAttributeNS(D,"page-height"),h),m=e(g.getAttributeNS(D,"margin")),void 0===
+m?(m=e(g.getAttributeNS(D,"margin-left"),"2cm"),n=e(g.getAttributeNS(D,"margin-right"),"2cm"),k=e(g.getAttributeNS(D,"margin-top"),"2cm"),p=e(g.getAttributeNS(D,"margin-bottom"),"2cm")):m=n=k=p=m,q=e(g.getAttributeNS(D,"padding")),void 0===q?(q=e(g.getAttributeNS(D,"padding-left"),"0cm"),B=e(g.getAttributeNS(D,"padding-right"),"0cm"),x=e(g.getAttributeNS(D,"padding-top"),"0cm"),g=e(g.getAttributeNS(D,"padding-bottom"),"0cm")):q=B=x=g=q):(r=e("21.001cm"),h=e("29.7cm"),m=n=k=p=m=e("2cm"),q=B=x=g=q=
+e("0cm"));return{width:r-m-n-q-B,height:h-k-p-x-g}}};(function(){var h=odf.Namespaces.stylens,k=odf.Namespaces.textns,c={graphic:"draw","drawing-page":"draw",paragraph:"text",presentation:"presentation",ruby:"text",section:"text",table:"table","table-cell":"table","table-column":"table","table-row":"table",text:"text",list:"text",page:"office"};odf.StyleTreeNode=function(b){this.derivedStyles={};this.element=b};odf.StyleTree=function(b,g){function n(b){var a,d,c,f={};if(!b)return f;for(b=b.firstElementChild;b;){if(d=b.namespaceURI!==h||"style"!==b.localName&&
+"default-style"!==b.localName?b.namespaceURI===k&&"list-style"===b.localName?"list":b.namespaceURI!==h||"page-layout"!==b.localName&&"default-page-layout"!==b.localName?void 0:"page":b.getAttributeNS(h,"family"))(a=b.getAttributeNS(h,"name"))||(a=""),f.hasOwnProperty(d)?c=f[d]:f[d]=c={},c[a]=b;b=b.nextElementSibling}return f}function p(b,a){if(b.hasOwnProperty(a))return b[a];var d=null,c=Object.keys(b),f;for(f=0;f<c.length&&!(d=p(b[c[f]].derivedStyles,a));f+=1);return d}function m(b,a,d){var c,f,
+g;if(!a.hasOwnProperty(b))return null;c=new odf.StyleTreeNode(a[b]);f=c.element.getAttributeNS(h,"parent-style-name");g=null;f&&(g=p(d,f)||m(f,a,d));g?g.derivedStyles[b]=c:d[b]=c;delete a[b];return c}function q(b,a){b&&Object.keys(b).forEach(function(d){m(d,b,a)})}var f={};this.getStyleTree=function(){return f};(function(){var e,a,d;a=n(b);d=n(g);Object.keys(c).forEach(function(b){e=f[b]={};q(a[b],e);q(d[b],e)})})()}})();(function(){function h(b,c){try{b.insertRule(c,b.cssRules.length)}catch(e){runtime.log("cannot load rule: "+c+" - "+e)}}function k(b,c){this.listCounterCount=0;this.contentRules=b;this.counterIdStack=[];this.continuedCounterIdStack=c}function c(b){function c(d,e,g,m){var k=e.namespaceURI===n&&"list"===e.localName,p=e.namespaceURI===n&&"list-item"===e.localName;if(k||p){if(k){var k=g+=1,t,x,w;m.listCounterCount+=1;p=d+"-level"+k+"-"+m.listCounterCount;e.setAttributeNS("urn:webodf:names:helper","counter-id",
+p);t=m.continuedCounterIdStack.shift();t||(t=p,a+=p+" 1 ",x='text|list[webodfhelper|counter-id="'+p+'"] > text|list-item:first-child > :not(text|list):first-child:before',x+="{",x+="counter-increment: "+t+" 0;",x+="}",h(b,x));for(;m.counterIdStack.length>=k;)m.counterIdStack.pop();m.counterIdStack.push(t);w=m.contentRules[k.toString()]||"";for(x=1;x<=k;x+=1)w=w.replace(x+"webodf-listLevel",m.counterIdStack[x-1]);x='text|list[webodfhelper|counter-id="'+p+'"] > text|list-item > :not(text|list):first-child:before';
+x+="{";x+=w;x+="counter-increment: "+t+";";x+="}";h(b,x)}for(e=e.firstElementChild;e;)c(d,e,g,m),e=e.nextElementSibling}else m.continuedCounterIdStack=[]}var e=0,a="",d={};this.createCounterRules=function(a,b,g){var h=b.getAttributeNS(p,"id"),m=[];g&&(g=g.getAttributeNS("urn:webodf:names:helper","counter-id"),m=d[g].slice(0));a=new k(a,m);h?h="Y"+h:(e+=1,h="X"+e);c(h,b,0,a);d[h+"-level1-1"]=a.counterIdStack};this.initialiseCreatedCounters=function(){var d;d="office|document{"+("counter-reset: "+a+
+";");d+="}";h(b,d)}}var b=odf.Namespaces.fons,g=odf.Namespaces.stylens,n=odf.Namespaces.textns,p=odf.Namespaces.xmlns,m={1:"decimal",a:"lower-latin",A:"upper-latin",i:"lower-roman",I:"upper-roman"};odf.ListStyleToCss=function(){function k(a){var b=r.parseLength(a);return b?d.convert(b.value,b.unit,"px"):(runtime.log("Could not parse value '"+a+"'."),0)}function f(a){return a.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function e(a,d){var b;a&&(b=a.getAttributeNS(n,"style-name"));return b===d}function a(a,
+d,b){d=d.getElementsByTagNameNS(n,"list");a=new c(a);var h,r,k,q,w,F,L={},H;for(H=0;H<d.length;H+=1)if(h=d.item(H),F=h.getAttributeNS(n,"style-name")){k=h.getAttributeNS(n,"continue-numbering");q=h.getAttributeNS(n,"continue-list");(w=h.getAttributeNS(p,"id"))&&(L[w]=h);w=b[F].element.firstElementChild;for(var G=void 0,A={};w;){var G=(G=w.getAttributeNS(n,"level"))&&parseInt(G,10),K=w,v="",u=void 0,Q=void 0,R=u=void 0;if("list-level-style-number"===K.localName){var C=K,v=C.getAttributeNS(g,"num-format"),
+u=C.getAttributeNS(g,"num-suffix")||"",Q=C.getAttributeNS(g,"num-prefix")||"",I="",P=C.getAttributeNS(n,"level"),C=C.getAttributeNS(n,"display-levels");Q&&(I+='"'+f(Q)+'"\n');if(m.hasOwnProperty(v))for(P=P?parseInt(P,10):1,C=C?parseInt(C,10):1;0<C;)I+=" counter("+(P-C+1)+"webodf-listLevel,"+m[v]+")",1<C&&(I+='"."'),--C;else I=v?I+(' "'+v+'"'):I+' ""';v="content:"+I+' "'+f(u)+'"'}else"list-level-style-image"===K.localName?v="content: none":"list-level-style-bullet"===K.localName&&(v=K.getAttributeNS(n,
+"bullet-char"),v='content: "'+f(v)+'"');if(u=K.getElementsByTagNameNS(g,"list-level-properties")[0])Q=u.getAttributeNS(n,"list-level-position-and-space-mode"),"label-alignment"===Q&&((u=u.getElementsByTagNameNS(g,"list-level-label-alignment")[0])&&(R=u.getAttributeNS(n,"label-followed-by")),"space"===R&&(v+=' "\\a0"'));A[G]="\n"+v+";\n";w=w.nextElementSibling}w=A;k&&!q&&e(r,F)?a.createCounterRules(w,h,r):q&&e(L[q],F)?a.createCounterRules(w,h,L[q]):a.createCounterRules(w,h);r=h}a.initialiseCreatedCounters()}
+var d=new core.CSSUnits,r=odf.OdfUtils;this.applyListStyles=function(d,c,e){var f,r;(f=c.list)&&Object.keys(f).forEach(function(a){r=f[a];for(var c=r.element.firstElementChild;c;){if(c.namespaceURI===n){for(var e=d,m=c,p='text|list[text|style-name="'+a+'"]',B=m.getAttributeNS(n,"level"),y=void 0,A=void 0,K=A=void 0,v=void 0,u=void 0,Q=y=void 0,R=void 0,C=void 0,I=void 0,v=void 0,K=(A=m.getElementsByTagNameNS(g,"list-level-properties")[0])&&A.getAttributeNS(n,"list-level-position-and-space-mode"),
+v=A&&A.getElementsByTagNameNS(g,"list-level-label-alignment")[0],y=B=B&&parseInt(B,10);1<y;)p+=" > text|list-item > text|list",--y;y=A&&A.getAttributeNS(b,"text-align")||"left";switch(y){case "end":y="right";break;case "start":y="left"}"label-alignment"===K?(u=v&&v.getAttributeNS(b,"margin-left")||"0px",C=v&&v.getAttributeNS(b,"text-indent")||"0px",I=v&&v.getAttributeNS(n,"label-followed-by"),v=k(u)):(u=A&&A.getAttributeNS(n,"space-before")||"0px",Q=A&&A.getAttributeNS(n,"min-label-width")||"0px",
+R=A&&A.getAttributeNS(n,"min-label-distance")||"0px",v=k(u)+k(Q));A=p+" > text|list-item";A+="{";A+="margin-left: "+v+"px;";A+="}";h(e,A);A=p+" > text|list-item > text|list";A+="{";A+="margin-left: "+-v+"px;";A+="}";h(e,A);A=p+" > text|list-item > :not(text|list):first-child:before";A+="{";A+="text-align: "+y+";";A+="display: inline-block;";"label-alignment"===K?(A+="margin-left: "+C+";","listtab"===I&&(A+="padding-right: 0.2cm;")):(A+="min-width: "+Q+";",A+="margin-left: "+(0===parseFloat(Q)?"":
+"-")+Q+";",A+="padding-right: "+R+";");A+="}";h(e,A)}c=c.nextElementSibling}});a(d,e,f)}}})();odf.LazyStyleProperties=function(h,k){var c={};this.value=function(b){var g;c.hasOwnProperty(b)?g=c[b]:(g=k[b](),void 0===g&&h&&(g=h.value(b)),c[b]=g);return g};this.reset=function(b){h=b;c={}}};
+odf.StyleParseUtils=function(){function h(c){var b,g;c=(c=/(-?[0-9]*[0-9][0-9]*(\.[0-9]*)?|0+\.[0-9]*[1-9][0-9]*|\.[0-9]*[1-9][0-9]*)((cm)|(mm)|(in)|(pt)|(pc)|(px))/.exec(c))?{value:parseFloat(c[1]),unit:c[3]}:null;g=c&&c.unit;"px"===g?b=c.value:"cm"===g?b=c.value/2.54*96:"mm"===g?b=c.value/25.4*96:"in"===g?b=96*c.value:"pt"===g?b=c.value/.75:"pc"===g&&(b=16*c.value);return b}var k=odf.Namespaces.stylens;this.parseLength=h;this.parsePositiveLengthOrPercent=function(c,b,g){var n;c&&(n=parseFloat(c.substr(0,
+c.indexOf("%"))),isNaN(n)&&(n=void 0));var k;void 0!==n?(g&&(k=g.value(b)),n=void 0===k?void 0:k/100*n):n=h(c);return n};this.getPropertiesElement=function(c,b,g){for(b=g?g.nextElementSibling:b.firstElementChild;null!==b&&(b.localName!==c||b.namespaceURI!==k);)b=b.nextElementSibling;return b};this.parseAttributeList=function(c){c&&(c=c.replace(/^\s*(.*?)\s*$/g,"$1"));return c&&0<c.length?c.split(/\s+/):[]}};odf.Style2CSS=function(){function h(a,d,b){var c=[];b=b.derivedStyles;var e;var f=D[a],g;void 0===f?d=null:(g=d?"["+f+'|style-name="'+d+'"]':"","presentation"===f&&(f="draw",g=d?'[presentation|style-name="'+d+'"]':""),d=f+"|"+z[a].join(g+","+f+"|")+g);null!==d&&c.push(d);for(e in b)b.hasOwnProperty(e)&&(d=h(a,e,b[e]),c=c.concat(d));return c}function k(a){var d="",b="",d=null;if("default-style"===a.localName)return null;d=a.getAttributeNS(e,"parent-style-name");b=a.getAttributeNS(e,"family");return d=
+T.getODFElementsWithXPath(P,d?"//style:*[@style:name='"+d+"'][@style:family='"+b+"']":"//style:default-style[@style:family='"+b+"']",odf.Namespaces.lookupNamespaceURI)[0]}function c(a,d){var b="",c,f,g;for(c=0;c<d.length;c+=1)if(f=d[c],g=a.getAttributeNS(f[0],f[1])){g=g.trim();if(u.hasOwnProperty(f[1])){var l=g,h=l.indexOf(" "),r=void 0;g=void 0;-1!==h?(r=l.substring(0,h),g=l.substring(h)):(r=l,g="");(r=C.parseLength(r))&&"pt"===r.unit&&.75>r.value&&(l="0.75pt"+g);g=l}else if(Q.hasOwnProperty(f[1])){var l=
+a,h=f[0],r=f[1],m=C.parseLength(g),n=void 0,v=void 0,p=void 0,q=void 0,p=void 0;if(m&&"%"===m.unit){n=m.value/100;v=k(l.parentNode);for(q="0";v;){if(p=B.getDirectChild(v,e,"paragraph-properties"))if(p=C.parseLength(p.getAttributeNS(h,r))){if("%"!==p.unit){q=p.value*n+p.unit;break}n*=p.value/100}v=k(v)}g=q}}f[2]&&(b+=f[2]+":"+g+";")}return b}function b(a,d,b,c){return d+d+b+b+c+c}function g(a,d){var b=[a],c=d.derivedStyles;Object.keys(c).forEach(function(a){a=g(a,c[a]);b=b.concat(a)});return b}function n(a,
+d,b,c){function e(d,b){var c=[],g;d.forEach(function(a){f.forEach(function(d){c.push('draw|page[webodfhelper|page-style-name="'+d+'"] draw|frame[presentation|class="'+a+'"]')})});0<c.length&&(g=c.join(",")+"{visibility:"+b+";}",a.insertRule(g,a.cssRules.length))}var f=g(d,c),h=[],r=[];["page-number","date-time","header","footer"].forEach(function(a){var d;d=b.getAttributeNS(l,"display-"+a);"true"===d?h.push(a):"false"===d&&r.push(a)});e(h,"visible");e(r,"hidden")}function p(a,g,u,Q){var z,D;if("page"===
+g){var J=Q.element,P="",S,V;V=S="";u=B.getDirectChild(J,e,"page-layout-properties");var M;if(u)if(M=J.getAttributeNS(e,"name"),P+=c(u,K),(S=B.getDirectChild(u,e,"background-image"))&&(V=S.getAttributeNS(r,"href"))&&(P=P+("background-image: url('odfkit:"+V+"');")+c(S,x)),"presentation"===I)for(J=(J=B.getDirectChild(J.parentNode.parentNode,f,"master-styles"))&&J.firstElementChild;J;)J.namespaceURI===e&&"master-page"===J.localName&&J.getAttributeNS(e,"page-layout-name")===M&&(V=J.getAttributeNS(e,"name"),
+S='draw|page[draw|master-page-name="'+V+'"] {'+P+"}",V='office|body, draw|page[draw|master-page-name="'+V+'"] {'+c(u,v)+" }",a.insertRule(S,a.cssRules.length),a.insertRule(V,a.cssRules.length)),J=J.nextElementSibling;else"text"===I&&(S="office|text {"+P+"}",V="office|body {width: "+u.getAttributeNS(q,"page-width")+";}",a.insertRule(S,a.cssRules.length),a.insertRule(V,a.cssRules.length))}else{P=h(g,u,Q).join(",");M="";if(J=B.getDirectChild(Q.element,e,"text-properties")){var T=J,ea=D="";S="";V=1;J=
+""+c(T,t);z=T.getAttributeNS(e,"text-underline-style");"solid"===z&&(D+=" underline");z=T.getAttributeNS(e,"text-line-through-style");"solid"===z&&(D+=" line-through");D.length&&(J=J+("text-decoration:"+D+";\n")+("text-decoration-line:"+D+";\n"),J+="-moz-text-decoration-line:"+D+";\n");z=T.getAttributeNS(e,"text-line-through-type");switch(z){case "double":ea+=" double";break;case "single":ea+=" single"}ea&&(J+="text-decoration-style:"+ea+";\n",J+="-moz-text-decoration-style:"+ea+";\n");if(D=T.getAttributeNS(e,
+"font-name")||T.getAttributeNS(q,"font-family"))z=R[D],J+="font-family: "+(z||D)+";";if(z=T.getAttributeNS(e,"text-position"))D=y.parseAttributeList(z),z=D[0],D=D[1],J+="vertical-align: "+z+"\n; ",D&&(V=parseFloat(D)/100);if(T.hasAttributeNS(q,"font-size")||1!==V){for(T=T.parentNode;T;){if(z=(z=B.getDirectChild(T,e,"text-properties"))?C.parseFoFontSize(z.getAttributeNS(q,"font-size")):null){if("%"!==z.unit){S="font-size: "+z.value*V+z.unit+";";break}V*=z.value/100}T=k(T)}S||(S="font-size: "+parseFloat(U)*
+V+ca.getUnits(U)+";")}J+=S;M+=J}if(J=B.getDirectChild(Q.element,e,"paragraph-properties"))S=J,J=""+c(S,w),(V=B.getDirectChild(S,e,"background-image"))&&(T=V.getAttributeNS(r,"href"))&&(J=J+("background-image: url('odfkit:"+T+"');")+c(V,x)),(S=S.getAttributeNS(q,"line-height"))&&"normal"!==S&&(S=C.parseFoLineHeight(S),J="%"!==S.unit?J+("line-height: "+S.value+S.unit+";"):J+("line-height: "+S.value/100+";")),M+=J;if(J=B.getDirectChild(Q.element,e,"graphic-properties"))T=J,J=""+c(T,F),S=T.getAttributeNS(m,
+"opacity"),V=T.getAttributeNS(m,"fill"),T=T.getAttributeNS(m,"fill-color"),"solid"===V||"hatch"===V?T&&"none"!==T?(S=isNaN(parseFloat(S))?1:parseFloat(S)/100,V=T.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,b),(T=(V=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(V))?{r:parseInt(V[1],16),g:parseInt(V[2],16),b:parseInt(V[3],16)}:null)&&(J+="background-color: rgba("+T.r+","+T.g+","+T.b+","+S+");")):J+="background: none;":"none"===V&&(J+="background: none;"),M+=J;if(J=B.getDirectChild(Q.element,e,"drawing-page-properties"))S=
+J,V=""+c(S,F),"true"===S.getAttributeNS(l,"background-visible")&&(V+="background: none;"),M+=V,n(a,u,J,Q);if(J=B.getDirectChild(Q.element,e,"table-cell-properties"))u=M,M=""+c(J,L),M=u+M;if(J=B.getDirectChild(Q.element,e,"table-row-properties"))u=M,M=""+c(J,G),M=u+M;if(J=B.getDirectChild(Q.element,e,"table-column-properties"))u=M,M=""+c(J,H),M=u+M;if(J=B.getDirectChild(Q.element,e,"table-properties"))u=M,M=""+c(J,A),J=J.getAttributeNS(d,"border-model"),"collapsing"===J?M+="border-collapse:collapse;":
+"separating"===J&&(M+="border-collapse:separate;"),M=u+M;0!==M.length&&a.insertRule(P+"{"+M+"}",a.cssRules.length)}for(var aa in Q.derivedStyles)Q.derivedStyles.hasOwnProperty(aa)&&p(a,g,aa,Q.derivedStyles[aa])}var m=odf.Namespaces.drawns,q=odf.Namespaces.fons,f=odf.Namespaces.officens,e=odf.Namespaces.stylens,a=odf.Namespaces.svgns,d=odf.Namespaces.tablens,r=odf.Namespaces.xlinkns,l=odf.Namespaces.presentationns,B=core.DomUtils,y=new odf.StyleParseUtils,D={graphic:"draw","drawing-page":"draw",paragraph:"text",
+presentation:"presentation",ruby:"text",section:"text",table:"table","table-cell":"table","table-column":"table","table-row":"table",text:"text",list:"text",page:"office"},z={graphic:"circle connected control custom-shape ellipse frame g line measure page page-thumbnail path polygon polyline rect regular-polygon".split(" "),paragraph:"alphabetical-index-entry-template h illustration-index-entry-template index-source-style object-index-entry-template p table-index-entry-template table-of-content-entry-template user-index-entry-template".split(" "),
+presentation:"caption circle connector control custom-shape ellipse frame g line measure page-thumbnail path polygon polyline rect regular-polygon".split(" "),"drawing-page":"caption circle connector control page custom-shape ellipse frame g line measure page-thumbnail path polygon polyline rect regular-polygon".split(" "),ruby:["ruby","ruby-text"],section:"alphabetical-index bibliography illustration-index index-title object-index section table-of-content table-index user-index".split(" "),table:["background",
+"table"],"table-cell":"body covered-table-cell even-columns even-rows first-column first-row last-column last-row odd-columns odd-rows table-cell".split(" "),"table-column":["table-column"],"table-row":["table-row"],text:"a index-entry-chapter index-entry-link-end index-entry-link-start index-entry-page-number index-entry-span index-entry-tab-stop index-entry-text index-title-template linenumbering-configuration list-level-style-number list-level-style-bullet outline-level-style span".split(" "),
+list:["list-item"]},t=[[q,"color","color"],[q,"background-color","background-color"],[q,"font-weight","font-weight"],[q,"font-style","font-style"]],x=[[e,"repeat","background-repeat"]],w=[[q,"background-color","background-color"],[q,"text-align","text-align"],[q,"text-indent","text-indent"],[q,"padding","padding"],[q,"padding-left","padding-left"],[q,"padding-right","padding-right"],[q,"padding-top","padding-top"],[q,"padding-bottom","padding-bottom"],[q,"border-left","border-left"],[q,"border-right",
+"border-right"],[q,"border-top","border-top"],[q,"border-bottom","border-bottom"],[q,"margin","margin"],[q,"margin-left","margin-left"],[q,"margin-right","margin-right"],[q,"margin-top","margin-top"],[q,"margin-bottom","margin-bottom"],[q,"border","border"]],F=[[q,"background-color","background-color"],[q,"min-height","min-height"],[m,"stroke","border"],[a,"stroke-color","border-color"],[a,"stroke-width","border-width"],[q,"border","border"],[q,"border-left","border-left"],[q,"border-right","border-right"],
+[q,"border-top","border-top"],[q,"border-bottom","border-bottom"]],L=[[q,"background-color","background-color"],[q,"border-left","border-left"],[q,"border-right","border-right"],[q,"border-top","border-top"],[q,"border-bottom","border-bottom"],[q,"border","border"]],H=[[e,"column-width","width"]],G=[[e,"row-height","height"],[q,"keep-together",null]],A=[[e,"width","width"],[q,"margin-left","margin-left"],[q,"margin-right","margin-right"],[q,"margin-top","margin-top"],[q,"margin-bottom","margin-bottom"]],
+K=[[q,"background-color","background-color"],[q,"padding","padding"],[q,"padding-left","padding-left"],[q,"padding-right","padding-right"],[q,"padding-top","padding-top"],[q,"padding-bottom","padding-bottom"],[q,"border","border"],[q,"border-left","border-left"],[q,"border-right","border-right"],[q,"border-top","border-top"],[q,"border-bottom","border-bottom"],[q,"margin","margin"],[q,"margin-left","margin-left"],[q,"margin-right","margin-right"],[q,"margin-top","margin-top"],[q,"margin-bottom","margin-bottom"]],
+v=[[q,"page-width","width"],[q,"page-height","height"]],u={border:!0,"border-left":!0,"border-right":!0,"border-top":!0,"border-bottom":!0,"stroke-width":!0},Q={margin:!0,"margin-left":!0,"margin-right":!0,"margin-top":!0,"margin-bottom":!0},R={},C=odf.OdfUtils,I,P,U,T=xmldom.XPath,ca=new core.CSSUnits;this.style2css=function(a,d,b,c,e){function f(a,d){g="@namespace "+a+" url("+d+");";try{b.insertRule(g,b.cssRules.length)}catch(c){}}var g,l,h;for(P=d;b.cssRules.length;)b.deleteRule(b.cssRules.length-
+1);odf.Namespaces.forEachPrefix(f);f("webodfhelper","urn:webodf:names:helper");R=c;I=a;U=runtime.getWindow().getComputedStyle(document.body,null).getPropertyValue("font-size")||"12pt";for(h in D)if(D.hasOwnProperty(h))for(l in a=e[h],a)a.hasOwnProperty(l)&&p(b,h,l,a[l])}};(function(){function h(k,c){var b=this;this.getDistance=function(c){var h=b.x-c.x;c=b.y-c.y;return Math.sqrt(h*h+c*c)};this.getCenter=function(c){return new h((b.x+c.x)/2,(b.y+c.y)/2)};b.x=k;b.y=c}gui.ZoomHelper=function(){function k(a,b,c,e){a=e?"translate3d("+a+"px, "+b+"px, 0) scale3d("+c+", "+c+", 1)":"translate("+a+"px, "+b+"px) scale("+c+")";d.style.WebkitTransform=a;d.style.MozTransform=a;d.style.msTransform=a;d.style.OTransform=a;d.style.transform=a}function c(a){a?k(-r.x,-r.y,y,!0):(k(0,
+0,y,!0),k(0,0,y,!1))}function b(a){if(z&&L){var d=z.style.overflow,b=z.classList.contains("webodf-customScrollbars");a&&b||!a&&!b||(a?(z.classList.add("webodf-customScrollbars"),z.style.overflow="hidden",runtime.requestAnimationFrame(function(){z.style.overflow=d})):z.classList.remove("webodf-customScrollbars"))}}function g(){k(-r.x,-r.y,y,!0);z.scrollLeft=0;z.scrollTop=0;H=t.style.overflow;t.style.overflow="visible";b(!1)}function n(){k(0,0,y,!0);z.scrollLeft=r.x;z.scrollTop=r.y;t.style.overflow=
+H||"";b(!0)}function p(a){return new h(a.pageX-d.offsetLeft,a.pageY-d.offsetTop)}function m(a){if(l){r.x-=a.x-l.x;r.y-=a.y-l.y;var b=r;r=new h(Math.min(Math.max(b.x,d.offsetLeft),(d.offsetLeft+d.offsetWidth)*y-z.clientWidth),Math.min(Math.max(b.y,d.offsetTop),(d.offsetTop+d.offsetHeight)*y-z.clientHeight))}l=a}function q(a){var d=a.touches.length,b=0<d?p(a.touches[0]):null;a=1<d?p(a.touches[1]):null;b&&a?(B=b.getDistance(a),D=y,l=b.getCenter(a),g(),F=w.PINCH):b&&(l=b,F=w.SCROLL)}function f(a){var b=
+a.touches.length,e=0<b?p(a.touches[0]):null,b=1<b?p(a.touches[1]):null;if(e&&b)if(a.preventDefault(),F===w.SCROLL)F=w.PINCH,g(),B=e.getDistance(b);else{a=e.getCenter(b);e=e.getDistance(b)/B;m(a);var b=y,f=Math.min(4,d.offsetParent.clientWidth/d.offsetWidth);y=D*e;y=Math.min(Math.max(y,f),4);e=y/b;r.x+=(e-1)*(a.x+r.x);r.y+=(e-1)*(a.y+r.y);c(!0)}else e&&(F===w.PINCH?(F=w.SCROLL,n()):m(e))}function e(){F===w.PINCH&&(x.emit(gui.ZoomHelper.signalZoomChanged,y),n(),c(!1));F=w.NONE}function a(){z&&(z.removeEventListener("touchstart",
+q,!1),z.removeEventListener("touchmove",f,!1),z.removeEventListener("touchend",e,!1))}var d,r,l,B,y,D,z,t,x=new core.EventNotifier([gui.ZoomHelper.signalZoomChanged]),w={NONE:0,SCROLL:1,PINCH:2},F=w.NONE,L=runtime.getWindow().hasOwnProperty("ontouchstart"),H="";this.subscribe=function(a,d){x.subscribe(a,d)};this.unsubscribe=function(a,d){x.unsubscribe(a,d)};this.getZoomLevel=function(){return y};this.setZoomLevel=function(a){d&&(y=a,c(!1),x.emit(gui.ZoomHelper.signalZoomChanged,y))};this.destroy=
+function(d){a();b(!1);d()};this.setZoomableElement=function(g){a();d=g;z=d.offsetParent;t=d.parentNode;c(!1);z&&(z.addEventListener("touchstart",q,!1),z.addEventListener("touchmove",f,!1),z.addEventListener("touchend",e,!1));b(!0)};D=y=1;r=new h(0,0)};gui.ZoomHelper.signalZoomChanged="zoomChanged"})();ops.Canvas=function(){};ops.Canvas.prototype.getZoomLevel=function(){};ops.Canvas.prototype.getElement=function(){};ops.Canvas.prototype.getSizer=function(){};ops.Canvas.prototype.getZoomHelper=function(){};(function(){function h(){function a(c){b=!0;runtime.setTimeout(function(){try{c()}catch(e){runtime.log(String(e)+"\n"+e.stack)}b=!1;0<d.length&&a(d.pop())},10)}var d=[],b=!1;this.clearQueue=function(){d.length=0};this.addToQueue=function(c){if(0===d.length&&!b)return a(c);d.push(c)}}function k(a){function d(){for(;0<b.cssRules.length;)b.deleteRule(0);b.insertRule("#shadowContent draw|page {display:none;}",0);b.insertRule("office|presentation draw|page {display:none;}",1);b.insertRule("#shadowContent draw|page:nth-of-type("+
+c+") {display:block;}",2);b.insertRule("office|presentation draw|page:nth-of-type("+c+") {display:block;}",3)}var b=a.sheet,c=1;this.showFirstPage=function(){c=1;d()};this.showNextPage=function(){c+=1;d()};this.showPreviousPage=function(){1<c&&(--c,d())};this.showPage=function(a){0<a&&(c=a,d())};this.css=a;this.destroy=function(d){a.parentNode.removeChild(a);d()}}function c(a){a=a.sheet;for(var d=a.cssRules;d.length;)a.deleteRule(d.length-1)}function b(a,d,b){var c=new odf.Style2CSS,e=new odf.ListStyleToCss;
+b=b.sheet;var f=(new odf.StyleTree(a.rootElement.styles,a.rootElement.automaticStyles)).getStyleTree();c.style2css(a.getDocumentType(),a.rootElement,b,d.getFontMap(),f);e.applyListStyles(b,f,a.rootElement.body)}function g(a,d){(new odf.FontLoader).loadFonts(a,d.sheet)}function n(a,d,b){var c=null;a=a.rootElement.body.getElementsByTagNameNS(G,b+"-decl");b=d.getAttributeNS(G,"use-"+b+"-name");var e;if(b&&0<a.length)for(d=0;d<a.length;d+=1)if(e=a[d],e.getAttributeNS(G,"name")===b){c=e.textContent;break}return c}
+function p(a,d,b,c){var e=a.ownerDocument;d=K.getElementsByTagNameNS(a,d,b);for(a=0;a<d.length;a+=1)K.removeAllChildNodes(d[a]),c&&(b=d[a],b.appendChild(e.createTextNode(c)))}function m(a,d,b){d.setAttributeNS("urn:webodf:names:helper","styleid",a);var c,e=d.getAttributeNS(L,"anchor-type"),f=d.getAttributeNS(w,"x"),g=d.getAttributeNS(w,"y"),l=d.getAttributeNS(w,"width"),h=d.getAttributeNS(w,"height"),r=d.getAttributeNS(z,"min-height"),m=d.getAttributeNS(z,"min-width");if("as-char"===e)c="display: inline-block;";
+else if(e||f||g)c="position: absolute;";else if(l||h||r||m)c="display: block;";f&&(c+="left: "+f+";");g&&(c+="top: "+g+";");l&&(c+="width: "+l+";");h&&(c+="height: "+h+";");r&&(c+="min-height: "+r+";");m&&(c+="min-width: "+m+";");c&&(c="draw|"+d.localName+'[webodfhelper|styleid="'+a+'"] {'+c+"}",b.insertRule(c,b.cssRules.length))}function q(a){for(a=a.firstChild;a;){if(a.namespaceURI===t&&"binary-data"===a.localName)return"data:image/png;base64,"+a.textContent.replace(/[\r\n\s]/g,"");a=a.nextSibling}return""}
+function f(a,d,b,c){function e(d){d&&(d='draw|image[webodfhelper|styleid="'+a+'"] {'+("background-image: url("+d+");")+"}",c.insertRule(d,c.cssRules.length))}function f(a){e(a.url)}b.setAttributeNS("urn:webodf:names:helper","styleid",a);var g=b.getAttributeNS(H,"href"),l;if(g)try{l=d.getPart(g),l.onchange=f,l.load()}catch(h){runtime.log("slight problem: "+String(h))}else g=q(b),e(g)}function e(a){var d=a.ownerDocument;K.getElementsByTagNameNS(a,L,"line-break").forEach(function(a){a.hasChildNodes()||
+a.appendChild(d.createElement("br"))})}function a(a){var d=a.ownerDocument;K.getElementsByTagNameNS(a,L,"s").forEach(function(a){var b,c;K.removeAllChildNodes(a);a.appendChild(d.createTextNode(" "));c=parseInt(a.getAttributeNS(L,"c"),10);if(1<c)for(a.removeAttributeNS(L,"c"),b=1;b<c;b+=1)a.parentNode.insertBefore(a.cloneNode(!0),a)})}function d(a){K.getElementsByTagNameNS(a,L,"tab").forEach(function(a){a.textContent="\t"})}function r(a,d){function b(a,c){var g=l.documentElement.namespaceURI;"video/"===
+c.substr(0,6)?(e=l.createElementNS(g,"video"),e.setAttribute("controls","controls"),f=l.createElementNS(g,"source"),a&&f.setAttribute("src",a),f.setAttribute("type",c),e.appendChild(f),d.parentNode.appendChild(e)):d.innerHtml="Unrecognised Plugin"}function c(a){b(a.url,a.mimetype)}var e,f,g,l=d.ownerDocument,h;if(g=d.getAttributeNS(H,"href"))try{h=a.getPart(g),h.onchange=c,h.load()}catch(r){runtime.log("slight problem: "+String(r))}else runtime.log("using MP4 data fallback"),g=q(d),b(g,"video/mp4")}
+function l(a){var d=a.getElementsByTagName("head")[0],b,c;b=a.styleSheets.length;for(c=d.firstElementChild;c&&("style"!==c.localName||!c.hasAttribute("webodfcss"));)c=c.nextElementSibling;if(c)return b=parseInt(c.getAttribute("webodfcss"),10),c.setAttribute("webodfcss",b+1),c;"string"===String(typeof webodf_css)?b=webodf_css:(c="webodf.css",runtime.currentDirectory&&(c=runtime.currentDirectory(),0<c.length&&"/"!==c.substr(-1)&&(c+="/"),c+="../webodf.css"),b=runtime.readFileSync(c,"utf-8"));c=a.createElementNS(d.namespaceURI,
+"style");c.setAttribute("media","screen, print, handheld, projection");c.setAttribute("type","text/css");c.setAttribute("webodfcss","1");c.appendChild(a.createTextNode(b));d.appendChild(c);return c}function B(a){var d=parseInt(a.getAttribute("webodfcss"),10);1===d?a.parentNode.removeChild(a):a.setAttribute("count",d-1)}function y(a){var d=a.getElementsByTagName("head")[0],b=a.createElementNS(d.namespaceURI,"style"),c="";b.setAttribute("type","text/css");b.setAttribute("media","screen, print, handheld, projection");
+odf.Namespaces.forEachPrefix(function(a,d){c+="@namespace "+a+" url("+d+");\n"});c+="@namespace webodfhelper url(urn:webodf:names:helper);\n";b.appendChild(a.createTextNode(c));d.appendChild(b);return b}var D=odf.Namespaces.drawns,z=odf.Namespaces.fons,t=odf.Namespaces.officens,x=odf.Namespaces.stylens,w=odf.Namespaces.svgns,F=odf.Namespaces.tablens,L=odf.Namespaces.textns,H=odf.Namespaces.xlinkns,G=odf.Namespaces.presentationns,A=xmldom.XPath,K=core.DomUtils;odf.OdfCanvas=function(v,u){function q(a,
+d,b){function c(a,d,b,e){na.addToQueue(function(){f(a,d,b,e)})}var e,g;e=d.getElementsByTagNameNS(D,"image");for(d=0;d<e.length;d+=1)g=e.item(d),c("image"+String(d),a,g,b)}function w(a,d){function b(a,d){na.addToQueue(function(){r(a,d)})}var c,e,f;e=d.getElementsByTagNameNS(D,"plugin");for(c=0;c<e.length;c+=1)f=e.item(c),b(a,f)}function C(){var a;a=X.firstChild;var d=ga.getZoomLevel();a&&(X.style.WebkitTransformOrigin="0% 0%",X.style.MozTransformOrigin="0% 0%",X.style.msTransformOrigin="0% 0%",X.style.OTransformOrigin=
+"0% 0%",X.style.transformOrigin="0% 0%",S&&((a=S.getMinimumHeightForAnnotationPane())?X.style.minHeight=a:X.style.removeProperty("min-height")),v.style.width=Math.round(d*X.offsetWidth)+"px",v.style.height=Math.round(d*X.offsetHeight)+"px",v.style.display="inline-block")}function z(b,c){var f=ea.sheet;K.removeAllChildNodes(v);X=Y.createElementNS(v.namespaceURI,"div");X.style.display="inline-block";X.style.background="white";X.style.setProperty("float","left","important");X.appendChild(c);v.appendChild(X);
+ha=Y.createElementNS(v.namespaceURI,"div");ha.id="annotationsPane";aa=Y.createElementNS(v.namespaceURI,"div");aa.id="shadowContent";aa.style.position="absolute";aa.style.top=0;aa.style.left=0;b.getContentElement().appendChild(aa);var g=c.body,l,h=[],r;for(l=g.firstElementChild;l&&l!==g;)if(l.namespaceURI===D&&(h[h.length]=l),l.firstElementChild)l=l.firstElementChild;else{for(;l&&l!==g&&!l.nextElementSibling;)l=l.parentNode;l&&l.nextElementSibling&&(l=l.nextElementSibling)}for(r=0;r<h.length;r+=1)l=
+h[r],m("frame"+String(r),l,f);h=A.getODFElementsWithXPath(g,".//*[*[@text:anchor-type='paragraph']]",odf.Namespaces.lookupNamespaceURI);for(l=0;l<h.length;l+=1)g=h[l],g.setAttributeNS&&g.setAttributeNS("urn:webodf:names:helper","containsparagraphanchor",!0);g=Z;l=aa;var k,u,B,C,y=0,H;r=b.rootElement.ownerDocument;if((h=c.body.firstElementChild)&&h.namespaceURI===t&&("presentation"===h.localName||"drawing"===h.localName))for(h=h.firstElementChild;h;){if(k=(k=h.getAttributeNS(D,"master-page-name"))?
+g.getMasterPageElement(k):null){u=h.getAttributeNS("urn:webodf:names:helper","styleid");B=r.createElementNS(D,"draw:page");H=k.firstElementChild;for(y=0;H;)"true"!==H.getAttributeNS(G,"placeholder")&&(C=H.cloneNode(!0),B.appendChild(C)),H=H.nextElementSibling,y+=1;H=C=y=void 0;for(var I=K.getElementsByTagNameNS(B,D,"frame"),y=0;y<I.length;y+=1)C=I[y],(H=C.getAttributeNS(G,"class"))&&!/^(date-time|footer|header|page-number)$/.test(H)&&C.parentNode.removeChild(C);C=K.getElementsByTagNameNS(B,D,"*");
+for(y=0;y<C.length;y+=1)m(u+"_"+y,C[y],f);l.appendChild(B);y=String(l.getElementsByTagNameNS(D,"page").length);p(B,L,"page-number",y);p(B,G,"header",n(b,h,"header"));p(B,G,"footer",n(b,h,"footer"));m(u,B,f);B.setAttributeNS("urn:webodf:names:helper","page-style-name",h.getAttributeNS(D,"style-name"));B.setAttributeNS(D,"draw:master-page-name",k.getAttributeNS(x,"name"))}h=h.nextElementSibling}g=v.namespaceURI;h=K.getElementsByTagNameNS(c.body,F,"table-cell");for(l=0;l<h.length;l+=1)r=h[l],r.hasAttributeNS(F,
+"number-columns-spanned")&&r.setAttributeNS(g,"colspan",r.getAttributeNS(F,"number-columns-spanned")),r.hasAttributeNS(F,"number-rows-spanned")&&r.setAttributeNS(g,"rowspan",r.getAttributeNS(F,"number-rows-spanned"));e(c.body);a(c.body);d(c.body);q(b,c.body,f);w(b,c.body);X.insertBefore(aa,X.firstChild);ga.setZoomableElement(X)}function H(a){J?(ha.parentNode||X.appendChild(ha),S&&S.forgetAnnotations(),S=new gui.AnnotationViewManager(ca,a.body,ha,ba),a=K.getElementsByTagNameNS(a.body,t,"annotation"),
+S.addAnnotations(a),C()):ha.parentNode&&(X.removeChild(ha),S.forgetAnnotations(),C())}function U(a){function d(){c(M);c(ja);c(ea);K.removeAllChildNodes(v);v.style.display="inline-block";var e=E.rootElement;v.ownerDocument.importNode(e,!0);Z.setOdfContainer(E);g(E,M);b(E,Z,ja);z(E,e);H(e);a||na.addToQueue(function(){var a=[E];if(fa.hasOwnProperty("statereadychange")){var d=fa.statereadychange,b;for(b=0;b<d.length;b+=1)d[b].apply(null,a)}})}E.state===odf.OdfContainer.DONE?d():(runtime.log("WARNING: refreshOdf called but ODF was not DONE."),
+qa=runtime.setTimeout(function W(){E.state===odf.OdfContainer.DONE?d():(runtime.log("will be back later..."),qa=runtime.setTimeout(W,500))},100))}function T(a){na.clearQueue();K.removeAllChildNodes(v);v.appendChild(v.ownerDocument.createTextNode(runtime.tr("Loading")+a+"..."));v.removeAttribute("style");E=new odf.OdfContainer(a,function(a){E=a;U(!1)})}runtime.assert(null!==v&&void 0!==v,"odf.OdfCanvas constructor needs DOM element");runtime.assert(null!==v.ownerDocument&&void 0!==v.ownerDocument,
+"odf.OdfCanvas constructor needs DOM");var ca=this,Y=v.ownerDocument,E,Z=new odf.Formatting,da,X=null,ha=null,J=!1,ba=!1,S=null,V,M,ja,ea,aa,fa={},qa,la,ia=!1,ma=!1,na=new h,ga=new gui.ZoomHelper,ka=u||new gui.SingleScrollViewport(v.parentNode);this.refreshCSS=function(){ia=!0;la.trigger()};this.refreshSize=function(){la.trigger()};this.odfContainer=function(){return E};this.setOdfContainer=function(a,d){E=a;U(!0===d)};this.load=this.load=T;this.save=function(a){E.save(a)};this.addListener=function(a,
+d){switch(a){case "click":var b=a;v.addEventListener?v.addEventListener(b,d,!1):v.attachEvent?v.attachEvent("on"+b,d):v["on"+b]=d;break;default:b=fa.hasOwnProperty(a)?fa[a]:fa[a]=[],d&&-1===b.indexOf(d)&&b.push(d)}};this.getFormatting=function(){return Z};this.getAnnotationViewManager=function(){return S};this.refreshAnnotations=function(){H(E.rootElement)};this.rerenderAnnotations=function(){S&&(ma=!0,la.trigger())};this.getSizer=function(){return X};this.enableAnnotations=function(a,d){a!==J&&(J=
+a,ba=d,E&&H(E.rootElement))};this.addAnnotation=function(a){S&&(S.addAnnotations([a]),C())};this.forgetAnnotation=function(a){S&&(S.forgetAnnotation(a),C())};this.getZoomHelper=function(){return ga};this.setZoomLevel=function(a){ga.setZoomLevel(a)};this.getZoomLevel=function(){return ga.getZoomLevel()};this.fitToContainingElement=function(a,d){var b=ga.getZoomLevel(),c=v.offsetHeight/b,b=a/(v.offsetWidth/b);d/c<b&&(b=d/c);ga.setZoomLevel(b)};this.fitToWidth=function(a){var d=v.offsetWidth/ga.getZoomLevel();
+ga.setZoomLevel(a/d)};this.fitSmart=function(a,d){var b,c;c=ga.getZoomLevel();b=v.offsetWidth/c;c=v.offsetHeight/c;b=a/b;void 0!==d&&d/c<b&&(b=d/c);ga.setZoomLevel(Math.min(1,b))};this.fitToHeight=function(a){var d=v.offsetHeight/ga.getZoomLevel();ga.setZoomLevel(a/d)};this.showFirstPage=function(){da.showFirstPage()};this.showNextPage=function(){da.showNextPage()};this.showPreviousPage=function(){da.showPreviousPage()};this.showPage=function(a){da.showPage(a);C()};this.getElement=function(){return v};
+this.getViewport=function(){return ka};this.addCssForFrameWithImage=function(a){var d=a.getAttributeNS(D,"name"),b=a.firstElementChild;m(d,a,ea.sheet);b&&f(d+"img",E,b,ea.sheet)};this.destroy=function(a){var d=Y.getElementsByTagName("head")[0],b=[da.destroy,la.destroy];runtime.clearTimeout(qa);ha&&ha.parentNode&&ha.parentNode.removeChild(ha);ga.destroy(function(){X&&(v.removeChild(X),X=null)});B(V);d.removeChild(M);d.removeChild(ja);d.removeChild(ea);core.Async.destroyAll(b,a)};V=l(Y);da=new k(y(Y));
+M=y(Y);ja=y(Y);ea=y(Y);la=core.Task.createRedrawTask(function(){ia&&(b(E,Z,ja),ia=!1);ma&&(S&&S.rerenderAnnotations(),ma=!1);C()});ga.subscribe(gui.ZoomHelper.signalZoomChanged,C)}})();odf.StepUtils=function(){this.getContentBounds=function(h){var k=h.container(),c,b;runtime.assert(h.isStep(),"Step iterator must be on a step");k.nodeType===Node.TEXT_NODE&&0<h.offset()?c=h.offset():(k=h.leftNode())&&k.nodeType===Node.TEXT_NODE&&(c=k.length);k&&(k.nodeType===Node.TEXT_NODE?(runtime.assert(0<c,"Empty text node found"),b={container:k,startOffset:c-1,endOffset:c}):b={container:k,startOffset:0,endOffset:k.childNodes.length});return b}};ops.MemberProperties=function(){};
+ops.Member=function(h,k){var c=new ops.MemberProperties;this.getMemberId=function(){return h};this.getProperties=function(){return c};this.setProperties=function(b){Object.keys(b).forEach(function(g){c[g]=b[g]})};this.removeProperties=function(b){Object.keys(b).forEach(function(b){"fullName"!==b&&"color"!==b&&"imageUrl"!==b&&c.hasOwnProperty(b)&&delete c[b]})};runtime.assert(Boolean(h),"No memberId was supplied!");k.fullName||(k.fullName=runtime.tr("Unknown Author"));k.color||(k.color="black");k.imageUrl||
+(k.imageUrl="avatar-joe.png");c=k};ops.Document=function(){};ops.Document.prototype.getMemberIds=function(){};ops.Document.prototype.removeCursor=function(h){};ops.Document.prototype.getDocumentElement=function(){};ops.Document.prototype.getRootNode=function(){};ops.Document.prototype.getDOMDocument=function(){};ops.Document.prototype.cloneDocumentElement=function(){};ops.Document.prototype.setDocumentElement=function(h){};ops.Document.prototype.subscribe=function(h,k){};ops.Document.prototype.unsubscribe=function(h,k){};
+ops.Document.prototype.getCanvas=function(){};ops.Document.prototype.createRootFilter=function(h){};ops.Document.prototype.createPositionIterator=function(h){};ops.Document.signalCursorAdded="cursor/added";ops.Document.signalCursorRemoved="cursor/removed";ops.Document.signalCursorMoved="cursor/moved";ops.Document.signalMemberAdded="member/added";ops.Document.signalMemberUpdated="member/updated";ops.Document.signalMemberRemoved="member/removed";ops.OdtCursor=function(h,k){var c=this,b={},g,n,p=new core.EventNotifier([ops.OdtCursor.signalCursorUpdated]);this.removeFromDocument=function(){n.remove()};this.subscribe=function(b,c){p.subscribe(b,c)};this.unsubscribe=function(b,c){p.unsubscribe(b,c)};this.getMemberId=function(){return h};this.getNode=function(){return n.getNode()};this.getAnchorNode=function(){return n.getAnchorNode()};this.getSelectedRange=function(){return n.getSelectedRange()};this.setSelectedRange=function(b,g){n.setSelectedRange(b,
+g);p.emit(ops.OdtCursor.signalCursorUpdated,c)};this.hasForwardSelection=function(){return n.hasForwardSelection()};this.getDocument=function(){return k};this.getSelectionType=function(){return g};this.setSelectionType=function(c){b.hasOwnProperty(c)?g=c:runtime.log("Invalid selection type: "+c)};this.resetSelectionType=function(){c.setSelectionType(ops.OdtCursor.RangeSelection)};n=new core.Cursor(k.getDOMDocument(),h);b[ops.OdtCursor.RangeSelection]=!0;b[ops.OdtCursor.RegionSelection]=!0;c.resetSelectionType()};
+ops.OdtCursor.RangeSelection="Range";ops.OdtCursor.RegionSelection="Region";ops.OdtCursor.signalCursorUpdated="cursorUpdated";(function(){var h=0;ops.StepsCache=function(k,c,b){function g(a,d){var c=this;this.nodeId=a;this.steps=-1;this.node=d;this.previousBookmark=this.nextBookmark=null;this.setIteratorPosition=function(a){a.setPositionBeforeElement(d);b(c.steps,a)}}function n(a,d,c){var e=this;this.nodeId=a;this.steps=d;this.node=c;this.previousBookmark=this.nextBookmark=null;this.setIteratorPosition=function(a){a.setUnfilteredPosition(c,0);b(e.steps,a)}}function p(a,d){var b="["+a.nodeId;d&&(b+=" => "+d.nodeId);return b+
+"]"}function m(){if(!0===ops.StepsCache.ENABLE_CACHE_VERIFICATION){for(var a=y,d,b,c,e=new core.LoopWatchDog(0,1E5),f={};a;){e.check();(d=a.previousBookmark)?runtime.assert(d.nextBookmark===a,"Broken bookmark link to previous @"+p(d,a)):(runtime.assert(a===y,"Broken bookmark link @"+p(a)),runtime.assert(void 0===D||y===y||y.steps<=D,"Base point is damaged @"+p(a)));(b=a.nextBookmark)&&runtime.assert(b.previousBookmark===a,"Broken bookmark link to next @"+p(a,b));if(void 0===D||a===y||a.steps<=D)runtime.assert(B.containsNode(k,
+a.node),"Disconnected node is being reported as undamaged @"+p(a)),d&&(c=a.node.compareDocumentPosition(d.node),runtime.assert(0===c||0!==(c&t),"Bookmark order with previous does not reflect DOM order @"+p(d,a))),b&&B.containsNode(k,b.node)&&(c=a.node.compareDocumentPosition(b.node),runtime.assert(0===c||0!==(c&z),"Bookmark order with next does not reflect DOM order @"+p(a,b)));a=a.nextBookmark}Object.keys(r).forEach(function(a){var d=r[a];(void 0===D||a<=D)&&runtime.assert(d.steps<=a,"Bookmark step of "+
+d.steps+" exceeds cached step lookup for "+a+" @"+p(d));runtime.assert(!1===f.hasOwnProperty(d.nodeId),"Bookmark "+p(d)+" appears twice in cached step lookup at steps "+f[d.nodeId]+" and "+a);f[d.nodeId]=a})}}function q(a){var d="";a.nodeType===Node.ELEMENT_NODE&&(d=a.getAttributeNS("urn:webodf:names:steps","nodeId")||"");return d}function f(a){var d=h.toString();a.setAttributeNS("urn:webodf:names:steps","nodeId",d);h+=1;return d}function e(a){var d,b,e=new core.LoopWatchDog(0,1E4);void 0!==D&&a>
+D&&(a=D);for(d=Math.floor(a/c)*c;!b&&0<=d;)b=r[d],d-=c;for(b=b||y;b.nextBookmark&&b.nextBookmark.steps<=a;)e.check(),b=b.nextBookmark;runtime.assert(-1===a||b.steps<=a,"Bookmark @"+p(b)+" at step "+b.steps+" exceeds requested step of "+a);return b}function a(a){a.previousBookmark&&(a.previousBookmark.nextBookmark=a.nextBookmark);a.nextBookmark&&(a.nextBookmark.previousBookmark=a.previousBookmark)}function d(a){for(var d,b=null;!b&&a&&a!==k;)(d=q(a))&&(b=l[d])&&b.node!==a&&(runtime.log("Cloned node detected. Creating new bookmark"),
+b=null,a.removeAttributeNS("urn:webodf:names:steps","nodeId")),a=a.parentNode;return b}var r={},l={},B=core.DomUtils,y,D,z=Node.DOCUMENT_POSITION_FOLLOWING,t=Node.DOCUMENT_POSITION_PRECEDING;this.updateBookmark=function(d,b){var h,n=Math.ceil(d/c)*c,p,t,A;if(void 0!==D&&D<d){p=e(D);for(t=p.nextBookmark;t&&t.steps<=d;)h=t.nextBookmark,A=Math.ceil(t.steps/c)*c,r[A]===t&&delete r[A],B.containsNode(k,t.node)?t.steps=d+1:(a(t),delete l[t.nodeId]),t=h;D=d}else p=e(d);t=q(b)||f(b);h=l[t];h?h.node!==b&&(runtime.log("Cloned node detected. Creating new bookmark"),
+t=f(b),h=l[t]=new g(t,b)):h=l[t]=new g(t,b);t=h;t.steps!==d&&(h=Math.ceil(t.steps/c)*c,h!==n&&r[h]===t&&delete r[h],t.steps=d);if(p!==t&&p.nextBookmark!==t){if(p.steps===t.steps)for(;0!==(t.node.compareDocumentPosition(p.node)&z)&&p!==y;)p=p.previousBookmark;p!==t&&p.nextBookmark!==t&&(a(t),h=p.nextBookmark,t.nextBookmark=p.nextBookmark,t.previousBookmark=p,p.nextBookmark=t,h&&(h.previousBookmark=t))}p=r[n];if(!p||t.steps>p.steps)r[n]=t;m()};this.setToClosestStep=function(a,d){var b;m();b=e(a);b.setIteratorPosition(d);
+return b.steps};this.setToClosestDomPoint=function(a,b,c){var f,g;m();if(a===k&&0===b)f=y;else if(a===k&&b===k.childNodes.length)for(g in f=y,r)r.hasOwnProperty(g)&&(a=r[g],a.steps>f.steps&&(f=a));else if(f=d(a.childNodes.item(b)||a),!f)for(c.setUnfilteredPosition(a,b);!f&&c.previousNode();)f=d(c.getCurrentNode());f=f||y;void 0!==D&&f.steps>D&&(f=e(D));f.setIteratorPosition(c);return f.steps};this.damageCacheAfterStep=function(a){0>a&&(a=-1);void 0===D?D=a:a<D&&(D=a);m()};(function(){var a=q(k)||
+f(k);y=new n(a,0,k)})()};ops.StepsCache.ENABLE_CACHE_VERIFICATION=!1;ops.StepsCache.Bookmark=function(){};ops.StepsCache.Bookmark.prototype.setIteratorPosition=function(h){}})();(function(){ops.OdtStepsTranslator=function(h,k,c,b){function g(a,b,c){var e=b.getCurrentNode();b.isBeforeNode()&&m.isParagraph(e)&&(c||(a+=1),p.updateBookmark(a,e))}function n(d,b){if(!b||c.acceptPosition(d)===f)return!0;for(;d.previousPosition();)if(c.acceptPosition(d)===f){if(b(e,d.container(),d.unfilteredDomOffset()))return!0;break}for(;d.nextPosition();)if(c.acceptPosition(d)===f){if(b(a,d.container(),d.unfilteredDomOffset()))return!0;break}return!1}var p,m=odf.OdfUtils,q=core.DomUtils,f=core.PositionFilter.FilterResult.FILTER_ACCEPT,
+e=core.StepDirection.PREVIOUS,a=core.StepDirection.NEXT;this.convertStepsToDomPoint=function(a){var b,e;if(isNaN(a))throw new TypeError("Requested steps is not numeric ("+a+")");if(0>a)throw new RangeError("Requested steps is negative ("+a+")");for(b=p.setToClosestStep(a,k);b<a&&k.nextPosition();)(e=c.acceptPosition(k)===f)&&(b+=1),g(b,k,e);if(b!==a)throw new RangeError("Requested steps ("+a+") exceeds available steps ("+b+")");return{node:k.container(),offset:k.unfilteredDomOffset()}};this.convertDomPointToSteps=
+function(a,b,e){var m;q.containsNode(h,a)||(b=0>q.comparePoints(h,0,a,b),a=h,b=b?0:h.childNodes.length);k.setUnfilteredPosition(a,b);n(k,e)||k.setUnfilteredPosition(a,b);e=k.container();b=k.unfilteredDomOffset();a=p.setToClosestDomPoint(e,b,k);if(0>q.comparePoints(k.container(),k.unfilteredDomOffset(),e,b))return 0<a?a-1:a;for(;(k.container()!==e||k.unfilteredDomOffset()!==b)&&k.nextPosition();)(m=c.acceptPosition(k)===f)&&(a+=1),g(a,k,m);return a+0};this.prime=function(){var a,b;for(a=p.setToClosestStep(0,
+k);k.nextPosition();)(b=c.acceptPosition(k)===f)&&(a+=1),g(a,k,b)};this.handleStepsInserted=function(a){p.damageCacheAfterStep(a.position)};this.handleStepsRemoved=function(a){p.damageCacheAfterStep(a.position-1)};p=new ops.StepsCache(h,b,function(a,b){do{if(c.acceptPosition(b)===f){g(a,b,!0);break}g(a-1,b,!1)}while(b.nextPosition())})}})();ops.Operation=function(){};ops.Operation.prototype.init=function(h){};ops.Operation.prototype.execute=function(h){};ops.Operation.prototype.spec=function(){};ops.TextPositionFilter=function(){function h(b,c){for(;b&&c(b)!==n;)b=b.previousSibling;return b}function k(b,g,f,e){var a;if(g){if(c.isInlineRoot(g)&&c.isGroupingElement(f))return p;e=c.lookLeftForCharacter(g);if(1===e||2===e&&(c.scanRightForAnyCharacter(f)||c.scanRightForAnyCharacter(c.nextNode(b))))return n}else if(c.isGroupingElement(b)&&c.isInlineRoot(h(b.previousSibling,e)))return n;e=null===g&&c.isParagraph(b);a=c.lookRightForCharacter(f);if(e)return a?n:c.scanRightForAnyCharacter(f)?p:n;if(!a)return p;
+g=g||c.previousNode(b);return c.scanLeftForAnyCharacter(g)?p:n}var c=odf.OdfUtils,b=Node.ELEMENT_NODE,g=Node.TEXT_NODE,n=core.PositionFilter.FilterResult.FILTER_ACCEPT,p=core.PositionFilter.FilterResult.FILTER_REJECT;this.acceptPosition=function(h){var q=h.container(),f=q.nodeType,e,a,d;if(f!==b&&f!==g)return p;if(f===g){f=h.unfilteredDomOffset();e=q.data;runtime.assert(f!==e.length,"Unexpected offset.");if(0<f){h=e[f-1];if(!c.isODFWhitespace(h))return n;if(1<f)if(h=e[f-2],!c.isODFWhitespace(h))d=
+n;else{if(!c.isODFWhitespace(e.substr(0,f)))return p}else a=c.previousNode(q),c.scanLeftForNonSpace(a)&&(d=n);if(d===n)return c.isTrailingWhitespace(q,f)?p:n;h=e[f];return c.isODFWhitespace(h)?p:c.scanLeftForAnyCharacter(c.previousNode(q))?p:n}a=h.leftNode();d=q;q=q.parentNode;d=k(q,a,d,h.getNodeFilter())}else c.isGroupingElement(q)?(a=h.leftNode(),d=h.rightNode(),d=k(q,a,d,h.getNodeFilter())):d=p;return d}};function RootFilter(h,k,c){var b=core.PositionFilter.FilterResult.FILTER_ACCEPT,g=core.PositionFilter.FilterResult.FILTER_REJECT;this.acceptPosition=function(n){n=n.container();var p;p="string"===typeof h?k[h].getNode():h;return c(n)===c(p)?b:g}}
+ops.OdtDocument=function(h){function k(a){return new core.PositionIterator(a,F,G,!1)}function c(){var a=h.odfContainer().getContentElement(),b=a&&a.localName;runtime.assert("text"===b,"Unsupported content element type '"+b+"' for OdtDocument");return a}function b(){return a.getDocumentElement().ownerDocument}function g(a){for(;a&&!(a.namespaceURI===odf.Namespaces.officens&&"text"===a.localName||a.namespaceURI===odf.Namespaces.officens&&"annotation"===a.localName);)a=a.parentNode;return a}function n(a,
+b,d,c){c=k(c);var e;1===d.length?e=d[0]:(e=new core.PositionFilterChain,d.forEach(e.addFilter));d=new core.StepIterator(e,c);d.setPosition(a,b);return d}function p(a){var b=k(c());a=x.convertStepsToDomPoint(a);b.setUnfilteredPosition(a.node,a.offset);return b}function m(a){return a===z}function q(b){var d=b.spec(),c=d.memberid,e=(new Date(d.timestamp)).toISOString(),d=h.odfContainer();b.isEdit&&(c=a.getMember(c).getProperties().fullName,d.setMetadata({"dc:creator":c,"dc:date":e},null),c={setProperties:{"dc:creator":c,
+"dc:date":e},removedProperties:[]},w||(c.setProperties["meta:editing-cycles"]=d.incrementEditingCycles(),d.setMetadata(null,["meta:editing-duration","meta:document-statistic"])),w=b,a.emit(ops.OdtDocument.signalMetadataUpdated,c))}function f(a){var b,c=[],e,f=2;runtime.assert(a.isStep(),"positionIterator is not at a step");do{if(b=d.getContentBounds(a))if(b=b.container,r.isDowngradableSpaceElement(b)){for(e=b.lastChild;b.firstChild;)c.push(b.firstChild),b.parentNode.insertBefore(b.firstChild,b);b.parentNode.removeChild(b);
+a.setPosition(e,e.nodeType===Node.TEXT_NODE?e.length:e.childNodes.length);a.roundToPreviousStep()}--f}while(0<f&&a.nextStep());c.forEach(l.normalizeTextNodes)}function e(a,b,d){a=a.childNodes.item(b)||a;return(a=r.getParagraphElement(a))&&l.containsNode(d,a)?a:d}var a=this,d,r=odf.OdfUtils,l=core.DomUtils,B={},y={},D=new core.EventNotifier([ops.Document.signalMemberAdded,ops.Document.signalMemberUpdated,ops.Document.signalMemberRemoved,ops.Document.signalCursorAdded,ops.Document.signalCursorRemoved,
+ops.Document.signalCursorMoved,ops.OdtDocument.signalParagraphChanged,ops.OdtDocument.signalParagraphStyleModified,ops.OdtDocument.signalCommonStyleCreated,ops.OdtDocument.signalCommonStyleDeleted,ops.OdtDocument.signalTableAdded,ops.OdtDocument.signalOperationStart,ops.OdtDocument.signalOperationEnd,ops.OdtDocument.signalProcessingBatchStart,ops.OdtDocument.signalProcessingBatchEnd,ops.OdtDocument.signalUndoStackChanged,ops.OdtDocument.signalStepsInserted,ops.OdtDocument.signalStepsRemoved,ops.OdtDocument.signalMetadataUpdated,
+ops.OdtDocument.signalAnnotationAdded]),z=core.StepDirection.NEXT,t,x,w,F=NodeFilter.SHOW_ALL,L=new gui.BlacklistNamespaceNodeFilter(["urn:webodf:names:cursor","urn:webodf:names:editinfo"]),H=new gui.OdfTextBodyNodeFilter,G=new core.NodeFilterChain([L,H]);this.createPositionIterator=k;this.getDocumentElement=function(){return h.odfContainer().rootElement};this.cloneDocumentElement=function(){var b=a.getDocumentElement(),d=h.getAnnotationViewManager();d&&d.forgetAnnotations();b=b.cloneNode(!0);h.refreshAnnotations();
+a.fixCursorPositions();return b};this.setDocumentElement=function(a){var b=h.odfContainer();D.unsubscribe(ops.OdtDocument.signalStepsInserted,x.handleStepsInserted);D.unsubscribe(ops.OdtDocument.signalStepsRemoved,x.handleStepsRemoved);b.setRootElement(a);h.setOdfContainer(b,!0);h.refreshCSS();a=c();x=new ops.OdtStepsTranslator(a,k(a),t,500);D.subscribe(ops.OdtDocument.signalStepsInserted,x.handleStepsInserted);D.subscribe(ops.OdtDocument.signalStepsRemoved,x.handleStepsRemoved)};this.getDOMDocument=
+b;this.getRootElement=g;this.createStepIterator=n;this.getIteratorAtPosition=p;this.convertCursorStepToDomPoint=function(a){return x.convertStepsToDomPoint(a)};this.convertDomPointToCursorStep=function(a,b,d){var c;d===z&&(c=m);return x.convertDomPointToSteps(a,b,c)};this.convertDomToCursorRange=function(a){var b;b=x.convertDomPointToSteps(a.anchorNode,a.anchorOffset);a=a.anchorNode===a.focusNode&&a.anchorOffset===a.focusOffset?b:x.convertDomPointToSteps(a.focusNode,a.focusOffset);return{position:b,
+length:a-b}};this.convertCursorToDomRange=function(a,d){var c=b().createRange(),e,f;e=x.convertStepsToDomPoint(a);d?(f=x.convertStepsToDomPoint(a+d),0<d?(c.setStart(e.node,e.offset),c.setEnd(f.node,f.offset)):(c.setStart(f.node,f.offset),c.setEnd(e.node,e.offset))):c.setStart(e.node,e.offset);return c};this.upgradeWhitespacesAtPosition=function(a){var b=p(a),b=new core.StepIterator(t,b),c,e=2;runtime.assert(b.isStep(),"positionIterator is not at a step (requested step: "+a+")");do{if(c=d.getContentBounds(b))if(a=
+c.container,c=c.startOffset,a.nodeType===Node.TEXT_NODE&&r.isSignificantWhitespace(a,c)){runtime.assert(" "===a.data[c],"upgradeWhitespaceToElement: textNode.data[offset] should be a literal space");var f=a.ownerDocument.createElementNS(odf.Namespaces.textns,"text:s"),g=a.parentNode,l=a;f.appendChild(a.ownerDocument.createTextNode(" "));1===a.length?g.replaceChild(f,a):(a.deleteData(c,1),0<c&&(c<a.length&&a.splitText(c),l=a.nextSibling),g.insertBefore(f,l));a=f;b.setPosition(a,a.childNodes.length);
+b.roundToPreviousStep()}--e}while(0<e&&b.nextStep())};this.downgradeWhitespaces=f;this.downgradeWhitespacesAtPosition=function(a){a=p(a);a=new core.StepIterator(t,a);f(a)};this.getTextNodeAtStep=function(d,c){var e=p(d),f=e.container(),g,l=0,h=null;f.nodeType===Node.TEXT_NODE?(g=f,l=e.unfilteredDomOffset(),0<g.length&&(0<l&&(g=g.splitText(l)),g.parentNode.insertBefore(b().createTextNode(""),g),g=g.previousSibling,l=0)):(g=b().createTextNode(""),l=0,f.insertBefore(g,e.rightNode()));if(c){if(B[c]&&
+a.getCursorPosition(c)===d){for(h=B[c].getNode();h.nextSibling&&"cursor"===h.nextSibling.localName;)h.parentNode.insertBefore(h.nextSibling,h);0<g.length&&g.nextSibling!==h&&(g=b().createTextNode(""),l=0);h.parentNode.insertBefore(g,h)}}else for(;g.nextSibling&&"cursor"===g.nextSibling.localName;)g.parentNode.insertBefore(g.nextSibling,g);for(;g.previousSibling&&g.previousSibling.nodeType===Node.TEXT_NODE;)e=g.previousSibling,e.appendData(g.data),l=e.length,g=e,g.parentNode.removeChild(g.nextSibling);
+for(;g.nextSibling&&g.nextSibling.nodeType===Node.TEXT_NODE;)e=g.nextSibling,g.appendData(e.data),g.parentNode.removeChild(e);return{textNode:g,offset:l}};this.fixCursorPositions=function(){Object.keys(B).forEach(function(b){var d=B[b],c=g(d.getNode()),f=a.createRootFilter(c),l,h,r,m=!1;r=d.getSelectedRange();l=e(r.startContainer,r.startOffset,c);h=n(r.startContainer,r.startOffset,[t,f],l);r.collapsed?c=h:(l=e(r.endContainer,r.endOffset,c),c=n(r.endContainer,r.endOffset,[t,f],l));h.isStep()&&c.isStep()?
+h.container()!==c.container()||h.offset()!==c.offset()||r.collapsed&&d.getAnchorNode()===d.getNode()||(m=!0,r.setStart(h.container(),h.offset()),r.collapse(!0)):(m=!0,runtime.assert(h.roundToClosestStep(),"No walkable step found for cursor owned by "+b),r.setStart(h.container(),h.offset()),runtime.assert(c.roundToClosestStep(),"No walkable step found for cursor owned by "+b),r.setEnd(c.container(),c.offset()));m&&(d.setSelectedRange(r,d.hasForwardSelection()),a.emit(ops.Document.signalCursorMoved,
+d))})};this.getCursorPosition=function(a){return(a=B[a])?x.convertDomPointToSteps(a.getNode(),0):0};this.getCursorSelection=function(a){a=B[a];var b=0,d=0;a&&(b=x.convertDomPointToSteps(a.getNode(),0),d=x.convertDomPointToSteps(a.getAnchorNode(),0));return{position:d,length:b-d}};this.getPositionFilter=function(){return t};this.getOdfCanvas=function(){return h};this.getCanvas=function(){return h};this.getRootNode=c;this.addMember=function(a){runtime.assert(void 0===y[a.getMemberId()],"This member already exists");
+y[a.getMemberId()]=a};this.getMember=function(a){return y.hasOwnProperty(a)?y[a]:null};this.removeMember=function(a){delete y[a]};this.getCursor=function(a){return B[a]};this.getMemberIds=function(){var a=[],b;for(b in B)B.hasOwnProperty(b)&&a.push(B[b].getMemberId());return a};this.addCursor=function(b){runtime.assert(Boolean(b),"OdtDocument::addCursor without cursor");var d=b.getMemberId(),c=a.convertCursorToDomRange(0,0);runtime.assert("string"===typeof d,"OdtDocument::addCursor has cursor without memberid");
+runtime.assert(!B[d],"OdtDocument::addCursor is adding a duplicate cursor with memberid "+d);b.setSelectedRange(c,!0);B[d]=b};this.removeCursor=function(b){var d=B[b];return d?(d.removeFromDocument(),delete B[b],a.emit(ops.Document.signalCursorRemoved,b),!0):!1};this.moveCursor=function(b,d,c,e){b=B[b];d=a.convertCursorToDomRange(d,c);b&&(b.setSelectedRange(d,0<=c),b.setSelectionType(e||ops.OdtCursor.RangeSelection))};this.getFormatting=function(){return h.getFormatting()};this.emit=function(a,b){D.emit(a,
+b)};this.subscribe=function(a,b){D.subscribe(a,b)};this.unsubscribe=function(a,b){D.unsubscribe(a,b)};this.createRootFilter=function(a){return new RootFilter(a,B,g)};this.close=function(a){a()};this.destroy=function(a){a()};(function(){var a=c();t=new ops.TextPositionFilter;d=new odf.StepUtils;x=new ops.OdtStepsTranslator(a,k(a),t,500);D.subscribe(ops.OdtDocument.signalStepsInserted,x.handleStepsInserted);D.subscribe(ops.OdtDocument.signalStepsRemoved,x.handleStepsRemoved);D.subscribe(ops.OdtDocument.signalOperationEnd,
+q);D.subscribe(ops.OdtDocument.signalProcessingBatchEnd,core.Task.processTasks)})()};ops.OdtDocument.signalParagraphChanged="paragraph/changed";ops.OdtDocument.signalTableAdded="table/added";ops.OdtDocument.signalCommonStyleCreated="style/created";ops.OdtDocument.signalCommonStyleDeleted="style/deleted";ops.OdtDocument.signalParagraphStyleModified="paragraphstyle/modified";ops.OdtDocument.signalOperationStart="operation/start";ops.OdtDocument.signalOperationEnd="operation/end";
+ops.OdtDocument.signalProcessingBatchStart="router/batchstart";ops.OdtDocument.signalProcessingBatchEnd="router/batchend";ops.OdtDocument.signalUndoStackChanged="undo/changed";ops.OdtDocument.signalStepsInserted="steps/inserted";ops.OdtDocument.signalStepsRemoved="steps/removed";ops.OdtDocument.signalMetadataUpdated="metadata/updated";ops.OdtDocument.signalAnnotationAdded="annotation/added";ops.OpAddAnnotation=function(){function h(b,c,f){var e=b.getTextNodeAtStep(f,k);e&&(b=e.textNode,f=b.parentNode,e.offset!==b.length&&b.splitText(e.offset),f.insertBefore(c,b.nextSibling),0===b.length&&f.removeChild(b))}var k,c,b,g,n,p;this.init=function(h){k=h.memberid;c=parseInt(h.timestamp,10);b=parseInt(h.position,10);g=void 0!==h.length?parseInt(h.length,10)||0:void 0;n=h.name};this.isEdit=!0;this.group=void 0;this.execute=function(m){var q=m.getCursor(k),f,e;p=m.getDOMDocument();var a=new Date(c),
+d,r,l;d=p.createElementNS(odf.Namespaces.officens,"office:annotation");d.setAttributeNS(odf.Namespaces.officens,"office:name",n);f=p.createElementNS(odf.Namespaces.dcns,"dc:creator");f.setAttributeNS("urn:webodf:names:editinfo","editinfo:memberid",k);f.textContent=m.getMember(k).getProperties().fullName;e=p.createElementNS(odf.Namespaces.dcns,"dc:date");e.appendChild(p.createTextNode(a.toISOString()));a=p.createElementNS(odf.Namespaces.textns,"text:list");r=p.createElementNS(odf.Namespaces.textns,
+"text:list-item");l=p.createElementNS(odf.Namespaces.textns,"text:p");r.appendChild(l);a.appendChild(r);d.appendChild(f);d.appendChild(e);d.appendChild(a);void 0!==g&&(f=p.createElementNS(odf.Namespaces.officens,"office:annotation-end"),f.setAttributeNS(odf.Namespaces.officens,"office:name",n),d.annotationEndElement=f,h(m,f,b+g));h(m,d,b);m.emit(ops.OdtDocument.signalStepsInserted,{position:b});q&&(f=p.createRange(),e=d.getElementsByTagNameNS(odf.Namespaces.textns,"p")[0],f.selectNodeContents(e),
+q.setSelectedRange(f,!1),q.setSelectionType(ops.OdtCursor.RangeSelection),m.emit(ops.Document.signalCursorMoved,q));m.getOdfCanvas().addAnnotation(d);m.fixCursorPositions();m.emit(ops.OdtDocument.signalAnnotationAdded,{memberId:k,annotation:d});return!0};this.spec=function(){return{optype:"AddAnnotation",memberid:k,timestamp:c,position:b,length:g,name:n}}};ops.OpAddCursor=function(){var h,k;this.init=function(c){h=c.memberid;k=c.timestamp};this.isEdit=!1;this.group=void 0;this.execute=function(c){var b=c.getCursor(h);if(b)return!1;b=new ops.OdtCursor(h,c);c.addCursor(b);c.emit(ops.Document.signalCursorAdded,b);return!0};this.spec=function(){return{optype:"AddCursor",memberid:h,timestamp:k}}};ops.OpAddMember=function(){var h,k,c;this.init=function(b){h=b.memberid;k=parseInt(b.timestamp,10);c=b.setProperties};this.isEdit=!1;this.group=void 0;this.execute=function(b){var g;if(b.getMember(h))return!1;g=new ops.Member(h,c);b.addMember(g);b.emit(ops.Document.signalMemberAdded,g);return!0};this.spec=function(){return{optype:"AddMember",memberid:h,timestamp:k,setProperties:c}}};ops.OpAddStyle=function(){var h,k,c,b,g,n,p=odf.Namespaces.stylens;this.init=function(m){h=m.memberid;k=m.timestamp;c=m.styleName;b=m.styleFamily;g="true"===m.isAutomaticStyle||!0===m.isAutomaticStyle;n=m.setProperties};this.isEdit=!0;this.group=void 0;this.execute=function(h){var k=h.getOdfCanvas().odfContainer(),f=h.getFormatting(),e=h.getDOMDocument().createElementNS(p,"style:style");if(!e)return!1;n&&f.updateStyle(e,n);e.setAttributeNS(p,"style:family",b);e.setAttributeNS(p,"style:name",c);g?
+k.rootElement.automaticStyles.appendChild(e):k.rootElement.styles.appendChild(e);h.getOdfCanvas().refreshCSS();g||h.emit(ops.OdtDocument.signalCommonStyleCreated,{name:c,family:b});return!0};this.spec=function(){return{optype:"AddStyle",memberid:h,timestamp:k,styleName:c,styleFamily:b,isAutomaticStyle:g,setProperties:n}}};odf.ObjectNameGenerator=function(h,k){function c(a,b){var d={};this.generateName=function(){var c=b(),e=0,f;do f=a+e,e+=1;while(d[f]||c[f]);d[f]=!0;return f}}function b(){var a={};[h.rootElement.automaticStyles,h.rootElement.styles].forEach(function(b){for(b=b.firstElementChild;b;)b.namespaceURI===g&&"style"===b.localName&&(a[b.getAttributeNS(g,"name")]=!0),b=b.nextElementSibling});return a}var g=odf.Namespaces.stylens,n=odf.Namespaces.drawns,p=odf.Namespaces.xlinkns,m=(new core.Utils).hashString(k),
+q=null,f=null,e=null,a={},d={};this.generateStyleName=function(){null===q&&(q=new c("auto"+m+"_",function(){return b()}));return q.generateName()};this.generateFrameName=function(){var b,d,e;if(null===f){d=h.rootElement.body.getElementsByTagNameNS(n,"frame");for(b=0;b<d.length;b+=1)e=d.item(b),a[e.getAttributeNS(n,"name")]=!0;f=new c("fr"+m+"_",function(){return a})}return f.generateName()};this.generateImageName=function(){var a,b,f;if(null===e){f=h.rootElement.body.getElementsByTagNameNS(n,"image");
+for(a=0;a<f.length;a+=1)b=f.item(a),b=b.getAttributeNS(p,"href"),b=b.substring(9,b.lastIndexOf(".")),d[b]=!0;e=new c("img"+m+"_",function(){return d})}return e.generateName()}};odf.TextStyleApplicator=function(h,k,c){function b(b){function c(a,b){return"object"===typeof a&&"object"===typeof b?Object.keys(a).every(function(f){return c(a[f],b[f])}):a===b}var a={};this.isStyleApplied=function(d){d=k.getAppliedStylesForElement(d,a).styleProperties;return c(b,d)}}function g(b){var e={};this.applyStyleToContainer=function(a){var d;d=a.getAttributeNS(m,"style-name");var g=a.ownerDocument;d=d||"";if(!e.hasOwnProperty(d)){var l=d,n;n=d?k.createDerivedStyleObject(d,"text",b):b;g=
+g.createElementNS(q,"style:style");k.updateStyle(g,n);g.setAttributeNS(q,"style:name",h.generateStyleName());g.setAttributeNS(q,"style:family","text");g.setAttributeNS("urn:webodf:names:scope","scope","document-content");c.appendChild(g);e[l]=g}d=e[d].getAttributeNS(q,"name");a.setAttributeNS(m,"text:style-name",d)}}function n(b,c){var a=b.ownerDocument,d=b.parentNode,g,l,h,n=new core.LoopWatchDog(1E4);l=[];l.push(b);for(h=b.nextSibling;h&&p.rangeContainsNode(c,h);)n.check(),l.push(h),h=h.nextSibling;
+"span"!==d.localName||d.namespaceURI!==m?(g=a.createElementNS(m,"text:span"),d.insertBefore(g,b),a=!1):(b.previousSibling&&!p.rangeContainsNode(c,d.firstChild)?(g=d.cloneNode(!1),d.parentNode.insertBefore(g,d.nextSibling)):g=d,a=!0);l.forEach(function(a){a.parentNode!==g&&g.appendChild(a)});if(h&&a)for(l=g.cloneNode(!1),g.parentNode.insertBefore(l,g.nextSibling);h;)n.check(),a=h.nextSibling,l.appendChild(h),h=a;return g}var p=core.DomUtils,m=odf.Namespaces.textns,q=odf.Namespaces.stylens;this.applyStyle=
+function(c,e,a){var d={},h,l,m,k;runtime.assert(a&&a.hasOwnProperty("style:text-properties"),"applyStyle without any text properties");d["style:text-properties"]=a["style:text-properties"];m=new g(d);k=new b(d);c.forEach(function(a){h=k.isStyleApplied(a);!1===h&&(l=n(a,e),m.applyStyleToContainer(l))})}};ops.OpApplyDirectStyling=function(){function h(b,c,e){var a=b.getOdfCanvas().odfContainer(),d=m.splitBoundaries(c),g=p.getTextNodes(c,!1);(new odf.TextStyleApplicator(new odf.ObjectNameGenerator(a,k),b.getFormatting(),a.rootElement.automaticStyles)).applyStyle(g,c,e);d.forEach(m.normalizeTextNodes)}var k,c,b,g,n,p=odf.OdfUtils,m=core.DomUtils;this.init=function(h){k=h.memberid;c=h.timestamp;b=parseInt(h.position,10);g=parseInt(h.length,10);n=h.setProperties};this.isEdit=!0;this.group=void 0;this.execute=
+function(m){var f=m.convertCursorToDomRange(b,g),e=p.getParagraphElements(f);h(m,f,n);f.detach();m.getOdfCanvas().refreshCSS();m.fixCursorPositions();e.forEach(function(a){m.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:a,memberId:k,timeStamp:c})});m.getOdfCanvas().rerenderAnnotations();return!0};this.spec=function(){return{optype:"ApplyDirectStyling",memberid:k,timestamp:c,position:b,length:g,setProperties:n}}};ops.OpApplyHyperlink=function(){function h(b){for(;b;){if(m.isHyperlink(b))return!0;b=b.parentNode}return!1}var k,c,b,g,n,p=core.DomUtils,m=odf.OdfUtils;this.init=function(h){k=h.memberid;c=h.timestamp;b=h.position;g=h.length;n=h.hyperlink};this.isEdit=!0;this.group=void 0;this.execute=function(q){var f=q.getDOMDocument(),e=q.convertCursorToDomRange(b,g),a=p.splitBoundaries(e),d=[],r=m.getTextNodes(e,!1);if(0===r.length)return!1;r.forEach(function(a){var b=m.getParagraphElement(a);runtime.assert(!1===
+h(a),"The given range should not contain any link.");var c=n,e=f.createElementNS(odf.Namespaces.textns,"text:a");e.setAttributeNS(odf.Namespaces.xlinkns,"xlink:type","simple");e.setAttributeNS(odf.Namespaces.xlinkns,"xlink:href",c);a.parentNode.insertBefore(e,a);e.appendChild(a);-1===d.indexOf(b)&&d.push(b)});a.forEach(p.normalizeTextNodes);e.detach();q.fixCursorPositions();q.getOdfCanvas().refreshSize();q.getOdfCanvas().rerenderAnnotations();d.forEach(function(a){q.emit(ops.OdtDocument.signalParagraphChanged,
+{paragraphElement:a,memberId:k,timeStamp:c})});return!0};this.spec=function(){return{optype:"ApplyHyperlink",memberid:k,timestamp:c,position:b,length:g,hyperlink:n}}};ops.OpInsertImage=function(){var h,k,c,b,g,n,p,m,q=odf.Namespaces.drawns,f=odf.Namespaces.svgns,e=odf.Namespaces.textns,a=odf.Namespaces.xlinkns,d=odf.OdfUtils;this.init=function(a){h=a.memberid;k=a.timestamp;c=a.position;b=a.filename;g=a.frameWidth;n=a.frameHeight;p=a.frameStyleName;m=a.frameName};this.isEdit=!0;this.group=void 0;this.execute=function(r){var l=r.getOdfCanvas(),B=r.getTextNodeAtStep(c,h),y,D;if(!B)return!1;y=B.textNode;D=d.getParagraphElement(y);var B=B.offset!==y.length?y.splitText(B.offset):
+y.nextSibling,z=r.getDOMDocument(),t=z.createElementNS(q,"draw:image"),z=z.createElementNS(q,"draw:frame");t.setAttributeNS(a,"xlink:href",b);t.setAttributeNS(a,"xlink:type","simple");t.setAttributeNS(a,"xlink:show","embed");t.setAttributeNS(a,"xlink:actuate","onLoad");z.setAttributeNS(q,"draw:style-name",p);z.setAttributeNS(q,"draw:name",m);z.setAttributeNS(e,"text:anchor-type","as-char");z.setAttributeNS(f,"svg:width",g);z.setAttributeNS(f,"svg:height",n);z.appendChild(t);y.parentNode.insertBefore(z,
+B);r.emit(ops.OdtDocument.signalStepsInserted,{position:c});0===y.length&&y.parentNode.removeChild(y);l.addCssForFrameWithImage(z);l.refreshCSS();r.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:D,memberId:h,timeStamp:k});l.rerenderAnnotations();return!0};this.spec=function(){return{optype:"InsertImage",memberid:h,timestamp:k,filename:b,position:c,frameWidth:g,frameHeight:n,frameStyleName:p,frameName:m}}};ops.OpInsertTable=function(){function h(a,d){var c;if(1===f.length)c=f[0];else if(3===f.length)switch(a){case 0:c=f[0];break;case b-1:c=f[2];break;default:c=f[1]}else c=f[a];if(1===c.length)return c[0];if(3===c.length)switch(d){case 0:return c[0];case g-1:return c[2];default:return c[1]}return c[d]}var k,c,b,g,n,p,m,q,f,e=odf.OdfUtils;this.init=function(a){k=a.memberid;c=a.timestamp;n=a.position;b=a.initialRows;g=a.initialColumns;p=a.tableName;m=a.tableStyleName;q=a.tableColumnStyleName;f=a.tableCellStyleMatrix};
+this.isEdit=!0;this.group=void 0;this.execute=function(a){var d=a.getTextNodeAtStep(n),f=a.getRootNode();if(d){var l=a.getDOMDocument(),B=l.createElementNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0","table:table"),y=l.createElementNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0","table:table-column"),D,z,t,x;m&&B.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0","table:style-name",m);p&&B.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0","table:name",p);y.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0",
+"table:number-columns-repeated",g);q&&y.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0","table:style-name",q);B.appendChild(y);for(t=0;t<b;t+=1){y=l.createElementNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0","table:table-row");for(x=0;x<g;x+=1)D=l.createElementNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0","table:table-cell"),(z=h(t,x))&&D.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:table:1.0","table:style-name",z),z=l.createElementNS("urn:oasis:names:tc:opendocument:xmlns:text:1.0",
+"text:p"),D.appendChild(z),y.appendChild(D);B.appendChild(y)}d=e.getParagraphElement(d.textNode);f.insertBefore(B,d.nextSibling);a.emit(ops.OdtDocument.signalStepsInserted,{position:n});a.getOdfCanvas().refreshSize();a.emit(ops.OdtDocument.signalTableAdded,{tableElement:B,memberId:k,timeStamp:c});a.getOdfCanvas().rerenderAnnotations();return!0}return!1};this.spec=function(){return{optype:"InsertTable",memberid:k,timestamp:c,position:n,initialRows:b,initialColumns:g,tableName:p,tableStyleName:m,tableColumnStyleName:q,
+tableCellStyleMatrix:f}}};ops.OpInsertText=function(){function h(b){return"\t"!==b&&p.isODFWhitespace(b)}var k,c,b,g,n,p=odf.OdfUtils;this.init=function(h){k=h.memberid;c=h.timestamp;b=h.position;n=h.text;g="true"===h.moveCursor||!0===h.moveCursor};this.isEdit=!0;this.group=void 0;this.execute=function(m){var q,f,e,a=null,d=m.getDOMDocument(),r,l=0,B,y=m.getCursor(k),D;m.upgradeWhitespacesAtPosition(b);if(q=m.getTextNodeAtStep(b)){f=q.textNode;a=f.nextSibling;e=f.parentNode;r=p.getParagraphElement(f);for(D=0;D<n.length;D+=
+1){if(!(B="\t"===n[D])){B=n;var z=D;B=h(B[z])&&(0===z||z===B.length-1||h(B[z-1]))}B&&(0===l?(q.offset!==f.length&&(a=f.splitText(q.offset)),0<D&&f.appendData(n.substring(0,D))):l<D&&(l=n.substring(l,D),e.insertBefore(d.createTextNode(l),a)),l=D+1,"\t"===n[D]?(B=d.createElementNS("urn:oasis:names:tc:opendocument:xmlns:text:1.0","text:tab"),B.appendChild(d.createTextNode("\t"))):(" "!==n[D]&&runtime.log("WARN: InsertText operation contains non-tab, non-space whitespace character (character code "+n.charCodeAt(D)+
+")"),B=d.createElementNS("urn:oasis:names:tc:opendocument:xmlns:text:1.0","text:s"),B.appendChild(d.createTextNode(" "))),e.insertBefore(B,a))}0===l?f.insertData(q.offset,n):l<n.length&&(q=n.substring(l),e.insertBefore(d.createTextNode(q),a));e=f.parentNode;a=f.nextSibling;e.removeChild(f);e.insertBefore(f,a);0===f.length&&f.parentNode.removeChild(f);m.emit(ops.OdtDocument.signalStepsInserted,{position:b});y&&g&&(m.moveCursor(k,b+n.length,0),m.emit(ops.Document.signalCursorMoved,y));m.downgradeWhitespacesAtPosition(b);
+m.downgradeWhitespacesAtPosition(b+n.length);m.getOdfCanvas().refreshSize();m.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:r,memberId:k,timeStamp:c});m.getOdfCanvas().rerenderAnnotations();return!0}return!1};this.spec=function(){return{optype:"InsertText",memberid:k,timestamp:c,position:b,text:n,moveCursor:g}}};odf.CollapsingRules=function(h){function k(c){return b.isODFNode(c)||"br"===c.localName&&b.isLineBreak(c.parentNode)||c.nodeType===Node.TEXT_NODE&&b.isODFNode(c.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}function c(n){var p;n.nodeType===Node.TEXT_NODE?(p=n.parentNode,p.removeChild(n)):p=g.removeUnwantedNodes(n,k);if(n=p)n=p,n=!b.isParagraph(n)&&n!==h&&b.hasNoODFContent(n);return n?c(p):p}var b=odf.OdfUtils,g=core.DomUtils;this.mergeChildrenIntoParent=c};ops.OpMergeParagraph=function(){function h(a){return odf.OdfUtils.isInlineRoot(a)?NodeFilter.FILTER_SKIP:e.isGroupingElement(a)&&e.hasNoODFContent(a)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}function k(a){if(a.nodeType===Node.TEXT_NODE){if(0===a.length)return runtime.log("WARN: Empty text node found during merge operation"),!0;if(e.isODFWhitespace(a.data)&&!1===e.isSignificantWhitespace(a,0))return!0;a="#text"}else a=(a.prefix?a.prefix+":":"")+a.localName;runtime.log("WARN: Unexpected text element found near paragraph boundary ["+
+a+"]");return!1}function c(b){b.collapsed||(a.splitBoundaries(b),b=e.getTextElements(b,!1,!0).filter(k),b.forEach(function(a){a.parentNode.removeChild(a)}))}function b(a,b,d){a=a.convertCursorStepToDomPoint(b);var c=e.getParagraphElement(a.node,a.offset);runtime.assert(Boolean(c),"Paragraph not found at step "+b);d&&d.setPosition(a.node,a.offset);return c}var g,n,p,m,q,f,e=odf.OdfUtils,a=core.DomUtils,d=odf.Namespaces.textns;this.init=function(a){g=a.memberid;n=a.timestamp;p=a.moveCursor;m=a.paragraphStyleName;
+q=parseInt(a.sourceStartPosition,10);f=parseInt(a.destinationStartPosition,10)};this.isEdit=!0;this.group=void 0;this.execute=function(e){var l,k,y=e.getCursor(g);l=e.getRootNode();var D=new odf.CollapsingRules(l),z=e.createStepIterator(l,0,[e.getPositionFilter()],l),t;runtime.assert(f<q,"Destination paragraph ("+f+") must be before source paragraph ("+q+")");k=b(e,f);l=b(e,q,z);z.previousStep();runtime.assert(a.containsNode(k,z.container()),"Destination paragraph must be adjacent to the source paragraph");
+t=k.ownerDocument.createRange();z.setPosition(k,k.childNodes.length);z.roundToPreviousStep();t.setStart(z.container(),z.offset());t.setEnd(k,k.childNodes.length);c(t);t=k.childNodes.length;var x=l.ownerDocument.createRange();z.setPosition(l,0);z.roundToNextStep();x.setStart(l,0);x.setEnd(z.container(),z.offset());c(x);for(x=l.firstChild;x;)"editinfo"===x.localName?l.removeChild(x):(k.appendChild(x),a.removeUnwantedNodes(x,h)),x=l.firstChild;runtime.assert(0===l.childNodes.length,"Source paragraph should be empty before it is removed");
+D.mergeChildrenIntoParent(l);e.emit(ops.OdtDocument.signalStepsRemoved,{position:q-1});z.setPosition(k,t);z.roundToClosestStep();z.previousStep()||z.roundToNextStep();e.downgradeWhitespaces(z);m?k.setAttributeNS(d,"text:style-name",m):k.removeAttributeNS(d,"style-name");y&&p&&(e.moveCursor(g,q-1,0),e.emit(ops.Document.signalCursorMoved,y));e.fixCursorPositions();e.getOdfCanvas().refreshSize();e.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:k,memberId:g,timeStamp:n});e.getOdfCanvas().rerenderAnnotations();
+return!0};this.spec=function(){return{optype:"MergeParagraph",memberid:g,timestamp:n,moveCursor:p,paragraphStyleName:m,sourceStartPosition:q,destinationStartPosition:f}}};ops.OpMoveCursor=function(){var h,k,c,b,g;this.init=function(n){h=n.memberid;k=n.timestamp;c=n.position;b=n.length||0;g=n.selectionType||ops.OdtCursor.RangeSelection};this.isEdit=!1;this.group=void 0;this.execute=function(n){var k=n.getCursor(h),m;if(!k)return!1;m=n.convertCursorToDomRange(c,b);k.setSelectedRange(m,0<=b);k.setSelectionType(g);n.emit(ops.Document.signalCursorMoved,k);return!0};this.spec=function(){return{optype:"MoveCursor",memberid:h,timestamp:k,position:c,length:b,selectionType:g}}};ops.OpRemoveAnnotation=function(){var h,k,c,b,g=core.DomUtils;this.init=function(g){h=g.memberid;k=g.timestamp;c=parseInt(g.position,10);b=parseInt(g.length,10)};this.isEdit=!0;this.group=void 0;this.execute=function(b){function h(b){k.parentNode.insertBefore(b,k)}for(var m=b.getIteratorAtPosition(c).container(),k;m.namespaceURI!==odf.Namespaces.officens||"annotation"!==m.localName;)m=m.parentNode;if(null===m)return!1;k=m;m=k.annotationEndElement;b.getOdfCanvas().forgetAnnotation(k);g.getElementsByTagNameNS(k,
+"urn:webodf:names:cursor","cursor").forEach(h);g.getElementsByTagNameNS(k,"urn:webodf:names:cursor","anchor").forEach(h);k.parentNode.removeChild(k);m&&m.parentNode.removeChild(m);b.emit(ops.OdtDocument.signalStepsRemoved,{position:0<c?c-1:c});b.getOdfCanvas().rerenderAnnotations();b.fixCursorPositions();return!0};this.spec=function(){return{optype:"RemoveAnnotation",memberid:h,timestamp:k,position:c,length:b}}};ops.OpRemoveBlob=function(){var h,k,c;this.init=function(b){h=b.memberid;k=b.timestamp;c=b.filename};this.isEdit=!0;this.group=void 0;this.execute=function(b){b.getOdfCanvas().odfContainer().removeBlob(c);return!0};this.spec=function(){return{optype:"RemoveBlob",memberid:h,timestamp:k,filename:c}}};ops.OpRemoveCursor=function(){var h,k;this.init=function(c){h=c.memberid;k=c.timestamp};this.isEdit=!1;this.group=void 0;this.execute=function(c){return c.removeCursor(h)?!0:!1};this.spec=function(){return{optype:"RemoveCursor",memberid:h,timestamp:k}}};ops.OpRemoveHyperlink=function(){var h,k,c,b,g=core.DomUtils,n=odf.OdfUtils;this.init=function(g){h=g.memberid;k=g.timestamp;c=g.position;b=g.length};this.isEdit=!0;this.group=void 0;this.execute=function(p){var m=p.convertCursorToDomRange(c,b),q=n.getHyperlinkElements(m);runtime.assert(1===q.length,"The given range should only contain a single link.");q=g.mergeIntoParent(q[0]);m.detach();p.fixCursorPositions();p.getOdfCanvas().refreshSize();p.getOdfCanvas().rerenderAnnotations();p.emit(ops.OdtDocument.signalParagraphChanged,
+{paragraphElement:n.getParagraphElement(q),memberId:h,timeStamp:k});return!0};this.spec=function(){return{optype:"RemoveHyperlink",memberid:h,timestamp:k,position:c,length:b}}};ops.OpRemoveMember=function(){var h,k;this.init=function(c){h=c.memberid;k=parseInt(c.timestamp,10)};this.isEdit=!1;this.group=void 0;this.execute=function(c){if(!c.getMember(h))return!1;c.removeMember(h);c.emit(ops.Document.signalMemberRemoved,h);return!0};this.spec=function(){return{optype:"RemoveMember",memberid:h,timestamp:k}}};ops.OpRemoveStyle=function(){var h,k,c,b;this.init=function(g){h=g.memberid;k=g.timestamp;c=g.styleName;b=g.styleFamily};this.isEdit=!0;this.group=void 0;this.execute=function(g){var h=g.getFormatting().getStyleElement(c,b);if(!h)return!1;h.parentNode.removeChild(h);g.getOdfCanvas().refreshCSS();g.emit(ops.OdtDocument.signalCommonStyleDeleted,{name:c,family:b});return!0};this.spec=function(){return{optype:"RemoveStyle",memberid:h,timestamp:k,styleName:c,styleFamily:b}}};ops.OpRemoveText=function(){var h,k,c,b,g=odf.OdfUtils,n=core.DomUtils;this.init=function(g){runtime.assert(0<=g.length,"OpRemoveText only supports positive lengths");h=g.memberid;k=g.timestamp;c=parseInt(g.position,10);b=parseInt(g.length,10)};this.isEdit=!0;this.group=void 0;this.execute=function(p){var m,q,f,e=p.getCursor(h),a=new odf.CollapsingRules(p.getRootNode());p.upgradeWhitespacesAtPosition(c);p.upgradeWhitespacesAtPosition(c+b);m=p.convertCursorToDomRange(c,b);n.splitBoundaries(m);q=g.getTextElements(m,
+!1,!0);f=g.getParagraphElement(m.startContainer,m.startOffset);runtime.assert(void 0!==f,"Attempting to remove text outside a paragraph element");m.detach();q.forEach(function(b){b.parentNode?(runtime.assert(n.containsNode(f,b),"RemoveText only supports removing elements within the same paragraph"),a.mergeChildrenIntoParent(b)):runtime.log("WARN: text element has already been removed from it's container")});p.emit(ops.OdtDocument.signalStepsRemoved,{position:c});p.downgradeWhitespacesAtPosition(c);
+p.fixCursorPositions();p.getOdfCanvas().refreshSize();p.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:f,memberId:h,timeStamp:k});e&&(e.resetSelectionType(),p.emit(ops.Document.signalCursorMoved,e));p.getOdfCanvas().rerenderAnnotations();return!0};this.spec=function(){return{optype:"RemoveText",memberid:h,timestamp:k,position:c,length:b}}};ops.OpSetBlob=function(){var h,k,c,b,g;this.init=function(n){h=n.memberid;k=n.timestamp;c=n.filename;b=n.mimetype;g=n.content};this.isEdit=!0;this.group=void 0;this.execute=function(h){h.getOdfCanvas().odfContainer().setBlob(c,b,g);return!0};this.spec=function(){return{optype:"SetBlob",memberid:h,timestamp:k,filename:c,mimetype:b,content:g}}};ops.OpSetParagraphStyle=function(){function h(b,c,g){var f=[b.getPositionFilter()],e=g.container();g=g.unfilteredDomOffset();return!1===b.createStepIterator(e,g,f,c).previousStep()}var k,c,b,g,n=odf.OdfUtils;this.init=function(h){k=h.memberid;c=h.timestamp;b=h.position;g=h.styleName};this.isEdit=!0;this.group=void 0;this.execute=function(p){var m,q;m=p.getIteratorAtPosition(b);return(q=n.getParagraphElement(m.container()))?(runtime.assert(h(p,q,m),"SetParagraphStyle position should be the first position in the paragraph"),
+g?q.setAttributeNS("urn:oasis:names:tc:opendocument:xmlns:text:1.0","text:style-name",g):q.removeAttributeNS("urn:oasis:names:tc:opendocument:xmlns:text:1.0","style-name"),p.getOdfCanvas().refreshSize(),p.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:q,timeStamp:c,memberId:k}),p.getOdfCanvas().rerenderAnnotations(),!0):!1};this.spec=function(){return{optype:"SetParagraphStyle",memberid:k,timestamp:c,position:b,styleName:g}}};ops.OpSplitParagraph=function(){var h,k,c,b,g,n,p=odf.OdfUtils,m=odf.Namespaces.textns;this.init=function(m){h=m.memberid;k=m.timestamp;b=m.position;c=m.sourceParagraphPosition;n=m.paragraphStyleName;g="true"===m.moveCursor||!0===m.moveCursor};this.isEdit=!0;this.group=void 0;this.execute=function(c){var f,e,a,d,r,l,B,y=c.getCursor(h);c.upgradeWhitespacesAtPosition(b);f=c.getTextNodeAtStep(b);if(!f)return!1;e=p.getParagraphElement(f.textNode);if(!e)return!1;a=p.isListItem(e.parentNode)?e.parentNode:
+e;0===f.offset?(B=f.textNode.previousSibling,l=null):(B=f.textNode,l=f.offset>=f.textNode.length?null:f.textNode.splitText(f.offset));for(d=f.textNode;d!==a;){d=d.parentNode;r=d.cloneNode(!1);l&&r.appendChild(l);if(B)for(;B&&B.nextSibling;)r.appendChild(B.nextSibling);else for(;d.firstChild;)r.appendChild(d.firstChild);d.parentNode.insertBefore(r,d.nextSibling);B=d;l=r}p.isListItem(l)&&(l=l.childNodes.item(0));n?l.setAttributeNS(m,"text:style-name",n):l.removeAttributeNS(m,"style-name");0===f.textNode.length&&
+f.textNode.parentNode.removeChild(f.textNode);c.emit(ops.OdtDocument.signalStepsInserted,{position:b});y&&g&&(c.moveCursor(h,b+1,0),c.emit(ops.Document.signalCursorMoved,y));c.fixCursorPositions();c.getOdfCanvas().refreshSize();c.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:e,memberId:h,timeStamp:k});c.emit(ops.OdtDocument.signalParagraphChanged,{paragraphElement:l,memberId:h,timeStamp:k});c.getOdfCanvas().rerenderAnnotations();return!0};this.spec=function(){return{optype:"SplitParagraph",
+memberid:h,timestamp:k,position:b,sourceParagraphPosition:c,paragraphStyleName:n,moveCursor:g}}};ops.OpUpdateMember=function(){function h(c){var g="//dc:creator[@editinfo:memberid='"+k+"']";c=xmldom.XPath.getODFElementsWithXPath(c.getRootNode(),g,function(b){return"editinfo"===b?"urn:webodf:names:editinfo":odf.Namespaces.lookupNamespaceURI(b)});for(g=0;g<c.length;g+=1)c[g].textContent=b.fullName}var k,c,b,g;this.init=function(h){k=h.memberid;c=parseInt(h.timestamp,10);b=h.setProperties;g=h.removedProperties};this.isEdit=!1;this.group=void 0;this.execute=function(c){var p=c.getMember(k);if(!p)return!1;
+g&&p.removeProperties(g);b&&(p.setProperties(b),b.fullName&&h(c));c.emit(ops.Document.signalMemberUpdated,p);return!0};this.spec=function(){return{optype:"UpdateMember",memberid:k,timestamp:c,setProperties:b,removedProperties:g}}};ops.OpUpdateMetadata=function(){var h,k,c,b;this.init=function(g){h=g.memberid;k=parseInt(g.timestamp,10);c=g.setProperties;b=g.removedProperties};this.isEdit=!0;this.group=void 0;this.execute=function(g){var h=g.getOdfCanvas().odfContainer(),k=null;b&&(k=b.attributes.split(","));h.setMetadata(c,k);g.emit(ops.OdtDocument.signalMetadataUpdated,{setProperties:null!==c?c:{},removedProperties:null!==k?k:[]});return!0};this.spec=function(){return{optype:"UpdateMetadata",memberid:h,timestamp:k,setProperties:c,
+removedProperties:b}}};ops.OpUpdateParagraphStyle=function(){function h(b,c){var f,e,a=c?c.split(","):[];for(f=0;f<a.length;f+=1)e=a[f].split(":"),b.removeAttributeNS(odf.Namespaces.lookupNamespaceURI(e[0]),e[1])}var k,c,b,g,n,p=odf.Namespaces.stylens;this.init=function(h){k=h.memberid;c=h.timestamp;b=h.styleName;g=h.setProperties;n=h.removedProperties};this.isEdit=!0;this.group=void 0;this.execute=function(c){var k=c.getFormatting(),f,e,a;return(f=""!==b?k.getStyleElement(b,"paragraph"):k.getDefaultStyleElement("paragraph"))?
+(e=f.getElementsByTagNameNS(p,"paragraph-properties").item(0),a=f.getElementsByTagNameNS(p,"text-properties").item(0),g&&k.updateStyle(f,g),n&&(k=n["style:paragraph-properties"],e&&k&&(h(e,k.attributes),0===e.attributes.length&&f.removeChild(e)),k=n["style:text-properties"],a&&k&&(h(a,k.attributes),0===a.attributes.length&&f.removeChild(a)),h(f,n.attributes)),c.getOdfCanvas().refreshCSS(),c.emit(ops.OdtDocument.signalParagraphStyleModified,b),c.getOdfCanvas().rerenderAnnotations(),!0):!1};this.spec=
+function(){return{optype:"UpdateParagraphStyle",memberid:k,timestamp:c,styleName:b,setProperties:g,removedProperties:n}}};ops.OperationFactory=function(){function h(c){return function(b){return new c}}var k;this.register=function(c,b){k[c]=b};this.create=function(c){var b=null,g=k[c.optype];g&&(b=g(c),b.init(c));return b};k={AddMember:h(ops.OpAddMember),UpdateMember:h(ops.OpUpdateMember),RemoveMember:h(ops.OpRemoveMember),AddCursor:h(ops.OpAddCursor),ApplyDirectStyling:h(ops.OpApplyDirectStyling),SetBlob:h(ops.OpSetBlob),RemoveBlob:h(ops.OpRemoveBlob),InsertImage:h(ops.OpInsertImage),InsertTable:h(ops.OpInsertTable),
+InsertText:h(ops.OpInsertText),RemoveText:h(ops.OpRemoveText),MergeParagraph:h(ops.OpMergeParagraph),SplitParagraph:h(ops.OpSplitParagraph),SetParagraphStyle:h(ops.OpSetParagraphStyle),UpdateParagraphStyle:h(ops.OpUpdateParagraphStyle),AddStyle:h(ops.OpAddStyle),RemoveStyle:h(ops.OpRemoveStyle),MoveCursor:h(ops.OpMoveCursor),RemoveCursor:h(ops.OpRemoveCursor),AddAnnotation:h(ops.OpAddAnnotation),RemoveAnnotation:h(ops.OpRemoveAnnotation),UpdateMetadata:h(ops.OpUpdateMetadata),ApplyHyperlink:h(ops.OpApplyHyperlink),
+RemoveHyperlink:h(ops.OpRemoveHyperlink)}};ops.OperationRouter=function(){};ops.OperationRouter.prototype.setOperationFactory=function(h){};ops.OperationRouter.prototype.setPlaybackFunction=function(h){};ops.OperationRouter.prototype.push=function(h){};ops.OperationRouter.prototype.close=function(h){};ops.OperationRouter.prototype.subscribe=function(h,k){};ops.OperationRouter.prototype.unsubscribe=function(h,k){};ops.OperationRouter.prototype.hasLocalUnsyncedOps=function(){};ops.OperationRouter.prototype.hasSessionHostConnection=function(){};
+ops.OperationRouter.signalProcessingBatchStart="router/batchstart";ops.OperationRouter.signalProcessingBatchEnd="router/batchend";ops.TrivialOperationRouter=function(){var h=new core.EventNotifier([ops.OperationRouter.signalProcessingBatchStart,ops.OperationRouter.signalProcessingBatchEnd]),k,c,b=0;this.setOperationFactory=function(b){k=b};this.setPlaybackFunction=function(b){c=b};this.push=function(g){b+=1;h.emit(ops.OperationRouter.signalProcessingBatchStart,{});g.forEach(function(g){g=g.spec();g.timestamp=Date.now();g=k.create(g);g.group="g"+b;c(g)});h.emit(ops.OperationRouter.signalProcessingBatchEnd,{})};this.close=function(b){b()};
+this.subscribe=function(b,c){h.subscribe(b,c)};this.unsubscribe=function(b,c){h.unsubscribe(b,c)};this.hasLocalUnsyncedOps=function(){return!1};this.hasSessionHostConnection=function(){return!0}};ops.Session=function(h){function k(b){g.emit(ops.OdtDocument.signalProcessingBatchStart,b)}function c(b){g.emit(ops.OdtDocument.signalProcessingBatchEnd,b)}var b=new ops.OperationFactory,g=new ops.OdtDocument(h),n=null;this.setOperationFactory=function(c){b=c;n&&n.setOperationFactory(b)};this.setOperationRouter=function(h){n&&(n.unsubscribe(ops.OperationRouter.signalProcessingBatchStart,k),n.unsubscribe(ops.OperationRouter.signalProcessingBatchEnd,c));n=h;n.subscribe(ops.OperationRouter.signalProcessingBatchStart,
+k);n.subscribe(ops.OperationRouter.signalProcessingBatchEnd,c);h.setPlaybackFunction(function(b){g.emit(ops.OdtDocument.signalOperationStart,b);return b.execute(g)?(g.emit(ops.OdtDocument.signalOperationEnd,b),!0):!1});h.setOperationFactory(b)};this.getOperationFactory=function(){return b};this.getOdtDocument=function(){return g};this.enqueue=function(b){n.push(b)};this.close=function(b){n.close(function(c){c?b(c):g.close(b)})};this.destroy=function(b){g.destroy(b)};this.setOperationRouter(new ops.TrivialOperationRouter)};gui.AnnotationController=function(h,k,c){function b(){var a=m.getCursor(c),a=a&&a.getNode(),b=!1;a&&(b=!e.isWithinAnnotation(a,m.getRootNode()));b!==q&&(q=b,f.emit(gui.AnnotationController.annotatableChanged,q))}function g(a){a.getMemberId()===c&&b()}function n(a){a===c&&b()}function p(a){a.getMemberId()===c&&b()}var m=h.getOdtDocument(),q=!1,f=new core.EventNotifier([gui.AnnotationController.annotatableChanged]),e=odf.OdfUtils,a=core.StepDirection.NEXT;this.isAnnotatable=function(){return q};this.addAnnotation=
+function(){var a=new ops.OpAddAnnotation,b=m.getCursorSelection(c),e=b.length,b=b.position;q&&(0===e?e=void 0:(b=0<=e?b:b+e,e=Math.abs(e)),a.init({memberid:c,position:b,length:e,name:c+Date.now()}),h.enqueue([a]))};this.removeAnnotation=function(b){var f,g;f=m.getMember(c).getProperties().fullName;if(!0!==k.getState(gui.CommonConstraints.EDIT.ANNOTATIONS.ONLY_DELETE_OWN)||f===e.getAnnotationCreator(b))f=m.convertDomPointToCursorStep(b,0,a),g=m.convertDomPointToCursorStep(b,b.childNodes.length),b=
+new ops.OpRemoveAnnotation,b.init({memberid:c,position:f,length:g-f}),g=new ops.OpMoveCursor,g.init({memberid:c,position:0<f?f-1:f,length:0}),h.enqueue([b,g])};this.subscribe=function(a,b){f.subscribe(a,b)};this.unsubscribe=function(a,b){f.unsubscribe(a,b)};this.destroy=function(a){m.unsubscribe(ops.Document.signalCursorAdded,g);m.unsubscribe(ops.Document.signalCursorRemoved,n);m.unsubscribe(ops.Document.signalCursorMoved,p);a()};k.registerConstraint(gui.CommonConstraints.EDIT.ANNOTATIONS.ONLY_DELETE_OWN);
+m.subscribe(ops.Document.signalCursorAdded,g);m.subscribe(ops.Document.signalCursorRemoved,n);m.subscribe(ops.Document.signalCursorMoved,p);b()};gui.AnnotationController.annotatableChanged="annotatable/changed";gui.Avatar=function(h,k){var c=this,b,g,n;this.setColor=function(b){g.style.borderColor=b};this.setImageUrl=function(b){c.isVisible()?g.src=b:n=b};this.isVisible=function(){return"block"===b.style.display};this.show=function(){n&&(g.src=n,n=void 0);b.style.display="block"};this.hide=function(){b.style.display="none"};this.markAsFocussed=function(c){c?b.classList.add("active"):b.classList.remove("active")};this.destroy=function(c){h.removeChild(b);c()};(function(){var c=h.ownerDocument;b=c.createElement("div");
+g=c.createElement("img");b.appendChild(g);b.style.display=k?"block":"none";b.className="handle";h.appendChild(b)})()};gui.StepInfo=function(){};gui.StepInfo.VisualDirection={LEFT_TO_RIGHT:0,RIGHT_TO_LEFT:1};gui.StepInfo.prototype.container=function(){};gui.StepInfo.prototype.offset=function(){};gui.VisualStepScanner=function(){};gui.VisualStepScanner.prototype.process=function(h,k,c){};gui.GuiStepUtils=function(){function h(g){g=c.getContentBounds(g);var h,f=null;if(g)if(g.container.nodeType===Node.TEXT_NODE)h=g.container.ownerDocument.createRange(),h.setStart(g.container,g.startOffset),h.setEnd(g.container,g.endOffset),(f=0<h.getClientRects().length?h.getBoundingClientRect():null)&&" "===g.container.data.substring(g.startOffset,g.endOffset)&&1>=f.width&&(f=null),h.detach();else if(k.isCharacterElement(g.container)||k.isCharacterFrame(g.container))f=b.getBoundingClientRect(g.container);
+return f}var k=odf.OdfUtils,c=new odf.StepUtils,b=core.DomUtils,g=core.StepDirection.NEXT,n=gui.StepInfo.VisualDirection.LEFT_TO_RIGHT,p=gui.StepInfo.VisualDirection.RIGHT_TO_LEFT;this.getContentRect=h;this.moveToFilteredStep=function(b,c,f){function e(a,b){b.process(z,l,B)&&(a=!0,!y&&b.token&&(y=b.token));return a}var a=c===g,d,k,l,B,y,D=b.snapshot();d=!1;var z;do d=h(b),z={token:b.snapshot(),container:b.container,offset:b.offset,direction:c,visualDirection:c===g?n:p},k=b.nextStep()?h(b):null,b.restore(z.token),
+a?(l=d,B=k):(l=k,B=d),d=f.reduce(e,!1);while(!d&&b.advanceStep(c));d||f.forEach(function(a){!y&&a.token&&(y=a.token)});b.restore(y||D);return Boolean(y)}};gui.Caret=function(h,k,c,b){function g(){a.style.opacity="0"===a.style.opacity?"1":"0";w.trigger()}function n(){B.selectNodeContents(l);return B.getBoundingClientRect()}function p(a){return A[a]!==G[a]}function m(){Object.keys(G).forEach(function(a){A[a]=G[a]})}function q(){if(!1===G.isShown||h.getSelectionType()!==ops.OdtCursor.RangeSelection||!b&&!h.getSelectedRange().collapsed)G.visibility="hidden",a.style.visibility="hidden",w.cancel();else if(G.visibility="visible",a.style.visibility="visible",
+!1===G.isFocused)a.style.opacity="1",w.cancel();else{if(F||p("visibility"))a.style.opacity="1",w.cancel();w.trigger()}if(H||L){var c;c=h.getNode();var f,g,l=D.getBoundingClientRect(y.getSizer()),q=!1,B=0;c.removeAttributeNS("urn:webodf:names:cursor","caret-sizer-active");if(0<c.getClientRects().length)g=n(),B=g.left-D.getBoundingClientRect(c).left,q=!0;else if(t.setPosition(c,0),g=z.getContentRect(t),!g&&t.nextStep()&&(f=z.getContentRect(t))&&(g=f,q=!0),g||(c.setAttributeNS("urn:webodf:names:cursor",
+"caret-sizer-active","true"),g=n(),q=!0),!g)for(runtime.log("WARN: No suitable client rectangle found for visual caret for "+h.getMemberId());c;){if(0<c.getClientRects().length){g=D.getBoundingClientRect(c);q=!0;break}c=c.parentNode}g=D.translateRect(g,l,y.getZoomLevel());c={top:g.top,height:g.height,right:q?g.left:g.right,width:D.adaptRangeDifferenceToZoomLevel(B,y.getZoomLevel())};8>c.height&&(c={top:c.top-(8-c.height)/2,height:8,right:c.right});e.style.height=c.height+"px";e.style.top=c.top+"px";
+e.style.left=c.right-c.width+"px";e.style.width=c.width?c.width+"px":"";r&&(c=runtime.getWindow().getComputedStyle(h.getNode(),null),c.font?r.style.font=c.font:(r.style.fontStyle=c.fontStyle,r.style.fontVariant=c.fontVariant,r.style.fontWeight=c.fontWeight,r.style.fontSize=c.fontSize,r.style.lineHeight=c.lineHeight,r.style.fontFamily=c.fontFamily))}G.isShown&&L&&k.scrollIntoView(a.getBoundingClientRect());p("isFocused")&&d.markAsFocussed(G.isFocused);m();H=L=F=!1}function f(a){e.parentNode.removeChild(e);
+l.parentNode.removeChild(l);a()}var e,a,d,r,l,B,y=h.getDocument().getCanvas(),D=core.DomUtils,z=new gui.GuiStepUtils,t,x,w,F=!1,L=!1,H=!1,G={isFocused:!1,isShown:!0,visibility:"hidden"},A={isFocused:!G.isFocused,isShown:!G.isShown,visibility:"hidden"};this.handleUpdate=function(){H=!0;x.trigger()};this.refreshCursorBlinking=function(){F=!0;x.trigger()};this.setFocus=function(){G.isFocused=!0;x.trigger()};this.removeFocus=function(){G.isFocused=!1;x.trigger()};this.show=function(){G.isShown=!0;x.trigger()};
+this.hide=function(){G.isShown=!1;x.trigger()};this.setAvatarImageUrl=function(a){d.setImageUrl(a)};this.setColor=function(b){a.style.borderColor=b;d.setColor(b)};this.getCursor=function(){return h};this.getFocusElement=function(){return a};this.toggleHandleVisibility=function(){d.isVisible()?d.hide():d.show()};this.showHandle=function(){d.show()};this.hideHandle=function(){d.hide()};this.setOverlayElement=function(a){r=a;e.appendChild(a);H=!0;x.trigger()};this.ensureVisible=function(){L=!0;x.trigger()};
+this.getBoundingClientRect=function(){return D.getBoundingClientRect(e)};this.destroy=function(a){core.Async.destroyAll([x.destroy,w.destroy,d.destroy,f],a)};(function(){var b=h.getDocument(),f=[b.createRootFilter(h.getMemberId()),b.getPositionFilter()],k=b.getDOMDocument();B=k.createRange();l=k.createElement("span");l.className="webodf-caretSizer";l.textContent="|";h.getNode().appendChild(l);e=k.createElement("div");e.setAttributeNS("urn:webodf:names:editinfo","editinfo:memberid",h.getMemberId());
+e.className="webodf-caretOverlay";a=k.createElement("div");a.className="caret";e.appendChild(a);d=new gui.Avatar(e,c);y.getSizer().appendChild(e);t=b.createStepIterator(h.getNode(),0,f,b.getRootNode());x=core.Task.createRedrawTask(q);w=core.Task.createTimeoutTask(g,500);x.triggerImmediate()})()};odf.TextSerializer=function(){function h(b){var g="",n=k.filter?k.filter.acceptNode(b):NodeFilter.FILTER_ACCEPT,p=b.nodeType,m;if((n===NodeFilter.FILTER_ACCEPT||n===NodeFilter.FILTER_SKIP)&&c.isTextContentContainingNode(b))for(m=b.firstChild;m;)g+=h(m),m=m.nextSibling;n===NodeFilter.FILTER_ACCEPT&&(p===Node.ELEMENT_NODE&&c.isParagraph(b)?g+="\n":p===Node.TEXT_NODE&&b.textContent&&(g+=b.textContent));return g}var k=this,c=odf.OdfUtils;this.filter=null;this.writeToString=function(b){if(!b)return"";
+b=h(b);"\n"===b[b.length-1]&&(b=b.substr(0,b.length-1));return b}};gui.MimeDataExporter=function(){var h;this.exportRangeToDataTransfer=function(k,c){var b;b=c.startContainer.ownerDocument.createElement("span");b.appendChild(c.cloneContents());b=h.writeToString(b);try{k.setData("text/plain",b)}catch(g){k.setData("Text",b)}};h=new odf.TextSerializer;h.filter=new odf.OdfNodeFilter};gui.Clipboard=function(h){this.setDataFromRange=function(k,c){var b,g=k.clipboardData;b=runtime.getWindow();!g&&b&&(g=b.clipboardData);g?(b=!0,h.exportRangeToDataTransfer(g,c),k.preventDefault()):b=!1;return b}};gui.SessionContext=function(h,k){var c=h.getOdtDocument(),b=odf.OdfUtils;this.isLocalCursorWithinOwnAnnotation=function(){var g=c.getCursor(k),h;if(!g)return!1;h=g&&g.getNode();g=c.getMember(k).getProperties().fullName;return(h=b.getParentAnnotation(h,c.getRootNode()))&&b.getAnnotationCreator(h)===g?!0:!1}};gui.StyleSummary=function(h){function k(b,c){var k=b+"|"+c,q;g.hasOwnProperty(k)||(q=[],h.forEach(function(f){f=(f=f.styleProperties[b])&&f[c];-1===q.indexOf(f)&&q.push(f)}),g[k]=q);return g[k]}function c(b,c,g){return function(){var h=k(b,c);return g.length>=h.length&&h.every(function(b){return-1!==g.indexOf(b)})}}function b(b,c){var g=k(b,c);return 1===g.length?g[0]:void 0}var g={};this.getPropertyValues=k;this.getCommonValue=b;this.isBold=c("style:text-properties","fo:font-weight",["bold"]);this.isItalic=
+c("style:text-properties","fo:font-style",["italic"]);this.hasUnderline=c("style:text-properties","style:text-underline-style",["solid"]);this.hasStrikeThrough=c("style:text-properties","style:text-line-through-style",["solid"]);this.fontSize=function(){var c=b("style:text-properties","fo:font-size");return c&&parseFloat(c)};this.fontName=function(){return b("style:text-properties","style:font-name")};this.isAlignedLeft=c("style:paragraph-properties","fo:text-align",["left","start"]);this.isAlignedCenter=
+c("style:paragraph-properties","fo:text-align",["center"]);this.isAlignedRight=c("style:paragraph-properties","fo:text-align",["right","end"]);this.isAlignedJustified=c("style:paragraph-properties","fo:text-align",["justify"]);this.text={isBold:this.isBold,isItalic:this.isItalic,hasUnderline:this.hasUnderline,hasStrikeThrough:this.hasStrikeThrough,fontSize:this.fontSize,fontName:this.fontName};this.paragraph={isAlignedLeft:this.isAlignedLeft,isAlignedCenter:this.isAlignedCenter,isAlignedRight:this.isAlignedRight,
+isAlignedJustified:this.isAlignedJustified}};gui.DirectFormattingController=function(h,k,c,b,g,n,p){function m(){return X.value().styleSummary}function q(){return X.value().enabledFeatures}function f(a){var b;a.collapsed?(b=a.startContainer,b.hasChildNodes()&&a.startOffset<b.childNodes.length&&(b=b.childNodes.item(a.startOffset)),a=[b]):a=T.getTextElements(a,!0,!1);return a}function e(){var a=P.getCursor(b),d=a&&a.getSelectedRange(),e=[],e=[],g=!0,h={directTextStyling:!0,directParagraphStyling:!0};d&&(e=f(d),0===e.length&&(e=[d.startContainer,
+d.endContainer],g=!1),e=P.getFormatting().getAppliedStyles(e));void 0!==e[0]&&Z&&(e[0].styleProperties=U.mergeObjects(e[0].styleProperties,Z));!0===k.getState(gui.CommonConstraints.EDIT.REVIEW_MODE)&&(h.directTextStyling=h.directParagraphStyling=c.isLocalCursorWithinOwnAnnotation());h.directTextStyling&&(h.directTextStyling=g&&void 0!==a&&a.getSelectionType()===ops.OdtCursor.RangeSelection);return{enabledFeatures:h,appliedStyles:e,styleSummary:new gui.StyleSummary(e)}}function a(a,b){var d={};Object.keys(a).forEach(function(c){var e=
+a[c](),f=b[c]();e!==f&&(d[c]=f)});return d}function d(){var b,d;d=da.styleSummary;var c=X.value(),e=c.styleSummary,f=da.enabledFeatures,g=c.enabledFeatures;b=a(d.text,e.text);d=a(d.paragraph,e.paragraph);f=!(g.directTextStyling===f.directTextStyling&&g.directParagraphStyling===f.directParagraphStyling);da=c;f&&ca.emit(gui.DirectFormattingController.enabledChanged,g);0<Object.keys(b).length&&ca.emit(gui.DirectFormattingController.textStylingChanged,b);0<Object.keys(d).length&&ca.emit(gui.DirectFormattingController.paragraphStylingChanged,
+d)}function r(){X.reset();d()}function l(a){("string"===typeof a?a:a.getMemberId())===b&&X.reset()}function B(){X.reset()}function y(a){var d=P.getCursor(b);a=a.paragraphElement;d&&T.getParagraphElement(d.getNode())===a&&X.reset()}function D(a,b){b(!a());return!0}function z(a){if(q().directTextStyling){var d=P.getCursorSelection(b),c={"style:text-properties":a};0!==d.length?(a=new ops.OpApplyDirectStyling,a.init({memberid:b,position:d.position,length:d.length,setProperties:c}),h.enqueue([a])):(Z=
+U.mergeObjects(Z||{},c),X.reset())}}function t(a,b){var d={};d[a]=b;z(d)}function x(a){a=a.spec();Z&&a.memberid===b&&"SplitParagraph"!==a.optype&&(Z=null,X.reset())}function w(a){t("fo:font-weight",a?"bold":"normal")}function F(a){t("fo:font-style",a?"italic":"normal")}function L(a){t("style:text-underline-style",a?"solid":"none")}function H(a){t("style:text-line-through-style",a?"solid":"none")}function G(a){if(q().directParagraphStyling){var d=P.getCursor(b).getSelectedRange(),d=T.getParagraphElements(d),
+c=P.getFormatting(),e=[],f={},l;d.forEach(function(d){var h=P.convertDomPointToCursorStep(d,0,E),k=d.getAttributeNS(odf.Namespaces.textns,"style-name"),r;d=k?f.hasOwnProperty(k)?f[k]:void 0:l;d||(d=g.generateStyleName(),k?(f[k]=d,r=c.createDerivedStyleObject(k,"paragraph",{})):(l=d,r={}),r=a(r),k=new ops.OpAddStyle,k.init({memberid:b,styleName:d.toString(),styleFamily:"paragraph",isAutomaticStyle:!0,setProperties:r}),e.push(k));k=new ops.OpSetParagraphStyle;k.init({memberid:b,styleName:d.toString(),
+position:h});e.push(k)});h.enqueue(e)}}function A(a){G(function(b){return U.mergeObjects(b,a)})}function K(a){A({"style:paragraph-properties":{"fo:text-align":a}})}function v(a,b){var d=P.getFormatting().getDefaultTabStopDistance(),c=b["style:paragraph-properties"],e;c&&(c=c["fo:margin-left"],e=T.parseLength(c));return U.mergeObjects(b,{"style:paragraph-properties":{"fo:margin-left":e&&e.unit===d.unit?e.value+a*d.value+e.unit:a*d.value+d.unit}})}function u(a,b){var d=f(a),d=0===d.length?[a.startContainer]:
+d,d=P.getFormatting().getAppliedStyles(d),c=0<d.length?d[0].styleProperties:void 0,e=P.getFormatting().getAppliedStylesForElement(b).styleProperties;if(!c||"text"!==c["style:family"]||!c["style:text-properties"])return!1;if(!e||!e["style:text-properties"])return!0;c=c["style:text-properties"];e=e["style:text-properties"];return!Object.keys(c).every(function(a){return c[a]===e[a]})}function Q(){}function R(){return!1}function C(){return!1}var I=this,P=h.getOdtDocument(),U=new core.Utils,T=odf.OdfUtils,
+ca=new core.EventNotifier([gui.DirectFormattingController.enabledChanged,gui.DirectFormattingController.textStylingChanged,gui.DirectFormattingController.paragraphStylingChanged]),Y=odf.Namespaces.textns,E=core.StepDirection.NEXT,Z=null,da,X;this.enabledFeatures=q;this.formatTextSelection=z;this.createCursorStyleOp=function(a,d,c){var e=null,f=Z;c&&(f=(c=X.value().appliedStyles[0])&&c.styleProperties);f&&f["style:text-properties"]&&(e=new ops.OpApplyDirectStyling,e.init({memberid:b,position:a,length:d,
+setProperties:{"style:text-properties":f["style:text-properties"]}}),Z=null,X.reset());return e};this.setBold=w;this.setItalic=F;this.setHasUnderline=L;this.setHasStrikethrough=H;this.setFontSize=function(a){t("fo:font-size",a+"pt")};this.setFontName=function(a){t("style:font-name",a)};this.getAppliedStyles=function(){return X.value().appliedStyles};this.toggleBold=D.bind(I,function(){return m().isBold()},w);this.toggleItalic=D.bind(I,function(){return m().isItalic()},F);this.toggleUnderline=D.bind(I,
+function(){return m().hasUnderline()},L);this.toggleStrikethrough=D.bind(I,function(){return m().hasStrikeThrough()},H);this.isBold=function(){return m().isBold()};this.isItalic=function(){return m().isItalic()};this.hasUnderline=function(){return m().hasUnderline()};this.hasStrikeThrough=function(){return m().hasStrikeThrough()};this.fontSize=function(){return m().fontSize()};this.fontName=function(){return m().fontName()};this.isAlignedLeft=function(){return m().isAlignedLeft()};this.isAlignedCenter=
+function(){return m().isAlignedCenter()};this.isAlignedRight=function(){return m().isAlignedRight()};this.isAlignedJustified=function(){return m().isAlignedJustified()};this.alignParagraphLeft=function(){K("left");return!0};this.alignParagraphCenter=function(){K("center");return!0};this.alignParagraphRight=function(){K("right");return!0};this.alignParagraphJustified=function(){K("justify");return!0};this.indent=function(){G(v.bind(null,1));return!0};this.outdent=function(){G(v.bind(null,-1));return!0};
+this.createParagraphStyleOps=function(a){if(!q().directParagraphStyling)return[];var d=P.getCursor(b),c=d.getSelectedRange(),e=[],f,h;d.hasForwardSelection()?(f=d.getAnchorNode(),h=d.getNode()):(f=d.getNode(),h=d.getAnchorNode());d=T.getParagraphElement(h);runtime.assert(Boolean(d),"DirectFormattingController: Cursor outside paragraph");var l=d,k=[P.getPositionFilter(),P.createRootFilter(b)];if(!1!==P.createStepIterator(c.endContainer,c.endOffset,k,l).nextStep())return e;h!==f&&(d=T.getParagraphElement(f));
+if(!Z&&!u(c,d))return e;c=(c=X.value().appliedStyles[0])&&c.styleProperties;if(!c)return e;if(d=d.getAttributeNS(Y,"style-name"))c={"style:text-properties":c["style:text-properties"]},c=P.getFormatting().createDerivedStyleObject(d,"paragraph",c);f=g.generateStyleName();d=new ops.OpAddStyle;d.init({memberid:b,styleName:f,styleFamily:"paragraph",isAutomaticStyle:!0,setProperties:c});e.push(d);d=new ops.OpSetParagraphStyle;d.init({memberid:b,styleName:f,position:a});e.push(d);return e};this.subscribe=
+function(a,b){ca.subscribe(a,b)};this.unsubscribe=function(a,b){ca.unsubscribe(a,b)};this.destroy=function(a){P.unsubscribe(ops.Document.signalCursorAdded,l);P.unsubscribe(ops.Document.signalCursorRemoved,l);P.unsubscribe(ops.Document.signalCursorMoved,l);P.unsubscribe(ops.OdtDocument.signalParagraphStyleModified,B);P.unsubscribe(ops.OdtDocument.signalParagraphChanged,y);P.unsubscribe(ops.OdtDocument.signalOperationEnd,x);P.unsubscribe(ops.OdtDocument.signalProcessingBatchEnd,d);k.unsubscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,
+r);a()};(function(){P.subscribe(ops.Document.signalCursorAdded,l);P.subscribe(ops.Document.signalCursorRemoved,l);P.subscribe(ops.Document.signalCursorMoved,l);P.subscribe(ops.OdtDocument.signalParagraphStyleModified,B);P.subscribe(ops.OdtDocument.signalParagraphChanged,y);P.subscribe(ops.OdtDocument.signalOperationEnd,x);P.subscribe(ops.OdtDocument.signalProcessingBatchEnd,d);k.subscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,r);X=new core.LazyProperty(e);da=X.value();n||(I.formatTextSelection=Q,
+I.setBold=Q,I.setItalic=Q,I.setHasUnderline=Q,I.setHasStrikethrough=Q,I.setFontSize=Q,I.setFontName=Q,I.toggleBold=C,I.toggleItalic=C,I.toggleUnderline=C,I.toggleStrikethrough=C);p||(I.alignParagraphCenter=R,I.alignParagraphJustified=R,I.alignParagraphLeft=R,I.alignParagraphRight=R,I.createParagraphStyleOps=function(){return[]},I.indent=R,I.outdent=R)})()};gui.DirectFormattingController.enabledChanged="enabled/changed";gui.DirectFormattingController.textStylingChanged="textStyling/changed";
+gui.DirectFormattingController.paragraphStylingChanged="paragraphStyling/changed";gui.DirectFormattingController.SelectionInfo=function(){};gui.KeyboardHandler=function(){function h(b,c){c||(c=k.None);switch(b){case gui.KeyboardHandler.KeyCode.LeftMeta:case gui.KeyboardHandler.KeyCode.RightMeta:case gui.KeyboardHandler.KeyCode.MetaInMozilla:c|=k.Meta;break;case gui.KeyboardHandler.KeyCode.Ctrl:c|=k.Ctrl;break;case gui.KeyboardHandler.KeyCode.Alt:c|=k.Alt;break;case gui.KeyboardHandler.KeyCode.Shift:c|=k.Shift}return b+":"+c}var k=gui.KeyboardHandler.Modifier,c=null,b={};this.setDefault=function(b){c=b};this.bind=function(c,k,p,m){c=h(c,
+k);runtime.assert(m||!1===b.hasOwnProperty(c),"tried to overwrite the callback handler of key combo: "+c);b[c]=p};this.unbind=function(c,k){var p=h(c,k);delete b[p]};this.reset=function(){c=null;b={}};this.handleEvent=function(g){var n=g.keyCode,p=k.None;g.metaKey&&(p|=k.Meta);g.ctrlKey&&(p|=k.Ctrl);g.altKey&&(p|=k.Alt);g.shiftKey&&(p|=k.Shift);n=h(n,p);n=b[n];p=!1;n?p=n():null!==c&&(p=c(g));p&&(g.preventDefault?g.preventDefault():g.returnValue=!1)}};
+gui.KeyboardHandler.Modifier={None:0,Meta:1,Ctrl:2,Alt:4,CtrlAlt:6,Shift:8,MetaShift:9,CtrlShift:10,AltShift:12};gui.KeyboardHandler.KeyCode={Backspace:8,Tab:9,Clear:12,Enter:13,Shift:16,Ctrl:17,Alt:18,End:35,Home:36,Left:37,Up:38,Right:39,Down:40,Delete:46,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,LeftMeta:91,RightMeta:93,MetaInMozilla:224};gui.HyperlinkClickHandler=function(h,k,c){function b(){var a=h();runtime.assert(Boolean(a.classList),"Document container has no classList element");a.classList.remove("webodf-inactiveLinks")}function g(){var a=h();runtime.assert(Boolean(a.classList),"Document container has no classList element");a.classList.add("webodf-inactiveLinks")}function n(){a.removeEventListener("focus",g,!1);r.forEach(function(a){k.unbind(a.keyCode,a.modifier);c.unbind(a.keyCode,a.modifier)});r.length=0}function p(d){n();
+if(d!==m.None){a.addEventListener("focus",g,!1);switch(d){case m.Ctrl:r.push({keyCode:q.Ctrl,modifier:m.None});break;case m.Meta:r.push({keyCode:q.LeftMeta,modifier:m.None}),r.push({keyCode:q.RightMeta,modifier:m.None}),r.push({keyCode:q.MetaInMozilla,modifier:m.None})}r.forEach(function(a){k.bind(a.keyCode,a.modifier,b);c.bind(a.keyCode,a.modifier,g)})}}var m=gui.KeyboardHandler.Modifier,q=gui.KeyboardHandler.KeyCode,f=xmldom.XPath,e=odf.OdfUtils,a=runtime.getWindow(),d=m.None,r=[];runtime.assert(null!==
+a,"Expected to be run in an environment which has a global window, like a browser.");this.handleClick=function(b){var c=b.target||b.srcElement,g,k;b.ctrlKey?g=m.Ctrl:b.metaKey&&(g=m.Meta);if(d===m.None||d===g){a:{for(;null!==c;){if(e.isHyperlink(c))break a;if(e.isParagraph(c))break;c=c.parentNode}c=null}c&&(c=e.getHyperlinkTarget(c),""!==c&&("#"===c[0]?(c=c.substring(1),g=h(),k=f.getODFElementsWithXPath(g,"//text:bookmark-start[@text:name='"+c+"']",odf.Namespaces.lookupNamespaceURI),0===k.length&&
+(k=f.getODFElementsWithXPath(g,"//text:bookmark[@text:name='"+c+"']",odf.Namespaces.lookupNamespaceURI)),0<k.length&&k[0].scrollIntoView(!0)):/^\s*(javascript|data):/.test(c)?runtime.log("WARN:","potentially malicious URL ignored"):a.open(c),b.preventDefault?b.preventDefault():b.returnValue=!1))}};this.setModifier=function(a){d!==a&&(runtime.assert(a===m.None||a===m.Ctrl||a===m.Meta,"Unsupported KeyboardHandler.Modifier value: "+a),d=a,d!==m.None?g():b(),p(d))};this.getModifier=function(){return d};
+this.destroy=function(a){g();n();a()}};gui.EventManager=function(h){function k(a){function b(a,d,c){var e,f=!1;e="on"+d;a.attachEvent&&(a.attachEvent(e,c),f=!0);!f&&a.addEventListener&&(a.addEventListener(d,c,!1),f=!0);f&&!x[d]||!a.hasOwnProperty(e)||(a[e]=c)}function d(a,b,c){var e="on"+b;a.detachEvent&&a.detachEvent(e,c);a.removeEventListener&&a.removeEventListener(b,c,!1);a[e]===c&&(a[e]=null)}function c(b){if(-1===f.indexOf(b)){f.push(b);if(e.filters.every(function(a){return a(b)}))try{g.emit(a,b)}catch(d){runtime.log("Error occurred while processing "+
+a+":\n"+d.message+"\n"+d.stack)}runtime.setTimeout(function(){f.splice(f.indexOf(b),1)},0)}}var e=this,f=[],g=new core.EventNotifier([a]);this.filters=[];this.subscribe=function(b){g.subscribe(a,b)};this.unsubscribe=function(b){g.unsubscribe(a,b)};this.destroy=function(){d(t,a,c);d(H,a,c);d(G,a,c)};w[a]&&b(t,a,c);b(H,a,c);b(G,a,c)}function c(a,b,d){function c(b){d(b,e,function(b){b.type=a;f.emit(a,b)})}var e={},f=new core.EventNotifier([a]);this.subscribe=function(b){f.subscribe(a,b)};this.unsubscribe=
+function(b){f.unsubscribe(a,b)};this.destroy=function(){b.forEach(function(a){A.unsubscribe(a,c)})};(function(){b.forEach(function(a){A.subscribe(a,c)})})()}function b(a){runtime.clearTimeout(a);delete K[a]}function g(a,d){var c=runtime.setTimeout(function(){a();b(c)},d);K[c]=!0;return c}function n(a,d,c){var e=a.touches.length,f=a.touches[0],h=d.timer;"touchmove"===a.type||"touchend"===a.type?h&&b(h):"touchstart"===a.type&&(1!==e?runtime.clearTimeout(h):h=g(function(){c({clientX:f.clientX,clientY:f.clientY,
+pageX:f.pageX,pageY:f.pageY,target:a.target||a.srcElement||null,detail:1})},400));d.timer=h}function p(a,b,d){var c=a.touches[0],e=a.target||a.srcElement||null,f=b.target;1!==a.touches.length||"touchend"===a.type?f=null:"touchstart"===a.type&&"webodf-draggable"===e.getAttribute("class")?f=e:"touchmove"===a.type&&f&&(a.preventDefault(),a.stopPropagation(),d({clientX:c.clientX,clientY:c.clientY,pageX:c.pageX,pageY:c.pageY,target:f,detail:1}));b.target=f}function m(a,b,d){var c=a.target||a.srcElement||
+null,e=b.dragging;"drag"===a.type?e=!0:"touchend"===a.type&&e&&(e=!1,a=a.changedTouches[0],d({clientX:a.clientX,clientY:a.clientY,pageX:a.pageX,pageY:a.pageY,target:c,detail:1}));b.dragging=e}function q(){G.classList.add("webodf-touchEnabled");A.unsubscribe("touchstart",q)}function f(a){var b=a.scrollX,d=a.scrollY;this.restore=function(){a.scrollX===b&&a.scrollY===d||a.scrollTo(b,d)}}function e(a){var b=a.scrollTop,d=a.scrollLeft;this.restore=function(){if(a.scrollTop!==b||a.scrollLeft!==d)a.scrollTop=
+b,a.scrollLeft=d}}function a(a,b){var d=L[a]||F[a]||null;!d&&b&&(d=L[a]=new k(a));return d}function d(b,d){a(b,!0).subscribe(d)}function r(b,d){var c=a(b,!1);c&&c.unsubscribe(d)}function l(){return h.getDOMDocument().activeElement===H}function B(){l()&&H.blur();H.setAttribute("disabled","true")}function y(){H.removeAttribute("disabled")}function D(a){for(var b=[];a;)(a.scrollWidth>a.clientWidth||a.scrollHeight>a.clientHeight)&&b.push(new e(a)),a=a.parentNode;b.push(new f(t));return b}function z(){var a;
+l()||(a=D(H),y(),H.focus(),a.forEach(function(a){a.restore()}))}var t=runtime.getWindow(),x={beforecut:!0,beforepaste:!0,longpress:!0,drag:!0,dragstop:!0},w={mousedown:!0,mouseup:!0,focus:!0},F={},L={},H,G=h.getCanvas().getElement(),A=this,K={};this.addFilter=function(b,d){a(b,!0).filters.push(d)};this.removeFilter=function(b,d){var c=a(b,!0),e=c.filters.indexOf(d);-1!==e&&c.filters.splice(e,1)};this.subscribe=d;this.unsubscribe=r;this.hasFocus=l;this.focus=z;this.getEventTrap=function(){return H};
+this.setEditing=function(a){var b=l();b&&H.blur();a?H.removeAttribute("readOnly"):H.setAttribute("readOnly","true");b&&z()};this.destroy=function(a){r("touchstart",q);Object.keys(K).forEach(function(a){b(parseInt(a,10))});K.length=0;Object.keys(F).forEach(function(a){F[a].destroy()});F={};r("mousedown",B);r("mouseup",y);r("contextmenu",y);Object.keys(L).forEach(function(a){L[a].destroy()});L={};H.parentNode.removeChild(H);a()};(function(){var a=h.getOdfCanvas().getSizer(),b=a.ownerDocument;runtime.assert(Boolean(t),
+"EventManager requires a window object to operate correctly");H=b.createElement("textarea");H.id="eventTrap";H.setAttribute("tabindex","-1");H.setAttribute("readOnly","true");H.setAttribute("rows","1");a.appendChild(H);d("mousedown",B);d("mouseup",y);d("contextmenu",y);F.longpress=new c("longpress",["touchstart","touchmove","touchend"],n);F.drag=new c("drag",["touchstart","touchmove","touchend"],p);F.dragstop=new c("dragstop",["drag","touchend"],m);d("touchstart",q)})()};gui.IOSSafariSupport=function(h){function k(){c.innerHeight!==c.outerHeight&&(b.style.display="none",runtime.requestAnimationFrame(function(){b.style.display="block"}))}var c=runtime.getWindow(),b=h.getEventTrap();this.destroy=function(c){h.unsubscribe("focus",k);b.removeAttribute("autocapitalize");b.style.WebkitTransform="";c()};h.subscribe("focus",k);b.setAttribute("autocapitalize","off");b.style.WebkitTransform="translateX(-10000px)"};gui.HyperlinkController=function(h,k,c,b){function g(){var b=!0;!0===k.getState(gui.CommonConstraints.EDIT.REVIEW_MODE)&&(b=c.isLocalCursorWithinOwnAnnotation());b!==f&&(f=b,q.emit(gui.HyperlinkController.enabledChanged,f))}function n(c){c.getMemberId()===b&&g()}var p=odf.OdfUtils,m=h.getOdtDocument(),q=new core.EventNotifier([gui.HyperlinkController.enabledChanged]),f=!1;this.isEnabled=function(){return f};this.subscribe=function(b,a){q.subscribe(b,a)};this.unsubscribe=function(b,a){q.unsubscribe(b,
+a)};this.addHyperlink=function(c,a){if(f){var d=m.getCursorSelection(b),g=new ops.OpApplyHyperlink,l=[];if(0===d.length||a)a=a||c,g=new ops.OpInsertText,g.init({memberid:b,position:d.position,text:a}),d.length=a.length,l.push(g);g=new ops.OpApplyHyperlink;g.init({memberid:b,position:d.position,length:d.length,hyperlink:c});l.push(g);h.enqueue(l)}};this.removeHyperlinks=function(){if(f){var c=m.createPositionIterator(m.getRootNode()),a=m.getCursor(b).getSelectedRange(),d=p.getHyperlinkElements(a),
+g=a.collapsed&&1===d.length,l=m.getDOMDocument().createRange(),k=[],n,q;0!==d.length&&(d.forEach(function(a){l.selectNodeContents(a);n=m.convertDomToCursorRange({anchorNode:l.startContainer,anchorOffset:l.startOffset,focusNode:l.endContainer,focusOffset:l.endOffset});q=new ops.OpRemoveHyperlink;q.init({memberid:b,position:n.position,length:n.length});k.push(q)}),g||(g=d[0],-1===a.comparePoint(g,0)&&(l.setStart(g,0),l.setEnd(a.startContainer,a.startOffset),n=m.convertDomToCursorRange({anchorNode:l.startContainer,
+anchorOffset:l.startOffset,focusNode:l.endContainer,focusOffset:l.endOffset}),0<n.length&&(q=new ops.OpApplyHyperlink,q.init({memberid:b,position:n.position,length:n.length,hyperlink:p.getHyperlinkTarget(g)}),k.push(q))),d=d[d.length-1],c.moveToEndOfNode(d),c=c.unfilteredDomOffset(),1===a.comparePoint(d,c)&&(l.setStart(a.endContainer,a.endOffset),l.setEnd(d,c),n=m.convertDomToCursorRange({anchorNode:l.startContainer,anchorOffset:l.startOffset,focusNode:l.endContainer,focusOffset:l.endOffset}),0<n.length&&
+(q=new ops.OpApplyHyperlink,q.init({memberid:b,position:n.position,length:n.length,hyperlink:p.getHyperlinkTarget(d)}),k.push(q)))),h.enqueue(k),l.detach())}};this.destroy=function(b){m.unsubscribe(ops.Document.signalCursorMoved,n);k.unsubscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,g);b()};m.subscribe(ops.Document.signalCursorMoved,n);k.subscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,g);g()};gui.HyperlinkController.enabledChanged="enabled/changed";gui.ImageController=function(h,k,c,b,g){function n(){var a=!0;!0===k.getState(gui.CommonConstraints.EDIT.REVIEW_MODE)&&(a=c.isLocalCursorWithinOwnAnnotation());a!==r&&(r=a,d.emit(gui.ImageController.enabledChanged,r))}function p(a){a.getMemberId()===b&&n()}var m={"image/gif":".gif","image/jpeg":".jpg","image/png":".png"},q=odf.Namespaces.textns,f=h.getOdtDocument(),e=odf.OdfUtils,a=f.getFormatting(),d=new core.EventNotifier([gui.HyperlinkController.enabledChanged]),r=!1;this.isEnabled=function(){return r};
+this.subscribe=function(a,b){d.subscribe(a,b)};this.unsubscribe=function(a,b){d.unsubscribe(a,b)};this.insertImage=function(d,c,k,n){if(r){runtime.assert(0<k&&0<n,"Both width and height of the image should be greater than 0px.");n={width:k,height:n};if(k=e.getParagraphElement(f.getCursor(b).getNode()).getAttributeNS(q,"style-name")){k=a.getContentSize(k,"paragraph");var p=1,t=1;n.width>k.width&&(p=k.width/n.width);n.height>k.height&&(t=k.height/n.height);k=Math.min(p,t);n={width:n.width*k,height:n.height*
+k}}k=n.width+"px";n=n.height+"px";var x=f.getOdfCanvas().odfContainer().rootElement.styles,p=d.toLowerCase(),t=m.hasOwnProperty(p)?m[p]:null,w,p=[];runtime.assert(null!==t,"Image type is not supported: "+d);t="Pictures/"+g.generateImageName()+t;w=new ops.OpSetBlob;w.init({memberid:b,filename:t,mimetype:d,content:c});p.push(w);a.getStyleElement("Graphics","graphic",[x])||(d=new ops.OpAddStyle,d.init({memberid:b,styleName:"Graphics",styleFamily:"graphic",isAutomaticStyle:!1,setProperties:{"style:graphic-properties":{"text:anchor-type":"paragraph",
+"svg:x":"0cm","svg:y":"0cm","style:wrap":"dynamic","style:number-wrapped-paragraphs":"no-limit","style:wrap-contour":"false","style:vertical-pos":"top","style:vertical-rel":"paragraph","style:horizontal-pos":"center","style:horizontal-rel":"paragraph"}}}),p.push(d));d=g.generateStyleName();c=new ops.OpAddStyle;c.init({memberid:b,styleName:d,styleFamily:"graphic",isAutomaticStyle:!0,setProperties:{"style:parent-style-name":"Graphics","style:graphic-properties":{"style:vertical-pos":"top","style:vertical-rel":"baseline",
+"style:horizontal-pos":"center","style:horizontal-rel":"paragraph","fo:background-color":"transparent","style:background-transparency":"100%","style:shadow":"none","style:mirror":"none","fo:clip":"rect(0cm, 0cm, 0cm, 0cm)","draw:luminance":"0%","draw:contrast":"0%","draw:red":"0%","draw:green":"0%","draw:blue":"0%","draw:gamma":"100%","draw:color-inversion":"false","draw:image-opacity":"100%","draw:color-mode":"standard"}}});p.push(c);w=new ops.OpInsertImage;w.init({memberid:b,position:f.getCursorPosition(b),
+filename:t,frameWidth:k,frameHeight:n,frameStyleName:d,frameName:g.generateFrameName()});p.push(w);h.enqueue(p)}};this.destroy=function(a){f.unsubscribe(ops.Document.signalCursorMoved,p);k.unsubscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,n);a()};f.subscribe(ops.Document.signalCursorMoved,p);k.subscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,n);n()};gui.ImageController.enabledChanged="enabled/changed";gui.ImageSelector=function(h){function k(){var c=h.getSizer(),k=g.createElement("div");k.id="imageSelector";k.style.borderWidth="1px";c.appendChild(k);b.forEach(function(b){var c=g.createElement("div");c.className=b;k.appendChild(c)});return k}var c=odf.Namespaces.svgns,b="topLeft topRight bottomRight bottomLeft topMiddle rightMiddle bottomMiddle leftMiddle".split(" "),g=h.getElement().ownerDocument,n=!1;this.select=function(b){var m,q,f=g.getElementById("imageSelector");f||(f=k());n=!0;m=f.parentNode;
+q=b.getBoundingClientRect();var e=m.getBoundingClientRect(),a=h.getZoomLevel();m=(q.left-e.left)/a-1;q=(q.top-e.top)/a-1;f.style.display="block";f.style.left=m+"px";f.style.top=q+"px";f.style.width=b.getAttributeNS(c,"width");f.style.height=b.getAttributeNS(c,"height")};this.clearSelection=function(){var b;n&&(b=g.getElementById("imageSelector"))&&(b.style.display="none");n=!1};this.isSelectorElement=function(b){var c=g.getElementById("imageSelector");return c?b===c||b.parentNode===c:!1}};(function(){function h(h){function c(b){p=b.which&&String.fromCharCode(b.which)===n;n=void 0;return!1===p}function b(){p=!1}function g(b){n=b.data;p=!1}var n,p=!1;this.destroy=function(n){h.unsubscribe("textInput",b);h.unsubscribe("compositionend",g);h.removeFilter("keypress",c);n()};h.subscribe("textInput",b);h.subscribe("compositionend",g);h.addFilter("keypress",c)}gui.InputMethodEditor=function(k,c){function b(b){a&&(b?a.getNode().setAttributeNS("urn:webodf:names:cursor","composing","true"):(a.getNode().removeAttributeNS("urn:webodf:names:cursor",
+"composing"),l.textContent=""))}function g(){y&&(y=!1,b(!1),z.emit(gui.InputMethodEditor.signalCompositionEnd,{data:D}),D="")}function n(){L||(L=!0,g(),a&&a.getSelectedRange().collapsed?d.value="":d.value=x.writeToString(a.getSelectedRange().cloneContents()),d.setSelectionRange(0,d.value.length),L=!1)}function p(){c.hasFocus()&&B.trigger()}function m(){t=void 0;B.cancel();b(!0);y||z.emit(gui.InputMethodEditor.signalCompositionStart,{data:""})}function q(a){a=t=a.data;y=!0;D+=a;B.trigger()}function f(a){a.data!==
+t&&(a=a.data,y=!0,D+=a,B.trigger());t=void 0}function e(){l.textContent=d.value}var a=null,d=c.getEventTrap(),r=d.ownerDocument,l,B,y=!1,D="",z=new core.EventNotifier([gui.InputMethodEditor.signalCompositionStart,gui.InputMethodEditor.signalCompositionEnd]),t,x,w=[],F,L=!1;this.subscribe=z.subscribe;this.unsubscribe=z.unsubscribe;this.registerCursor=function(b){b.getMemberId()===k&&(a=b,a.getNode().appendChild(l),b.subscribe(ops.OdtCursor.signalCursorUpdated,p),c.subscribe("input",e),c.subscribe("compositionupdate",
+e))};this.removeCursor=function(b){a&&b===k&&(a.getNode().removeChild(l),a.unsubscribe(ops.OdtCursor.signalCursorUpdated,p),c.unsubscribe("input",e),c.unsubscribe("compositionupdate",e),a=null)};this.destroy=function(a){c.unsubscribe("compositionstart",m);c.unsubscribe("compositionend",q);c.unsubscribe("textInput",f);c.unsubscribe("keypress",g);c.unsubscribe("focus",n);core.Async.destroyAll(F,a)};(function(){x=new odf.TextSerializer;x.filter=new odf.OdfNodeFilter;c.subscribe("compositionstart",m);
+c.subscribe("compositionend",q);c.subscribe("textInput",f);c.subscribe("keypress",g);c.subscribe("focus",n);w.push(new h(c));F=w.map(function(a){return a.destroy});l=r.createElement("span");l.setAttribute("id","composer");B=core.Task.createTimeoutTask(n,1);F.push(B.destroy)})()};gui.InputMethodEditor.signalCompositionStart="input/compositionstart";gui.InputMethodEditor.signalCompositionEnd="input/compositionend"})();gui.MetadataController=function(h,k){function c(b){n.emit(gui.MetadataController.signalMetadataChanged,b)}function b(b){var c=-1===p.indexOf(b);c||runtime.log("Setting "+b+" is restricted.");return c}var g=h.getOdtDocument(),n=new core.EventNotifier([gui.MetadataController.signalMetadataChanged]),p=["dc:creator","dc:date","meta:editing-cycles","meta:editing-duration","meta:document-statistic"];this.setMetadata=function(c,g){var f={},e="",a;c&&Object.keys(c).filter(b).forEach(function(a){f[a]=c[a]});
+g&&(e=g.filter(b).join(","));if(0<e.length||0<Object.keys(f).length)a=new ops.OpUpdateMetadata,a.init({memberid:k,setProperties:f,removedProperties:0<e.length?{attributes:e}:null}),h.enqueue([a])};this.getMetadata=function(b){var c;runtime.assert("string"===typeof b,"Property must be a string");c=b.split(":");runtime.assert(2===c.length,"Property must be a namespace-prefixed string");b=odf.Namespaces.lookupNamespaceURI(c[0]);runtime.assert(Boolean(b),"Prefix must be for an ODF namespace.");return g.getOdfCanvas().odfContainer().getMetadata(b,
+c[1])};this.subscribe=function(b,c){n.subscribe(b,c)};this.unsubscribe=function(b,c){n.unsubscribe(b,c)};this.destroy=function(b){g.unsubscribe(ops.OdtDocument.signalMetadataUpdated,c);b()};g.subscribe(ops.OdtDocument.signalMetadataUpdated,c)};gui.MetadataController.signalMetadataChanged="metadata/changed";gui.PasteController=function(h,k,c,b){function g(){m=!0===k.getState(gui.CommonConstraints.EDIT.REVIEW_MODE)?c.isLocalCursorWithinOwnAnnotation():!0}function n(a){a.getMemberId()===b&&g()}var p=h.getOdtDocument(),m=!1,q=odf.Namespaces.textns,f=core.StepDirection.NEXT,e=odf.OdfUtils;this.isEnabled=function(){return m};this.paste=function(a){if(m){var d=p.getCursorPosition(b),c=p.getCursor(b).getNode(),c=e.getParagraphElement(c),g=c.getAttributeNS(q,"style-name")||"",k=d,n=[],D=p.convertDomPointToCursorStep(c,
+0,f);a.replace(/\r/g,"").split("\n").forEach(function(a){var d=new ops.OpInsertText,c=new ops.OpSplitParagraph;d.init({memberid:b,position:k,text:a,moveCursor:!0});n.push(d);k+=a.length;c.init({memberid:b,position:k,paragraphStyleName:g,sourceParagraphPosition:D,moveCursor:!0});n.push(c);D=k+=1});n.pop();h.enqueue(n)}};this.destroy=function(a){p.unsubscribe(ops.Document.signalCursorMoved,n);k.unsubscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,g);a()};p.subscribe(ops.Document.signalCursorMoved,n);
+k.subscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,g);g()};gui.ClosestXOffsetScanner=function(h){function k(b){return null!==b&&void 0!==g?Math.abs(b-h)>g:!1}function c(b){null!==b&&!1===k(b)&&(g=Math.abs(b-h))}var b=this,g,n=gui.StepInfo.VisualDirection.LEFT_TO_RIGHT;this.token=void 0;this.process=function(g,h,q){var f,e;g.visualDirection===n?(f=h&&h.right,e=q&&q.left):(f=h&&h.left,e=q&&q.right);if(k(f)||k(e))return!0;if(h||q)c(f),c(e),b.token=g.token;return!1}};gui.LineBoundaryScanner=function(){var h=this,k=null;this.token=void 0;this.process=function(c,b,g){var n;if(n=g)if(k){var p=k;n=Math.min(p.bottom-p.top,g.bottom-g.top);var m=Math.max(p.top,g.top),p=Math.min(p.bottom,g.bottom)-m;n=.4>=(0<n?p/n:0)}else n=!1;!b||g&&!n||(h.token=c.token);if(n)return!0;k=(c=k)&&b?{left:Math.min(c.left,b.left),right:Math.max(c.right,b.right),top:Math.min(c.top,b.top),bottom:Math.min(c.bottom,b.bottom)}:c||b;return!1}};gui.ParagraphBoundaryScanner=function(){var h=this,k=!1,c,b=odf.OdfUtils;this.token=void 0;this.process=function(g){var n=b.getParagraphElement(g.container());k||(c=n,k=!0);if(c!==n)return!0;h.token=g.token;return!1}};odf.WordBoundaryFilter=function(h,k){function c(a,b,d){for(var c=null,e=h.getRootNode(),f;a!==e&&null!==a&&null===c;)f=0>b?a.previousSibling:a.nextSibling,d(f)===NodeFilter.FILTER_ACCEPT&&(c=f),a=a.parentNode;return c}function b(a,b){var d;return null===a?r.NO_NEIGHBOUR:p.isCharacterElement(a)?r.SPACE_CHAR:a.nodeType===g||p.isTextSpan(a)||p.isHyperlink(a)?(d=a.textContent.charAt(b()),q.test(d)?r.SPACE_CHAR:m.test(d)?r.PUNCTUATION_CHAR:r.WORD_CHAR):r.OTHER}var g=Node.TEXT_NODE,n=Node.ELEMENT_NODE,
+p=odf.OdfUtils,m=/[!-#%-*,-\/:-;?-@\[-\]_{}\u00a1\u00ab\u00b7\u00bb\u00bf;\u00b7\u055a-\u055f\u0589-\u058a\u05be\u05c0\u05c3\u05c6\u05f3-\u05f4\u0609-\u060a\u060c-\u060d\u061b\u061e-\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0964-\u0965\u0970\u0df4\u0e4f\u0e5a-\u0e5b\u0f04-\u0f12\u0f3a-\u0f3d\u0f85\u0fd0-\u0fd4\u104a-\u104f\u10fb\u1361-\u1368\u166d-\u166e\u169b-\u169c\u16eb-\u16ed\u1735-\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u180a\u1944-\u1945\u19de-\u19df\u1a1e-\u1a1f\u1b5a-\u1b60\u1c3b-\u1c3f\u1c7e-\u1c7f\u2000-\u206e\u207d-\u207e\u208d-\u208e\u3008-\u3009\u2768-\u2775\u27c5-\u27c6\u27e6-\u27ef\u2983-\u2998\u29d8-\u29db\u29fc-\u29fd\u2cf9-\u2cfc\u2cfe-\u2cff\u2e00-\u2e7e\u3000-\u303f\u30a0\u30fb\ua60d-\ua60f\ua673\ua67e\ua874-\ua877\ua8ce-\ua8cf\ua92e-\ua92f\ua95f\uaa5c-\uaa5f\ufd3e-\ufd3f\ufe10-\ufe19\ufe30-\ufe52\ufe54-\ufe61\ufe63\ufe68\ufe6a-\ufe6b\uff01-\uff03\uff05-\uff0a\uff0c-\uff0f\uff1a-\uff1b\uff1f-\uff20\uff3b-\uff3d\uff3f\uff5b\uff5d\uff5f-\uff65]|\ud800[\udd00-\udd01\udf9f\udfd0]|\ud802[\udd1f\udd3f\ude50-\ude58]|\ud809[\udc00-\udc7e]/,
+q=/\s/,f=core.PositionFilter.FilterResult.FILTER_ACCEPT,e=core.PositionFilter.FilterResult.FILTER_REJECT,a=odf.WordBoundaryFilter.IncludeWhitespace.TRAILING,d=odf.WordBoundaryFilter.IncludeWhitespace.LEADING,r={NO_NEIGHBOUR:0,SPACE_CHAR:1,PUNCTUATION_CHAR:2,WORD_CHAR:3,OTHER:4};this.acceptPosition=function(g){var h=g.container(),m=g.leftNode(),p=g.rightNode(),q=g.unfilteredDomOffset,t=function(){return g.unfilteredDomOffset()-1};h.nodeType===n&&(null===p&&(p=c(h,1,g.getNodeFilter())),null===m&&(m=
+c(h,-1,g.getNodeFilter())));h!==p&&(q=function(){return 0});h!==m&&null!==m&&(t=function(){return m.textContent.length-1});h=b(m,t);p=b(p,q);return h===r.WORD_CHAR&&p===r.WORD_CHAR||h===r.PUNCTUATION_CHAR&&p===r.PUNCTUATION_CHAR||k===a&&h!==r.NO_NEIGHBOUR&&p===r.SPACE_CHAR||k===d&&h===r.SPACE_CHAR&&p!==r.NO_NEIGHBOUR?e:f}};odf.WordBoundaryFilter.IncludeWhitespace={None:0,TRAILING:1,LEADING:2};gui.SelectionController=function(h,k){function c(a){var b=a.spec();if(a.isEdit||b.memberid===k)L=void 0,H.cancel()}function b(){var a=y.getCursor(k).getNode();return y.createStepIterator(a,0,[t,w],y.getRootElement(a))}function g(a,b,d){d=new odf.WordBoundaryFilter(y,d);var c=y.getRootElement(a)||y.getRootNode(),e=y.createRootFilter(c);return y.createStepIterator(a,b,[t,e,d],c)}function n(a,b){return b?{anchorNode:a.startContainer,anchorOffset:a.startOffset,focusNode:a.endContainer,focusOffset:a.endOffset}:
+{anchorNode:a.endContainer,anchorOffset:a.endOffset,focusNode:a.startContainer,focusOffset:a.startOffset}}function p(a,b,d){var c=new ops.OpMoveCursor;c.init({memberid:k,position:a,length:b||0,selectionType:d});return c}function m(a,b,d){var c;c=y.getCursor(k);c=n(c.getSelectedRange(),c.hasForwardSelection());c.focusNode=a;c.focusOffset=b;d||(c.anchorNode=c.focusNode,c.anchorOffset=c.focusOffset);a=y.convertDomToCursorRange(c);h.enqueue([p(a.position,a.length)])}function q(a){var b;b=g(a.startContainer,
+a.startOffset,G);b.roundToPreviousStep()&&a.setStart(b.container(),b.offset());b=g(a.endContainer,a.endOffset,A);b.roundToNextStep()&&a.setEnd(b.container(),b.offset())}function f(a){var b=z.getParagraphElements(a),d=b[0],b=b[b.length-1];d&&a.setStart(d,0);b&&(z.isParagraph(a.endContainer)&&0===a.endOffset?a.setEndBefore(b):a.setEnd(b,b.childNodes.length))}function e(a,b,d,c){var e,f;c?(e=d.startContainer,f=d.startOffset):(e=d.endContainer,f=d.endOffset);D.containsNode(a,e)||(f=0>D.comparePoints(a,
+0,e,f)?0:a.childNodes.length,e=a);a=y.createStepIterator(e,f,b,z.getParagraphElement(e)||a);a.roundToClosestStep()||runtime.assert(!1,"No step found in requested range");c?d.setStart(a.container(),a.offset()):d.setEnd(a.container(),a.offset())}function a(a,d){var c=b();c.advanceStep(a)&&m(c.container(),c.offset(),d)}function d(a,d){var c,e=L,f=[new gui.LineBoundaryScanner,new gui.ParagraphBoundaryScanner];void 0===e&&F&&(e=F());isNaN(e)||(c=b(),x.moveToFilteredStep(c,a,f)&&c.advanceStep(a)&&(f=[new gui.ClosestXOffsetScanner(e),
+new gui.LineBoundaryScanner,new gui.ParagraphBoundaryScanner],x.moveToFilteredStep(c,a,f)&&(m(c.container(),c.offset(),d),L=e,H.restart())))}function r(a,d){var c=b(),e=[new gui.LineBoundaryScanner,new gui.ParagraphBoundaryScanner];x.moveToFilteredStep(c,a,e)&&m(c.container(),c.offset(),d)}function l(a,b){var d=y.getCursor(k),d=n(d.getSelectedRange(),d.hasForwardSelection()),d=g(d.focusNode,d.focusOffset,G);d.advanceStep(a)&&m(d.container(),d.offset(),b)}function B(a,b,d){var c=!1,e=y.getCursor(k),
+e=n(e.getSelectedRange(),e.hasForwardSelection()),c=y.getRootElement(e.focusNode);runtime.assert(Boolean(c),"SelectionController: Cursor outside root");e=y.createStepIterator(e.focusNode,e.focusOffset,[t,w],c);e.roundToClosestStep();e.advanceStep(a)&&(d=d(e.container()))&&(a===K?(e.setPosition(d,0),c=e.roundToNextStep()):(e.setPosition(d,d.childNodes.length),c=e.roundToPreviousStep()),c&&m(e.container(),e.offset(),b))}var y=h.getOdtDocument(),D=core.DomUtils,z=odf.OdfUtils,t=y.getPositionFilter(),
+x=new gui.GuiStepUtils,w=y.createRootFilter(k),F=null,L,H,G=odf.WordBoundaryFilter.IncludeWhitespace.TRAILING,A=odf.WordBoundaryFilter.IncludeWhitespace.LEADING,K=core.StepDirection.PREVIOUS,v=core.StepDirection.NEXT;this.selectionToRange=function(a){var b=0<=D.comparePoints(a.anchorNode,a.anchorOffset,a.focusNode,a.focusOffset),d=a.focusNode.ownerDocument.createRange();b?(d.setStart(a.anchorNode,a.anchorOffset),d.setEnd(a.focusNode,a.focusOffset)):(d.setStart(a.focusNode,a.focusOffset),d.setEnd(a.anchorNode,
+a.anchorOffset));return{range:d,hasForwardSelection:b}};this.rangeToSelection=n;this.selectImage=function(a){var b=y.getRootElement(a),d=y.createRootFilter(b),b=y.createStepIterator(a,0,[d,y.getPositionFilter()],b),c;b.roundToPreviousStep()||runtime.assert(!1,"No walkable position before frame");d=b.container();c=b.offset();b.setPosition(a,a.childNodes.length);b.roundToNextStep()||runtime.assert(!1,"No walkable position after frame");a=y.convertDomToCursorRange({anchorNode:d,anchorOffset:c,focusNode:b.container(),
+focusOffset:b.offset()});a=p(a.position,a.length,ops.OdtCursor.RegionSelection);h.enqueue([a])};this.expandToWordBoundaries=q;this.expandToParagraphBoundaries=f;this.selectRange=function(a,b,d){var c=y.getOdfCanvas().getElement(),g,l=[t];g=D.containsNode(c,a.startContainer);c=D.containsNode(c,a.endContainer);if(g||c)if(g&&c&&(2===d?q(a):3<=d&&f(a)),(d=b?y.getRootElement(a.startContainer):y.getRootElement(a.endContainer))||(d=y.getRootNode()),l.push(y.createRootFilter(d)),e(d,l,a,!0),e(d,l,a,!1),a=
+n(a,b),b=y.convertDomToCursorRange(a),a=y.getCursorSelection(k),b.position!==a.position||b.length!==a.length)a=p(b.position,b.length,ops.OdtCursor.RangeSelection),h.enqueue([a])};this.moveCursorToLeft=function(){a(K,!1);return!0};this.moveCursorToRight=function(){a(v,!1);return!0};this.extendSelectionToLeft=function(){a(K,!0);return!0};this.extendSelectionToRight=function(){a(v,!0);return!0};this.setCaretXPositionLocator=function(a){F=a};this.moveCursorUp=function(){d(K,!1);return!0};this.moveCursorDown=
+function(){d(v,!1);return!0};this.extendSelectionUp=function(){d(K,!0);return!0};this.extendSelectionDown=function(){d(v,!0);return!0};this.moveCursorBeforeWord=function(){l(K,!1);return!0};this.moveCursorPastWord=function(){l(v,!1);return!0};this.extendSelectionBeforeWord=function(){l(K,!0);return!0};this.extendSelectionPastWord=function(){l(v,!0);return!0};this.moveCursorToLineStart=function(){r(K,!1);return!0};this.moveCursorToLineEnd=function(){r(v,!1);return!0};this.extendSelectionToLineStart=
+function(){r(K,!0);return!0};this.extendSelectionToLineEnd=function(){r(v,!0);return!0};this.extendSelectionToParagraphStart=function(){B(K,!0,z.getParagraphElement);return!0};this.extendSelectionToParagraphEnd=function(){B(v,!0,z.getParagraphElement);return!0};this.moveCursorToParagraphStart=function(){B(K,!1,z.getParagraphElement);return!0};this.moveCursorToParagraphEnd=function(){B(v,!1,z.getParagraphElement);return!0};this.moveCursorToDocumentStart=function(){B(K,!1,y.getRootElement);return!0};
+this.moveCursorToDocumentEnd=function(){B(v,!1,y.getRootElement);return!0};this.extendSelectionToDocumentStart=function(){B(K,!0,y.getRootElement);return!0};this.extendSelectionToDocumentEnd=function(){B(v,!0,y.getRootElement);return!0};this.extendSelectionToEntireDocument=function(){var a=y.getCursor(k),a=y.getRootElement(a.getNode()),b,d,c;runtime.assert(Boolean(a),"SelectionController: Cursor outside root");c=y.createStepIterator(a,0,[t,w],a);c.roundToClosestStep();b=c.container();d=c.offset();
+c.setPosition(a,a.childNodes.length);c.roundToClosestStep();a=y.convertDomToCursorRange({anchorNode:b,anchorOffset:d,focusNode:c.container(),focusOffset:c.offset()});h.enqueue([p(a.position,a.length)]);return!0};this.destroy=function(a){y.unsubscribe(ops.OdtDocument.signalOperationStart,c);core.Async.destroyAll([H.destroy],a)};(function(){H=core.Task.createTimeoutTask(function(){L=void 0},2E3);y.subscribe(ops.OdtDocument.signalOperationStart,c)})()};gui.TextController=function(h,k,c,b,g,n){function p(){B=!0===k.getState(gui.CommonConstraints.EDIT.REVIEW_MODE)?c.isLocalCursorWithinOwnAnnotation():!0}function m(a){a.getMemberId()===b&&p()}function q(a,b,c){var e=[d.getPositionFilter()];c&&e.push(d.createRootFilter(a.startContainer));c=d.createStepIterator(a.startContainer,a.startOffset,e,b);c.roundToClosestStep()||runtime.assert(!1,"No walkable step found in paragraph element at range start");b=d.convertDomPointToCursorStep(c.container(),c.offset());
+a.collapsed?a=b:(c.setPosition(a.endContainer,a.endOffset),c.roundToClosestStep()||runtime.assert(!1,"No walkable step found in paragraph element at range end"),a=d.convertDomPointToCursorStep(c.container(),c.offset()));return{position:b,length:a-b}}function f(a){var d,c,e,f=r.getParagraphElements(a),g=a.cloneRange(),h=[];d=f[0];1<f.length&&(r.hasNoODFContent(d)&&(d=f[f.length-1]),c=d.getAttributeNS(odf.Namespaces.textns,"style-name")||"");f.forEach(function(d,f){var k,n;g.setStart(d,0);g.collapse(!0);
+k=q(g,d,!1).position;0<f&&(n=new ops.OpMergeParagraph,n.init({memberid:b,paragraphStyleName:c,destinationStartPosition:e,sourceStartPosition:k,moveCursor:1===f}),h.unshift(n));e=k;g.selectNodeContents(d);if(k=l.rangeIntersection(g,a))k=q(k,d,!0),0<k.length&&(n=new ops.OpRemoveText,n.init({memberid:b,position:k.position,length:k.length}),h.unshift(n))});return h}function e(a){0>a.length&&(a.position+=a.length,a.length=-a.length);return a}function a(a){if(!B)return!1;var c,g=d.getCursor(b).getSelectedRange().cloneRange(),
+l=e(d.getCursorSelection(b)),k;if(0===l.length){l=void 0;c=d.getCursor(b).getNode();k=d.getRootElement(c);var n=[d.getPositionFilter(),d.createRootFilter(k)];k=d.createStepIterator(c,0,n,k);k.roundToClosestStep()&&(a?k.nextStep():k.previousStep())&&(l=e(d.convertDomToCursorRange({anchorNode:c,anchorOffset:0,focusNode:k.container(),focusOffset:k.offset()})),a?(g.setStart(c,0),g.setEnd(k.container(),k.offset())):(g.setStart(k.container(),k.offset()),g.setEnd(c,0)))}l&&h.enqueue(f(g));return void 0!==
+l}var d=h.getOdtDocument(),r=odf.OdfUtils,l=core.DomUtils,B=!1,y=odf.Namespaces.textns,D=core.StepDirection.NEXT;this.isEnabled=function(){return B};this.enqueueParagraphSplittingOps=function(){if(!B)return!1;var a=d.getCursor(b),c=a.getSelectedRange(),g=e(d.getCursorSelection(b)),l=[],a=r.getParagraphElement(a.getNode()),k=a.getAttributeNS(y,"style-name")||"";0<g.length&&(l=l.concat(f(c)));c=new ops.OpSplitParagraph;c.init({memberid:b,position:g.position,paragraphStyleName:k,sourceParagraphPosition:d.convertDomPointToCursorStep(a,
+0,D),moveCursor:!0});l.push(c);n&&(g=n(g.position+1),l=l.concat(g));h.enqueue(l);return!0};this.removeTextByBackspaceKey=function(){return a(!1)};this.removeTextByDeleteKey=function(){return a(!0)};this.removeCurrentSelection=function(){if(!B)return!1;var a=d.getCursor(b).getSelectedRange();h.enqueue(f(a));return!0};this.insertText=function(a){if(B){var c=d.getCursor(b).getSelectedRange(),l=e(d.getCursorSelection(b)),k=[],n=!1;0<l.length&&(k=k.concat(f(c)),n=!0);c=new ops.OpInsertText;c.init({memberid:b,
+position:l.position,text:a,moveCursor:!0});k.push(c);g&&(a=g(l.position,a.length,n))&&k.push(a);h.enqueue(k)}};this.destroy=function(a){d.unsubscribe(ops.Document.signalCursorMoved,m);k.unsubscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,p);a()};d.subscribe(ops.Document.signalCursorMoved,m);k.subscribe(gui.CommonConstraints.EDIT.REVIEW_MODE,p);p()};gui.UndoManager=function(){};gui.UndoManager.prototype.subscribe=function(h,k){};gui.UndoManager.prototype.unsubscribe=function(h,k){};gui.UndoManager.prototype.setDocument=function(h){};gui.UndoManager.prototype.setInitialState=function(){};gui.UndoManager.prototype.initialize=function(){};gui.UndoManager.prototype.purgeInitialState=function(){};gui.UndoManager.prototype.setPlaybackFunction=function(h){};gui.UndoManager.prototype.hasUndoStates=function(){};
+gui.UndoManager.prototype.hasRedoStates=function(){};gui.UndoManager.prototype.moveForward=function(h){};gui.UndoManager.prototype.moveBackward=function(h){};gui.UndoManager.prototype.onOperationExecuted=function(h){};gui.UndoManager.prototype.isDocumentModified=function(){};gui.UndoManager.prototype.setDocumentModified=function(h){};gui.UndoManager.signalUndoStackChanged="undoStackChanged";gui.UndoManager.signalUndoStateCreated="undoStateCreated";gui.UndoManager.signalUndoStateModified="undoStateModified";
+gui.UndoManager.signalDocumentModifiedChanged="documentModifiedChanged";gui.SessionControllerOptions=function(){this.annotationsEnabled=this.directParagraphStylingEnabled=this.directTextStylingEnabled=!1};
+(function(){var h=core.PositionFilter.FilterResult.FILTER_ACCEPT;gui.SessionController=function(k,c,b,g){function n(a,b){var d=C.getDOMDocument(),c=null;d.caretRangeFromPoint?(d=d.caretRangeFromPoint(a,b),c={container:d.startContainer,offset:d.startOffset}):d.caretPositionFromPoint&&(d=d.caretPositionFromPoint(a,b))&&d.offsetNode&&(c={container:d.offsetNode,offset:d.offset});return c}function p(a){var b=C.getCursor(c).getSelectedRange();b.collapsed?a.preventDefault():Y.setDataFromRange(a,b)?fa.removeCurrentSelection():
+runtime.log("Cut operation failed")}function m(){return!1!==C.getCursor(c).getSelectedRange().collapsed}function q(a){var b=C.getCursor(c).getSelectedRange();b.collapsed?a.preventDefault():Y.setDataFromRange(a,b)||runtime.log("Copy operation failed")}function f(a){var b;R.clipboardData&&R.clipboardData.getData?b=R.clipboardData.getData("Text"):a.clipboardData&&a.clipboardData.getData&&(b=a.clipboardData.getData("text/plain"));b&&(fa.removeCurrentSelection(),ga.paste(b));a.preventDefault?a.preventDefault():
+a.returnValue=!1}function e(){return!1}function a(a){if(V)V.onOperationExecuted(a)}function d(a){C.emit(ops.OdtDocument.signalUndoStackChanged,a)}function r(){var a;return V?(a=M.hasFocus(),V.moveBackward(1),a&&M.focus(),!0):!1}function l(){var a;return V?(a=M.hasFocus(),V.moveForward(1),a&&M.focus(),!0):!1}function B(a){var d=C.getCursor(c).getSelectedRange(),e=(a.target||a.srcElement||null).getAttribute("end");d&&e&&(a=n(a.clientX,a.clientY))&&(ia.setUnfilteredPosition(a.container,a.offset),ba.acceptPosition(ia)===
+h&&(d=d.cloneRange(),"left"===e?d.setStart(ia.container(),ia.unfilteredDomOffset()):d.setEnd(ia.container(),ia.unfilteredDomOffset()),b.setSelectedRange(d,"right"===e),C.emit(ops.Document.signalCursorMoved,b)))}function y(){W.selectRange(b.getSelectedRange(),b.hasForwardSelection(),1)}function D(){var a=R.getSelection(),d=0<a.rangeCount&&W.selectionToRange(a);X&&d&&(J=!0,la.clearSelection(),ia.setUnfilteredPosition(a.focusNode,a.focusOffset),ba.acceptPosition(ia)===h&&(2===oa?W.expandToWordBoundaries(d.range):
+3<=oa&&W.expandToParagraphBoundaries(d.range),b.setSelectedRange(d.range,d.hasForwardSelection),C.emit(ops.Document.signalCursorMoved,b)))}function z(a){var b=a.target||a.srcElement||null,d=C.getCursor(c);if(X=null!==b&&U.containsNode(C.getOdfCanvas().getElement(),b))J=!1,b=C.getRootElement(b)||C.getRootNode(),ba=C.createRootFilter(b),oa=0===a.button?a.detail:0,d&&a.shiftKey?R.getSelection().collapse(d.getAnchorNode(),0):(a=R.getSelection(),b=d.getSelectedRange(),a.extend?d.hasForwardSelection()?
+(a.collapse(b.startContainer,b.startOffset),a.extend(b.endContainer,b.endOffset)):(a.collapse(b.endContainer,b.endOffset),a.extend(b.startContainer,b.startOffset)):(a.removeAllRanges(),a.addRange(b.cloneRange()))),1<oa&&D()}function t(a){var b=C.getRootElement(a),d=C.createRootFilter(b),b=C.createStepIterator(a,0,[d,C.getPositionFilter()],b);b.setPosition(a,a.childNodes.length);return b.roundToNextStep()?{container:b.container(),offset:b.offset()}:null}function x(a){var b;b=(b=R.getSelection())?{anchorNode:b.anchorNode,
+anchorOffset:b.anchorOffset,focusNode:b.focusNode,focusOffset:b.focusOffset}:null;var d=R.getSelection().isCollapsed,c,e;b.anchorNode||b.focusNode||!(c=n(a.clientX,a.clientY))||(b.anchorNode=c.container,b.anchorOffset=c.offset,b.focusNode=b.anchorNode,b.focusOffset=b.anchorOffset);if(T.isImage(b.focusNode)&&0===b.focusOffset&&T.isCharacterFrame(b.focusNode.parentNode)){if(e=b.focusNode.parentNode,c=e.getBoundingClientRect(),a.clientX>c.left&&(c=t(e)))b.focusNode=c.container,b.focusOffset=c.offset,
+d&&(b.anchorNode=b.focusNode,b.anchorOffset=b.focusOffset)}else T.isImage(b.focusNode.firstChild)&&1===b.focusOffset&&T.isCharacterFrame(b.focusNode)&&(c=t(b.focusNode))&&(b.anchorNode=b.focusNode=c.container,b.anchorOffset=b.focusOffset=c.offset);b.anchorNode&&b.focusNode&&(b=W.selectionToRange(b),W.selectRange(b.range,b.hasForwardSelection,0===a.button?a.detail:0));M.focus()}function w(a){var b;if(b=n(a.clientX,a.clientY))a=b.container,b=b.offset,a={anchorNode:a,anchorOffset:b,focusNode:a,focusOffset:b},
+a=W.selectionToRange(a),W.selectRange(a.range,a.hasForwardSelection,2),M.focus()}function F(a){var d=a.target||a.srcElement||null,c,e,f;ma.processRequests();X&&(T.isImage(d)&&T.isCharacterFrame(d.parentNode)&&R.getSelection().isCollapsed?(W.selectImage(d.parentNode),M.focus()):la.isSelectorElement(d)?M.focus():J?(d=b.getSelectedRange(),e=d.collapsed,T.isImage(d.endContainer)&&0===d.endOffset&&T.isCharacterFrame(d.endContainer.parentNode)&&(f=d.endContainer.parentNode,f=t(f))&&(d.setEnd(f.container,
+f.offset),e&&d.collapse(!1)),W.selectRange(d,b.hasForwardSelection(),0===a.button?a.detail:0),M.focus()):ua?x(a):(c=U.cloneEvent(a),S=runtime.setTimeout(function(){x(c)},0)),oa=0,J=X=!1)}function L(a){var b=C.getCursor(c).getSelectedRange();b.collapsed||ca.exportRangeToDataTransfer(a.dataTransfer,b)}function H(){X&&M.focus();oa=0;J=X=!1}function G(a){F(a)}function A(a){var b=a.target||a.srcElement||null,d=null;"annotationRemoveButton"===b.className?(runtime.assert(ja,"Remove buttons are displayed on annotations while annotation editing is disabled in the controller."),
+d=b.parentNode.getElementsByTagNameNS(odf.Namespaces.officens,"annotation").item(0),ea.removeAnnotation(d),M.focus()):"webodf-draggable"!==b.getAttribute("class")&&F(a)}function K(a){(a=a.data)&&(-1===a.indexOf("\n")?fa.insertText(a):ga.paste(a))}function v(a){return function(){a();return!0}}function u(a){return function(b){return C.getCursor(c).getSelectionType()===ops.OdtCursor.RangeSelection?a(b):!0}}function Q(b){M.unsubscribe("keydown",E.handleEvent);M.unsubscribe("keypress",Z.handleEvent);M.unsubscribe("keyup",
+da.handleEvent);M.unsubscribe("copy",q);M.unsubscribe("mousedown",z);M.unsubscribe("mousemove",ma.trigger);M.unsubscribe("mouseup",A);M.unsubscribe("contextmenu",G);M.unsubscribe("dragstart",L);M.unsubscribe("dragend",H);M.unsubscribe("click",pa.handleClick);M.unsubscribe("longpress",w);M.unsubscribe("drag",B);M.unsubscribe("dragstop",y);C.unsubscribe(ops.OdtDocument.signalOperationEnd,na.trigger);C.unsubscribe(ops.Document.signalCursorAdded,ka.registerCursor);C.unsubscribe(ops.Document.signalCursorRemoved,
+ka.removeCursor);C.unsubscribe(ops.OdtDocument.signalOperationEnd,a);b()}var R=runtime.getWindow(),C=k.getOdtDocument(),I=new gui.SessionConstraints,P=new gui.SessionContext(k,c),U=core.DomUtils,T=odf.OdfUtils,ca=new gui.MimeDataExporter,Y=new gui.Clipboard(ca),E=new gui.KeyboardHandler,Z=new gui.KeyboardHandler,da=new gui.KeyboardHandler,X=!1,ha=new odf.ObjectNameGenerator(C.getOdfCanvas().odfContainer(),c),J=!1,ba=null,S,V=null,M=new gui.EventManager(C),ja=g.annotationsEnabled,ea=new gui.AnnotationController(k,
+I,c),aa=new gui.DirectFormattingController(k,I,P,c,ha,g.directTextStylingEnabled,g.directParagraphStylingEnabled),fa=new gui.TextController(k,I,P,c,aa.createCursorStyleOp,aa.createParagraphStyleOps),qa=new gui.ImageController(k,I,P,c,ha),la=new gui.ImageSelector(C.getOdfCanvas()),ia=C.createPositionIterator(C.getRootNode()),ma,na,ga=new gui.PasteController(k,I,P,c),ka=new gui.InputMethodEditor(c,M),oa=0,pa=new gui.HyperlinkClickHandler(C.getOdfCanvas().getElement,E,da),ta=new gui.HyperlinkController(k,
+I,P,c),W=new gui.SelectionController(k,c),va=new gui.MetadataController(k,c),N=gui.KeyboardHandler.Modifier,O=gui.KeyboardHandler.KeyCode,ra=-1!==R.navigator.appVersion.toLowerCase().indexOf("mac"),ua=-1!==["iPad","iPod","iPhone"].indexOf(R.navigator.platform),sa;runtime.assert(null!==R,"Expected to be run in an environment which has a global window, like a browser.");this.undo=r;this.redo=l;this.insertLocalCursor=function(){runtime.assert(void 0===k.getOdtDocument().getCursor(c),"Inserting local cursor a second time.");
+var a=new ops.OpAddCursor;a.init({memberid:c});k.enqueue([a]);M.focus()};this.removeLocalCursor=function(){runtime.assert(void 0!==k.getOdtDocument().getCursor(c),"Removing local cursor without inserting before.");var a=new ops.OpRemoveCursor;a.init({memberid:c});k.enqueue([a])};this.startEditing=function(){ka.subscribe(gui.InputMethodEditor.signalCompositionStart,fa.removeCurrentSelection);ka.subscribe(gui.InputMethodEditor.signalCompositionEnd,K);M.subscribe("beforecut",m);M.subscribe("cut",p);
+M.subscribe("beforepaste",e);M.subscribe("paste",f);V&&V.initialize();M.setEditing(!0);pa.setModifier(ra?N.Meta:N.Ctrl);E.bind(O.Backspace,N.None,v(fa.removeTextByBackspaceKey),!0);E.bind(O.Delete,N.None,fa.removeTextByDeleteKey);E.bind(O.Tab,N.None,u(function(){fa.insertText("\t");return!0}));ra?(E.bind(O.Clear,N.None,fa.removeCurrentSelection),E.bind(O.B,N.Meta,u(aa.toggleBold)),E.bind(O.I,N.Meta,u(aa.toggleItalic)),E.bind(O.U,N.Meta,u(aa.toggleUnderline)),E.bind(O.L,N.MetaShift,u(aa.alignParagraphLeft)),
+E.bind(O.E,N.MetaShift,u(aa.alignParagraphCenter)),E.bind(O.R,N.MetaShift,u(aa.alignParagraphRight)),E.bind(O.J,N.MetaShift,u(aa.alignParagraphJustified)),ja&&E.bind(O.C,N.MetaShift,ea.addAnnotation),E.bind(O.Z,N.Meta,r),E.bind(O.Z,N.MetaShift,l)):(E.bind(O.B,N.Ctrl,u(aa.toggleBold)),E.bind(O.I,N.Ctrl,u(aa.toggleItalic)),E.bind(O.U,N.Ctrl,u(aa.toggleUnderline)),E.bind(O.L,N.CtrlShift,u(aa.alignParagraphLeft)),E.bind(O.E,N.CtrlShift,u(aa.alignParagraphCenter)),E.bind(O.R,N.CtrlShift,u(aa.alignParagraphRight)),
+E.bind(O.J,N.CtrlShift,u(aa.alignParagraphJustified)),ja&&E.bind(O.C,N.CtrlAlt,ea.addAnnotation),E.bind(O.Z,N.Ctrl,r),E.bind(O.Z,N.CtrlShift,l));Z.setDefault(u(function(a){var b;b=null===a.which||void 0===a.which?String.fromCharCode(a.keyCode):0!==a.which&&0!==a.charCode?String.fromCharCode(a.which):null;return!b||a.altKey||a.ctrlKey||a.metaKey?!1:(fa.insertText(b),!0)}));Z.bind(O.Enter,N.None,u(fa.enqueueParagraphSplittingOps))};this.endEditing=function(){ka.unsubscribe(gui.InputMethodEditor.signalCompositionStart,
+fa.removeCurrentSelection);ka.unsubscribe(gui.InputMethodEditor.signalCompositionEnd,K);M.unsubscribe("cut",p);M.unsubscribe("beforecut",m);M.unsubscribe("paste",f);M.unsubscribe("beforepaste",e);M.setEditing(!1);pa.setModifier(N.None);E.bind(O.Backspace,N.None,function(){return!0},!0);E.unbind(O.Delete,N.None);E.unbind(O.Tab,N.None);ra?(E.unbind(O.Clear,N.None),E.unbind(O.B,N.Meta),E.unbind(O.I,N.Meta),E.unbind(O.U,N.Meta),E.unbind(O.L,N.MetaShift),E.unbind(O.E,N.MetaShift),E.unbind(O.R,N.MetaShift),
+E.unbind(O.J,N.MetaShift),ja&&E.unbind(O.C,N.MetaShift),E.unbind(O.Z,N.Meta),E.unbind(O.Z,N.MetaShift)):(E.unbind(O.B,N.Ctrl),E.unbind(O.I,N.Ctrl),E.unbind(O.U,N.Ctrl),E.unbind(O.L,N.CtrlShift),E.unbind(O.E,N.CtrlShift),E.unbind(O.R,N.CtrlShift),E.unbind(O.J,N.CtrlShift),ja&&E.unbind(O.C,N.CtrlAlt),E.unbind(O.Z,N.Ctrl),E.unbind(O.Z,N.CtrlShift));Z.setDefault(null);Z.unbind(O.Enter,N.None)};this.getInputMemberId=function(){return c};this.getSession=function(){return k};this.getSessionConstraints=function(){return I};
+this.setUndoManager=function(a){V&&V.unsubscribe(gui.UndoManager.signalUndoStackChanged,d);if(V=a)V.setDocument(C),V.setPlaybackFunction(k.enqueue),V.subscribe(gui.UndoManager.signalUndoStackChanged,d)};this.getUndoManager=function(){return V};this.getMetadataController=function(){return va};this.getAnnotationController=function(){return ea};this.getDirectFormattingController=function(){return aa};this.getHyperlinkClickHandler=function(){return pa};this.getHyperlinkController=function(){return ta};
+this.getImageController=function(){return qa};this.getSelectionController=function(){return W};this.getTextController=function(){return fa};this.getEventManager=function(){return M};this.getKeyboardHandlers=function(){return{keydown:E,keypress:Z}};this.destroy=function(a){var b=[ma.destroy,na.destroy,aa.destroy,ka.destroy,M.destroy,pa.destroy,ta.destroy,va.destroy,W.destroy,fa.destroy,Q];sa&&b.unshift(sa.destroy);runtime.clearTimeout(S);core.Async.destroyAll(b,a)};ma=core.Task.createRedrawTask(D);
+na=core.Task.createRedrawTask(function(){var a=C.getCursor(c);if(a&&a.getSelectionType()===ops.OdtCursor.RegionSelection&&(a=T.getImageElements(a.getSelectedRange())[0])){la.select(a.parentNode);return}la.clearSelection()});E.bind(O.Left,N.None,u(W.moveCursorToLeft));E.bind(O.Right,N.None,u(W.moveCursorToRight));E.bind(O.Up,N.None,u(W.moveCursorUp));E.bind(O.Down,N.None,u(W.moveCursorDown));E.bind(O.Left,N.Shift,u(W.extendSelectionToLeft));E.bind(O.Right,N.Shift,u(W.extendSelectionToRight));E.bind(O.Up,
+N.Shift,u(W.extendSelectionUp));E.bind(O.Down,N.Shift,u(W.extendSelectionDown));E.bind(O.Home,N.None,u(W.moveCursorToLineStart));E.bind(O.End,N.None,u(W.moveCursorToLineEnd));E.bind(O.Home,N.Ctrl,u(W.moveCursorToDocumentStart));E.bind(O.End,N.Ctrl,u(W.moveCursorToDocumentEnd));E.bind(O.Home,N.Shift,u(W.extendSelectionToLineStart));E.bind(O.End,N.Shift,u(W.extendSelectionToLineEnd));E.bind(O.Up,N.CtrlShift,u(W.extendSelectionToParagraphStart));E.bind(O.Down,N.CtrlShift,u(W.extendSelectionToParagraphEnd));
+E.bind(O.Home,N.CtrlShift,u(W.extendSelectionToDocumentStart));E.bind(O.End,N.CtrlShift,u(W.extendSelectionToDocumentEnd));ra?(E.bind(O.Left,N.Alt,u(W.moveCursorBeforeWord)),E.bind(O.Right,N.Alt,u(W.moveCursorPastWord)),E.bind(O.Left,N.Meta,u(W.moveCursorToLineStart)),E.bind(O.Right,N.Meta,u(W.moveCursorToLineEnd)),E.bind(O.Home,N.Meta,u(W.moveCursorToDocumentStart)),E.bind(O.End,N.Meta,u(W.moveCursorToDocumentEnd)),E.bind(O.Left,N.AltShift,u(W.extendSelectionBeforeWord)),E.bind(O.Right,N.AltShift,
+u(W.extendSelectionPastWord)),E.bind(O.Left,N.MetaShift,u(W.extendSelectionToLineStart)),E.bind(O.Right,N.MetaShift,u(W.extendSelectionToLineEnd)),E.bind(O.Up,N.AltShift,u(W.extendSelectionToParagraphStart)),E.bind(O.Down,N.AltShift,u(W.extendSelectionToParagraphEnd)),E.bind(O.Up,N.MetaShift,u(W.extendSelectionToDocumentStart)),E.bind(O.Down,N.MetaShift,u(W.extendSelectionToDocumentEnd)),E.bind(O.A,N.Meta,u(W.extendSelectionToEntireDocument))):(E.bind(O.Left,N.Ctrl,u(W.moveCursorBeforeWord)),E.bind(O.Right,
+N.Ctrl,u(W.moveCursorPastWord)),E.bind(O.Left,N.CtrlShift,u(W.extendSelectionBeforeWord)),E.bind(O.Right,N.CtrlShift,u(W.extendSelectionPastWord)),E.bind(O.A,N.Ctrl,u(W.extendSelectionToEntireDocument)));ua&&(sa=new gui.IOSSafariSupport(M));M.subscribe("keydown",E.handleEvent);M.subscribe("keypress",Z.handleEvent);M.subscribe("keyup",da.handleEvent);M.subscribe("copy",q);M.subscribe("mousedown",z);M.subscribe("mousemove",ma.trigger);M.subscribe("mouseup",A);M.subscribe("contextmenu",G);M.subscribe("dragstart",
+L);M.subscribe("dragend",H);M.subscribe("click",pa.handleClick);M.subscribe("longpress",w);M.subscribe("drag",B);M.subscribe("dragstop",y);C.subscribe(ops.OdtDocument.signalOperationEnd,na.trigger);C.subscribe(ops.Document.signalCursorAdded,ka.registerCursor);C.subscribe(ops.Document.signalCursorRemoved,ka.removeCursor);C.subscribe(ops.OdtDocument.signalOperationEnd,a)}})();gui.CaretManager=function(h,k){function c(b){return n.hasOwnProperty(b)?n[b]:null}function b(){return Object.keys(n).map(function(b){return n[b]})}function g(b){var c=n[b];c&&(delete n[b],b===h.getInputMemberId()?(m.unsubscribe(ops.OdtDocument.signalProcessingBatchEnd,c.ensureVisible),m.unsubscribe(ops.Document.signalCursorMoved,c.refreshCursorBlinking),q.unsubscribe("compositionupdate",c.handleUpdate),q.unsubscribe("compositionend",c.handleUpdate),q.unsubscribe("focus",c.setFocus),q.unsubscribe("blur",
+c.removeFocus),p.removeEventListener("focus",c.show,!1),p.removeEventListener("blur",c.hide,!1)):m.unsubscribe(ops.OdtDocument.signalProcessingBatchEnd,c.handleUpdate),c.destroy(function(){}))}var n={},p=runtime.getWindow(),m=h.getSession().getOdtDocument(),q=h.getEventManager();this.registerCursor=function(b,c,a){var d=b.getMemberId();b=new gui.Caret(b,k,c,a);n[d]=b;d===h.getInputMemberId()?(runtime.log("Starting to track input on new cursor of "+d),m.subscribe(ops.OdtDocument.signalProcessingBatchEnd,
+b.ensureVisible),m.subscribe(ops.Document.signalCursorMoved,b.refreshCursorBlinking),q.subscribe("compositionupdate",b.handleUpdate),q.subscribe("compositionend",b.handleUpdate),q.subscribe("focus",b.setFocus),q.subscribe("blur",b.removeFocus),p.addEventListener("focus",b.show,!1),p.addEventListener("blur",b.hide,!1),b.setOverlayElement(q.getEventTrap())):m.subscribe(ops.OdtDocument.signalProcessingBatchEnd,b.handleUpdate);return b};this.getCaret=c;this.getCarets=b;this.destroy=function(c){var e=
+b().map(function(a){return a.destroy});h.getSelectionController().setCaretXPositionLocator(null);m.unsubscribe(ops.Document.signalCursorRemoved,g);n={};core.Async.destroyAll(e,c)};h.getSelectionController().setCaretXPositionLocator(function(){var b=c(h.getInputMemberId()),e;b&&(e=b.getBoundingClientRect());return e?e.right:void 0});m.subscribe(ops.Document.signalCursorRemoved,g)};gui.EditInfoHandle=function(h){var k=[],c,b=h.ownerDocument,g=b.documentElement.namespaceURI;this.setEdits=function(h){k=h;var p,m,q,f;core.DomUtils.removeAllChildNodes(c);for(h=0;h<k.length;h+=1)p=b.createElementNS(g,"div"),p.className="editInfo",m=b.createElementNS(g,"span"),m.className="editInfoColor",m.setAttributeNS("urn:webodf:names:editinfo","editinfo:memberid",k[h].memberid),q=b.createElementNS(g,"span"),q.className="editInfoAuthor",q.setAttributeNS("urn:webodf:names:editinfo","editinfo:memberid",
+k[h].memberid),f=b.createElementNS(g,"span"),f.className="editInfoTime",f.setAttributeNS("urn:webodf:names:editinfo","editinfo:memberid",k[h].memberid),f.appendChild(b.createTextNode(k[h].time.toString())),p.appendChild(m),p.appendChild(q),p.appendChild(f),c.appendChild(p)};this.show=function(){c.style.display="block"};this.hide=function(){c.style.display="none"};this.destroy=function(b){h.removeChild(c);b()};c=b.createElementNS(g,"div");c.setAttribute("class","editInfoHandle");c.style.display="none";
+h.appendChild(c)};ops.EditInfo=function(h,k){function c(){var b=[],c;for(c in g)g.hasOwnProperty(c)&&b.push({memberid:c,time:g[c].time});b.sort(function(b,c){return b.time-c.time});return b}var b,g={};this.getNode=function(){return b};this.getOdtDocument=function(){return k};this.getEdits=function(){return g};this.getSortedEdits=function(){return c()};this.addEdit=function(b,c){g[b]={time:c}};this.clearEdits=function(){g={}};this.destroy=function(c){h.parentNode&&h.removeChild(b);c()};b=k.getDOMDocument().createElementNS("urn:webodf:names:editinfo",
+"editinfo");h.insertBefore(b,h.firstChild)};gui.EditInfoMarker=function(h,k){function c(b,a){return runtime.setTimeout(function(){p.style.opacity=b},a)}var b=this,g,n,p,m,q,f;this.addEdit=function(b,a){var d=Date.now()-a;h.addEdit(b,a);n.setEdits(h.getSortedEdits());p.setAttributeNS("urn:webodf:names:editinfo","editinfo:memberid",b);runtime.clearTimeout(q);runtime.clearTimeout(f);1E4>d?(m=c(1,0),q=c(.5,1E4-d),f=c(.2,2E4-d)):1E4<=d&&2E4>d?(m=c(.5,0),f=c(.2,2E4-d)):m=c(.2,0)};this.getEdits=function(){return h.getEdits()};this.clearEdits=function(){h.clearEdits();
+n.setEdits([]);p.hasAttributeNS("urn:webodf:names:editinfo","editinfo:memberid")&&p.removeAttributeNS("urn:webodf:names:editinfo","editinfo:memberid")};this.getEditInfo=function(){return h};this.show=function(){p.style.display="block"};this.hide=function(){b.hideHandle();p.style.display="none"};this.showHandle=function(){n.show()};this.hideHandle=function(){n.hide()};this.destroy=function(b){runtime.clearTimeout(m);runtime.clearTimeout(q);runtime.clearTimeout(f);g.removeChild(p);n.destroy(function(a){a?
+b(a):h.destroy(b)})};(function(){var c=h.getOdtDocument().getDOMDocument();p=c.createElementNS(c.documentElement.namespaceURI,"div");p.setAttribute("class","editInfoMarker");p.onmouseover=function(){b.showHandle()};p.onmouseout=function(){b.hideHandle()};g=h.getNode();g.appendChild(p);n=new gui.EditInfoHandle(g);k||b.hide()})()};gui.HyperlinkTooltipView=function(h,k){var c=core.DomUtils,b=odf.OdfUtils,g=runtime.getWindow(),n,p,m;runtime.assert(null!==g,"Expected to be run in an environment which has a global window, like a browser.");this.showTooltip=function(q){var f=q.target||q.srcElement,e=h.getSizer(),a=h.getZoomLevel(),d;a:{for(;f;){if(b.isHyperlink(f))break a;if(b.isParagraph(f)||b.isInlineRoot(f))break;f=f.parentNode}f=null}if(f){c.containsNode(e,m)||e.appendChild(m);d=p;var r;switch(k()){case gui.KeyboardHandler.Modifier.Ctrl:r=
+runtime.tr("Ctrl-click to follow link");break;case gui.KeyboardHandler.Modifier.Meta:r=runtime.tr("\u2318-click to follow link");break;default:r=""}d.textContent=r;n.textContent=b.getHyperlinkTarget(f);m.style.display="block";d=g.innerWidth-m.offsetWidth-15;f=q.clientX>d?d:q.clientX+15;d=g.innerHeight-m.offsetHeight-10;q=q.clientY>d?d:q.clientY+10;e=e.getBoundingClientRect();f=(f-e.left)/a;q=(q-e.top)/a;m.style.left=f+"px";m.style.top=q+"px"}};this.hideTooltip=function(){m.style.display="none"};this.destroy=
+function(b){m.parentNode&&m.parentNode.removeChild(m);b()};(function(){var b=h.getElement().ownerDocument;n=b.createElement("span");p=b.createElement("span");n.className="webodf-hyperlinkTooltipLink";p.className="webodf-hyperlinkTooltipText";m=b.createElement("div");m.className="webodf-hyperlinkTooltip";m.appendChild(n);m.appendChild(p);h.getElement().appendChild(m)})()};gui.OdfFieldView=function(h){function k(){var b=odf.OdfSchema.getFields().map(function(b){return b.replace(":","|")}),c=b.join(",\n")+"\n{ background-color: #D0D0D0; }\n",b=b.map(function(b){return b+":empty::after"}).join(",\n")+"\n{ content:' '; white-space: pre; }\n";return c+"\n"+b}var c,b=h.getElement().ownerDocument;this.showFieldHighlight=function(){c.appendChild(b.createTextNode(k()))};this.hideFieldHighlight=function(){for(var b=c.sheet,h=b.cssRules;h.length;)b.deleteRule(h.length-1)};this.destroy=
+function(b){c.parentNode&&c.parentNode.removeChild(c);b()};c=function(){var c=b.getElementsByTagName("head").item(0),h=b.createElement("style"),k="";h.type="text/css";h.media="screen, print, handheld, projection";odf.Namespaces.forEachPrefix(function(b,c){k+="@namespace "+b+" url("+c+");\n"});h.appendChild(b.createTextNode(k));c.appendChild(h);return h}()};gui.ShadowCursor=function(h){var k=h.getDOMDocument().createRange(),c=!0;this.removeFromDocument=function(){};this.getMemberId=function(){return gui.ShadowCursor.ShadowCursorMemberId};this.getSelectedRange=function(){return k};this.setSelectedRange=function(b,g){k=b;c=!1!==g};this.hasForwardSelection=function(){return c};this.getDocument=function(){return h};this.getSelectionType=function(){return ops.OdtCursor.RangeSelection};k.setStart(h.getRootNode(),0)};gui.ShadowCursor.ShadowCursorMemberId="";gui.SelectionView=function(h){};gui.SelectionView.prototype.rerender=function(){};gui.SelectionView.prototype.show=function(){};gui.SelectionView.prototype.hide=function(){};gui.SelectionView.prototype.destroy=function(h){};gui.SelectionViewManager=function(h){function k(){return Object.keys(c).map(function(b){return c[b]})}var c={};this.getSelectionView=function(b){return c.hasOwnProperty(b)?c[b]:null};this.getSelectionViews=k;this.removeSelectionView=function(b){c.hasOwnProperty(b)&&(c[b].destroy(function(){}),delete c[b])};this.hideSelectionView=function(b){c.hasOwnProperty(b)&&c[b].hide()};this.showSelectionView=function(b){c.hasOwnProperty(b)&&c[b].show()};this.rerenderSelectionViews=function(){Object.keys(c).forEach(function(b){c[b].rerender()})};
+this.registerCursor=function(b,g){var k=b.getMemberId(),p=new h(b);g?p.show():p.hide();return c[k]=p};this.destroy=function(b){function c(k,m){m?b(m):k<h.length?h[k].destroy(function(b){c(k+1,b)}):b()}var h=k();c(0,void 0)}};gui.SessionViewOptions=function(){this.caretBlinksOnRangeSelect=this.caretAvatarsInitiallyVisible=this.editInfoMarkersInitiallyVisible=!0};
+(function(){function h(h,c){return void 0!==h?Boolean(h):c}gui.SessionView=function(k,c,b,g,n,p){function m(a){a.memberId===c&&L.getViewport().scrollIntoView(a.annotation.getBoundingClientRect())}function q(){var a=document.getElementsByTagName("head").item(0),b=document.createElement("style");b.type="text/css";b.media="screen, print, handheld, projection";a.appendChild(b);return b}function f(a,b,d){function e(b,d,c){d=b+'[editinfo|memberid="'+a+'"]'+c+d;a:{var f=t.firstChild;for(b=b+'[editinfo|memberid="'+
+a+'"]'+c+"{";f;){if(f.nodeType===Node.TEXT_NODE&&0===f.data.indexOf(b)){b=f;break a}f=f.nextSibling}b=null}b?b.data=d:t.appendChild(document.createTextNode(d))}e("div.editInfoMarker","{ background-color: "+d+"; }","");e("span.editInfoColor","{ background-color: "+d+"; }","");e("span.editInfoAuthor",'{ content: "'+b+'"; }',":before");e("dc|creator","{ background-color: "+d+"; }","");e(".webodf-selectionOverlay","{ fill: "+d+"; stroke: "+d+";}","");a===c&&(e(".webodf-touchEnabled .webodf-selectionOverlay",
+"{ display: block; }"," > .webodf-draggable"),a=gui.ShadowCursor.ShadowCursorMemberId,e(".webodf-selectionOverlay","{ fill: "+d+"; stroke: "+d+";}",""),e(".webodf-touchEnabled .webodf-selectionOverlay","{ display: block; }"," > .webodf-draggable"))}function e(a){var b,d;for(d in w)w.hasOwnProperty(d)&&(b=w[d],a?b.show():b.hide())}function a(a){n.getCarets().forEach(function(b){a?b.showHandle():b.hideHandle()})}function d(a){var b=a.getMemberId();a=a.getProperties();f(b,a.fullName,a.color)}function r(a){var d=
+a.getMemberId(),c=b.getOdtDocument().getMember(d).getProperties();n.registerCursor(a,A,K);p.registerCursor(a,!0);if(a=n.getCaret(d))a.setAvatarImageUrl(c.imageUrl),a.setColor(c.color);runtime.log("+++ View here +++ eagerly created an Caret for '"+d+"'! +++")}function l(a){a=a.getMemberId();var b=p.getSelectionView(c),d=p.getSelectionView(gui.ShadowCursor.ShadowCursorMemberId),e=n.getCaret(c);a===c?(d.hide(),b&&b.show(),e&&e.show()):a===gui.ShadowCursor.ShadowCursorMemberId&&(d.show(),b&&b.hide(),
+e&&e.hide())}function B(a){p.removeSelectionView(a)}function y(a){var d=a.paragraphElement,c=a.memberId;a=a.timeStamp;var e,f="",g=d.getElementsByTagNameNS("urn:webodf:names:editinfo","editinfo").item(0);g?(f=g.getAttributeNS("urn:webodf:names:editinfo","id"),e=w[f]):(f=Math.random().toString(),e=new ops.EditInfo(d,b.getOdtDocument()),e=new gui.EditInfoMarker(e,G),g=d.getElementsByTagNameNS("urn:webodf:names:editinfo","editinfo").item(0),g.setAttributeNS("urn:webodf:names:editinfo","id",f),w[f]=e);
+e.addEdit(c,new Date(a));H.trigger()}function D(){var a;x.hasChildNodes()&&core.DomUtils.removeAllChildNodes(x);!0===g.getState(gui.CommonConstraints.EDIT.ANNOTATIONS.ONLY_DELETE_OWN)&&(a=b.getOdtDocument().getMember(c))&&(a=a.getProperties().fullName,x.appendChild(document.createTextNode(".annotationWrapper:not([creator = '"+a+"']) .annotationRemoveButton { display: none; }")))}function z(a){var b=Object.keys(w).map(function(a){return w[a]});F.unsubscribe(ops.Document.signalMemberAdded,d);F.unsubscribe(ops.Document.signalMemberUpdated,
+d);F.unsubscribe(ops.Document.signalCursorAdded,r);F.unsubscribe(ops.Document.signalCursorRemoved,B);F.unsubscribe(ops.OdtDocument.signalParagraphChanged,y);F.unsubscribe(ops.Document.signalCursorMoved,l);F.unsubscribe(ops.OdtDocument.signalParagraphChanged,p.rerenderSelectionViews);F.unsubscribe(ops.OdtDocument.signalTableAdded,p.rerenderSelectionViews);F.unsubscribe(ops.OdtDocument.signalParagraphStyleModified,p.rerenderSelectionViews);g.unsubscribe(gui.CommonConstraints.EDIT.ANNOTATIONS.ONLY_DELETE_OWN,
+D);F.unsubscribe(ops.Document.signalMemberAdded,D);F.unsubscribe(ops.Document.signalMemberUpdated,D);t.parentNode.removeChild(t);x.parentNode.removeChild(x);(function R(d,c){c?a(c):d<b.length?b[d].destroy(function(a){R(d+1,a)}):a()})(0,void 0)}var t,x,w={},F,L,H,G=h(k.editInfoMarkersInitiallyVisible,!0),A=h(k.caretAvatarsInitiallyVisible,!0),K=h(k.caretBlinksOnRangeSelect,!0);this.showEditInfoMarkers=function(){G||(G=!0,e(G))};this.hideEditInfoMarkers=function(){G&&(G=!1,e(G))};this.showCaretAvatars=
+function(){A||(A=!0,a(A))};this.hideCaretAvatars=function(){A&&(A=!1,a(A))};this.getSession=function(){return b};this.getCaret=function(a){return n.getCaret(a)};this.destroy=function(a){var b=[H.destroy,z];F.unsubscribe(ops.OdtDocument.signalAnnotationAdded,m);core.Async.destroyAll(b,a)};F=b.getOdtDocument();L=F.getOdfCanvas();F.subscribe(ops.OdtDocument.signalAnnotationAdded,m);F.subscribe(ops.Document.signalMemberAdded,d);F.subscribe(ops.Document.signalMemberUpdated,d);F.subscribe(ops.Document.signalCursorAdded,
+r);F.subscribe(ops.Document.signalCursorRemoved,B);F.subscribe(ops.OdtDocument.signalParagraphChanged,y);F.subscribe(ops.Document.signalCursorMoved,l);F.subscribe(ops.OdtDocument.signalParagraphChanged,p.rerenderSelectionViews);F.subscribe(ops.OdtDocument.signalTableAdded,p.rerenderSelectionViews);F.subscribe(ops.OdtDocument.signalParagraphStyleModified,p.rerenderSelectionViews);g.subscribe(gui.CommonConstraints.EDIT.ANNOTATIONS.ONLY_DELETE_OWN,D);F.subscribe(ops.Document.signalMemberAdded,D);F.subscribe(ops.Document.signalMemberUpdated,
+D);t=q();t.appendChild(document.createTextNode("@namespace editinfo url(urn:webodf:names:editinfo);"));t.appendChild(document.createTextNode("@namespace dc url(http://purl.org/dc/elements/1.1/);"));x=q();D();H=core.Task.createRedrawTask(function(){var a=L.getAnnotationViewManager();a&&(a.rehighlightAnnotations(),F.fixCursorPositions())})}})();gui.SvgSelectionView=function(h){function k(){var a=d.getRootNode();r!==a&&(r=a,l=d.getCanvas().getSizer(),l.appendChild(y),y.setAttribute("class","webodf-selectionOverlay"),z.setAttribute("class","webodf-draggable"),t.setAttribute("class","webodf-draggable"),z.setAttribute("end","left"),t.setAttribute("end","right"),z.setAttribute("r",8),t.setAttribute("r",8),y.appendChild(D),y.appendChild(z),y.appendChild(t))}function c(a){a=a.getBoundingClientRect();return Boolean(a&&0!==a.height)}function b(a){var b=
+x.getTextElements(a,!0,!1),d=a.cloneRange(),e=a.cloneRange();a=a.cloneRange();if(!b.length)return null;var f;a:{f=0;var g=b[f],h=d.startContainer===g?d.startOffset:0,l=h;d.setStart(g,h);for(d.setEnd(g,l);!c(d);){if(g.nodeType===Node.ELEMENT_NODE&&l<g.childNodes.length)l=g.childNodes.length;else if(g.nodeType===Node.TEXT_NODE&&l<g.length)l+=1;else if(b[f])g=b[f],f+=1,h=l=0;else{f=!1;break a}d.setStart(g,h);d.setEnd(g,l)}f=!0}if(!f)return null;a:{f=b.length-1;g=b[f];l=h=e.endContainer===g?e.endOffset:
+g.nodeType===Node.TEXT_NODE?g.length:g.childNodes.length;e.setStart(g,h);for(e.setEnd(g,l);!c(e);){if(g.nodeType===Node.ELEMENT_NODE&&0<h)h=0;else if(g.nodeType===Node.TEXT_NODE&&0<h)--h;else if(b[f])g=b[f],--f,h=l=g.length||g.childNodes.length;else{b=!1;break a}e.setStart(g,h);e.setEnd(g,l)}b=!0}if(!b)return null;a.setStart(d.startContainer,d.startOffset);a.setEnd(e.endContainer,e.endOffset);return{firstRange:d,lastRange:e,fillerRange:a}}function g(a,b){var d={};d.top=Math.min(a.top,b.top);d.left=
+Math.min(a.left,b.left);d.right=Math.max(a.right,b.right);d.bottom=Math.max(a.bottom,b.bottom);d.width=d.right-d.left;d.height=d.bottom-d.top;return d}function n(a,b){b&&0<b.width&&0<b.height&&(a=a?g(a,b):b);return a}function p(a){function b(a){H.setUnfilteredPosition(a,0);return y.acceptNode(a)===G&&t.acceptPosition(H)===G?G:A}function c(a){var d=null;b(a)===G&&(d=w.getBoundingClientRect(a));return d}var e=a.commonAncestorContainer,f=a.startContainer,g=a.endContainer,h=a.startOffset,l=a.endOffset,
+k,r,m=null,p,q=B.createRange(),t,y=new odf.OdfNodeFilter,z;if(f===e||g===e)return q=a.cloneRange(),m=q.getBoundingClientRect(),q.detach(),m;for(a=f;a.parentNode!==e;)a=a.parentNode;for(r=g;r.parentNode!==e;)r=r.parentNode;t=d.createRootFilter(f);for(e=a.nextSibling;e&&e!==r;)p=c(e),m=n(m,p),e=e.nextSibling;if(x.isParagraph(a))m=n(m,w.getBoundingClientRect(a));else if(a.nodeType===Node.TEXT_NODE)e=a,q.setStart(e,h),q.setEnd(e,e===r?l:e.length),p=q.getBoundingClientRect(),m=n(m,p);else for(z=B.createTreeWalker(a,
+NodeFilter.SHOW_TEXT,b,!1),e=z.currentNode=f;e&&e!==g;)q.setStart(e,h),q.setEnd(e,e.length),p=q.getBoundingClientRect(),m=n(m,p),k=e,h=0,e=z.nextNode();k||(k=f);if(x.isParagraph(r))m=n(m,w.getBoundingClientRect(r));else if(r.nodeType===Node.TEXT_NODE)e=r,q.setStart(e,e===a?h:0),q.setEnd(e,l),p=q.getBoundingClientRect(),m=n(m,p);else for(z=B.createTreeWalker(r,NodeFilter.SHOW_TEXT,b,!1),e=z.currentNode=g;e&&e!==k;)if(q.setStart(e,0),q.setEnd(e,l),p=q.getBoundingClientRect(),m=n(m,p),e=z.previousNode())l=
+e.length;return m}function m(a,b){var d=a.getBoundingClientRect(),c={width:0};c.top=d.top;c.bottom=d.bottom;c.height=d.height;c.left=c.right=b?d.right:d.left;return c}function q(){var a=h.getSelectedRange(),d;if(d=L&&h.getSelectionType()===ops.OdtCursor.RangeSelection&&!a.collapsed){k();var c=w.getBoundingClientRect(l),e=F.getZoomLevel(),a=b(a),f,r,n,q,B,A;if(a){d=a.firstRange;f=a.lastRange;r=a.fillerRange;n=w.translateRect(m(d,!1),c,e);B=w.translateRect(m(f,!0),c,e);q=(q=p(r))?w.translateRect(q,
+c,e):g(n,B);A=q.left;q=n.left+Math.max(0,q.width-(n.left-q.left));c=Math.min(n.top,B.top);e=B.top+B.height;A=[{x:n.left,y:c+n.height},{x:n.left,y:c},{x:q,y:c},{x:q,y:e-B.height},{x:B.right,y:e-B.height},{x:B.right,y:e},{x:A,y:e},{x:A,y:c+n.height},{x:n.left,y:c+n.height}];q="";var x;for(x=0;x<A.length;x+=1)q+=A[x].x+","+A[x].y+" ";D.setAttribute("points",q);z.setAttribute("cx",n.left);z.setAttribute("cy",c+n.height/2);t.setAttribute("cx",B.right);t.setAttribute("cy",e-B.height/2);d.detach();f.detach();
+r.detach()}d=Boolean(a)}y.style.display=d?"block":"none"}function f(a){L&&a===h&&K.trigger()}function e(a){a=8/a;z.setAttribute("r",a);t.setAttribute("r",a)}function a(a){l.removeChild(y);l.classList.remove("webodf-virtualSelections");h.getDocument().unsubscribe(ops.Document.signalCursorMoved,f);F.unsubscribe(gui.ZoomHelper.signalZoomChanged,e);a()}var d=h.getDocument(),r,l,B=d.getDOMDocument(),y=B.createElementNS("http://www.w3.org/2000/svg","svg"),D=B.createElementNS("http://www.w3.org/2000/svg",
+"polygon"),z=B.createElementNS("http://www.w3.org/2000/svg","circle"),t=B.createElementNS("http://www.w3.org/2000/svg","circle"),x=odf.OdfUtils,w=core.DomUtils,F=d.getCanvas().getZoomHelper(),L=!0,H=h.getDocument().createPositionIterator(d.getRootNode()),G=NodeFilter.FILTER_ACCEPT,A=NodeFilter.FILTER_REJECT,K;this.rerender=function(){L&&K.trigger()};this.show=function(){L=!0;K.trigger()};this.hide=function(){L=!1;K.trigger()};this.destroy=function(b){core.Async.destroyAll([K.destroy,a],b)};(function(){var a=
+h.getMemberId();K=core.Task.createRedrawTask(q);k();y.setAttributeNS("urn:webodf:names:editinfo","editinfo:memberid",a);l.classList.add("webodf-virtualSelections");h.getDocument().subscribe(ops.Document.signalCursorMoved,f);F.subscribe(gui.ZoomHelper.signalZoomChanged,e);e(F.getZoomLevel())})()};gui.UndoStateRules=function(){function h(b,c){var h=b.length;this.previous=function(){for(--h;0<=h;--h)if(c(b[h]))return b[h];return null}}function k(b){b=b.spec();var c;b.hasOwnProperty("position")&&(c=b.position);return c}function c(b){return b.isEdit}function b(b,c,h){if(!h)return h=k(b)-k(c),0===h||1===Math.abs(h);b=k(b);c=k(c);h=k(h);return b-c===c-h}this.isEditOperation=c;this.isPartOfOperationSet=function(g,k){var p=void 0!==g.group,m;if(!g.isEdit||0===k.length)return!0;m=k[k.length-1];if(p&&
+g.group===m.group)return!0;a:switch(g.spec().optype){case "RemoveText":case "InsertText":m=!0;break a;default:m=!1}if(m&&k.some(c)){if(p){var q;p=g.spec().optype;m=new h(k,c);var f=m.previous(),e=null,a,d;runtime.assert(Boolean(f),"No edit operations found in state");d=f.group;runtime.assert(void 0!==d,"Operation has no group");for(a=1;f&&f.group===d;){if(p===f.spec().optype){q=f;break}f=m.previous()}if(q){for(f=m.previous();f;){if(f.group!==d){if(2===a)break;d=f.group;a+=1}if(p===f.spec().optype){e=
+f;break}f=m.previous()}q=b(g,q,e)}else q=!1;return q}q=g.spec().optype;p=new h(k,c);m=p.previous();runtime.assert(Boolean(m),"No edit operations found in state");q=q===m.spec().optype?b(g,m,p.previous()):!1;return q}return!1}};(function(){function h(b,c){this.mainId=void 0!==b?b:-1;this.subId=void 0!==c?c:-1}function k(b,g,k){function p(c,a){return c+(b.isEditOperation(a)?1:0)}var m,q,f;this.addOperation=function(c){b.isEditOperation(c)&&(f+=1);q.push(c)};this.isNextStateId=function(b){return b.mainId===m&&b.subId===f};this.getNextStateId=function(){return new h(m,f)};this.getOperations=function(){return q};m=c+=1;q=g||[];f=g&&k?g.reduce(p,0):0}var c=0;gui.TrivialUndoManager=function(b){function c(){return!0!==x.isNextStateId(t)}
+function n(a){a=a.getOperations();0<a.length&&(G=!0,D(a),G=!1)}function p(){L.emit(gui.UndoManager.signalUndoStackChanged,{undoAvailable:r.hasUndoStates(),redoAvailable:r.hasRedoStates()})}function m(a){var b=c();a!==b&&L.emit(gui.UndoManager.signalDocumentModifiedChanged,b)}function q(){x!==y&&x!==w[w.length-1]&&w.push(x)}function f(a){var b=a.previousSibling||a.nextSibling;a.parentNode.removeChild(a);l.normalizeTextNodes(b)}function e(a){return Object.keys(a).map(function(b){return a[b]})}function a(a){function b(a){var e=
+a.spec();if(f[e.memberid])switch(e.optype){case "AddCursor":d[e.memberid]||(d[e.memberid]=a,delete f[e.memberid],--g);break;case "MoveCursor":c[e.memberid]||(c[e.memberid]=a)}}var d={},c={},f={},g,h;h=a.pop();z.getMemberIds().forEach(function(a){f[a]=!0});for(g=Object.keys(f).length;h&&0<g;)h=h.getOperations(),h.reverse(),h.forEach(b),h=a.pop();return new k(H,e(d).concat(e(c)))}function d(){var b=c(),d=B=z.cloneDocumentElement();l.getElementsByTagNameNS(d,"urn:webodf:names:cursor","cursor").forEach(f);
+l.getElementsByTagNameNS(d,"urn:webodf:names:cursor","anchor").forEach(f);q();x=y=a([y].concat(w));w.length=0;F.length=0;b||(t=x.getNextStateId());p();m(b)}var r=this,l=core.DomUtils,B,y,D,z,t,x,w=[],F=[],L=new core.EventNotifier([gui.UndoManager.signalUndoStackChanged,gui.UndoManager.signalUndoStateCreated,gui.UndoManager.signalUndoStateModified,gui.UndoManager.signalDocumentModifiedChanged,gui.TrivialUndoManager.signalDocumentRootReplaced]),H=b||new gui.UndoStateRules,G=!1;this.subscribe=function(a,
+b){L.subscribe(a,b)};this.unsubscribe=function(a,b){L.unsubscribe(a,b)};this.isDocumentModified=c;this.setDocumentModified=function(a){c()!==a&&(t=a?new h:x.getNextStateId(),L.emit(gui.UndoManager.signalDocumentModifiedChanged,a))};this.hasUndoStates=function(){return 0<w.length};this.hasRedoStates=function(){return 0<F.length};this.setDocument=function(a){z=a};this.purgeInitialState=function(){var a=c();w.length=0;F.length=0;x=y=new k(H);t=x.getNextStateId();B=null;p();m(a)};this.setInitialState=
+d;this.initialize=function(){B||d()};this.setPlaybackFunction=function(a){D=a};this.onOperationExecuted=function(a){if(!G){var b=c();H.isEditOperation(a)&&(x===y||0<F.length)||!H.isPartOfOperationSet(a,x.getOperations())?(F.length=0,q(),x=new k(H,[a],!0),w.push(x),L.emit(gui.UndoManager.signalUndoStateCreated,{operations:x.getOperations()}),p()):(x.addOperation(a),L.emit(gui.UndoManager.signalUndoStateModified,{operations:x.getOperations()}));m(b)}};this.moveForward=function(a){for(var b=0,d=c(),
+e;a&&F.length;)e=F.pop(),w.push(e),n(e),--a,b+=1;b&&(x=w[w.length-1],p(),m(d));return b};this.moveBackward=function(a){for(var b=0,d=c();a&&w.length;)F.push(w.pop()),--a,b+=1;b&&(z.getMemberIds().forEach(function(a){z.removeCursor(a)}),z.setDocumentElement(B.cloneNode(!0)),L.emit(gui.TrivialUndoManager.signalDocumentRootReplaced,{}),n(y),w.forEach(n),x=w[w.length-1]||y,p(),m(d));return b};x=y=new k(H);t=x.getNextStateId()};gui.TrivialUndoManager.signalDocumentRootReplaced="documentRootReplaced"})();odf.GraphicProperties=function(h,k,c){var b=this,g=odf.Namespaces.stylens,n=odf.Namespaces.svgns;this.verticalPos=function(){return b.data.value("verticalPos")};this.verticalRel=function(){return b.data.value("verticalRel")};this.horizontalPos=function(){return b.data.value("horizontalPos")};this.horizontalRel=function(){return b.data.value("horizontalRel")};this.strokeWidth=function(){return b.data.value("strokeWidth")};b.data=new odf.LazyStyleProperties(void 0===c?void 0:c.data,{verticalPos:function(){var b=
+h.getAttributeNS(g,"vertical-pos");return""===b?void 0:b},verticalRel:function(){var b=h.getAttributeNS(g,"vertical-rel");return""===b?void 0:b},horizontalPos:function(){var b=h.getAttributeNS(g,"horizontal-pos");return""===b?void 0:b},horizontalRel:function(){var b=h.getAttributeNS(g,"horizontal-rel");return""===b?void 0:b},strokeWidth:function(){var b=h.getAttributeNS(n,"stroke-width");return k.parseLength(b)}})};
+odf.ComputedGraphicProperties=function(){var h;this.setGraphicProperties=function(k){h=k};this.verticalPos=function(){return h&&h.verticalPos()||"from-top"};this.verticalRel=function(){return h&&h.verticalRel()||"page"};this.horizontalPos=function(){return h&&h.horizontalPos()||"from-left"};this.horizontalRel=function(){return h&&h.horizontalRel()||"page"}};odf.PageLayoutProperties=function(h,k,c){var b=this,g=odf.Namespaces.fons;this.pageHeight=function(){return b.data.value("pageHeight")||1123};this.pageWidth=function(){return b.data.value("pageWidth")||794};b.data=new odf.LazyStyleProperties(void 0===c?void 0:c.data,{pageHeight:function(){var b;h&&(b=h.getAttributeNS(g,"page-height"),b=k.parseLength(b));return b},pageWidth:function(){var b;h&&(b=h.getAttributeNS(g,"page-width"),b=k.parseLength(b));return b}})};
+odf.PageLayout=function(h,k,c){var b=null;h&&(b=k.getPropertiesElement("page-layout-properties",h));this.pageLayout=new odf.PageLayoutProperties(b,k,c&&c.pageLayout)};odf.PageLayoutCache=function(){};odf.PageLayoutCache.prototype.getPageLayout=function(h){};odf.PageLayoutCache.prototype.getDefaultPageLayout=function(){};odf.ParagraphProperties=function(h,k,c){var b=this,g=odf.Namespaces.fons;this.marginTop=function(){return b.data.value("marginTop")};b.data=new odf.LazyStyleProperties(void 0===c?void 0:c.data,{marginTop:function(){var b=h.getAttributeNS(g,"margin-top");return k.parsePositiveLengthOrPercent(b,"marginTop",c&&c.data)}})};
+odf.ComputedParagraphProperties=function(){var h={},k=[];this.setStyleChain=function(c){k=c;h={}};this.marginTop=function(){var c,b;if(h.hasOwnProperty("marginTop"))c=h.marginTop;else{for(b=0;void 0===c&&b<k.length;b+=1)c=k[b].marginTop();h.marginTop=c}return c||0}};odf.TextProperties=function(h,k,c){var b=this,g=odf.Namespaces.fons;this.fontSize=function(){return b.data.value("fontSize")};b.data=new odf.LazyStyleProperties(void 0===c?void 0:c.data,{fontSize:function(){var b=h.getAttributeNS(g,"font-size");return k.parsePositiveLengthOrPercent(b,"fontSize",c&&c.data)}})};
+odf.ComputedTextProperties=function(){var h={},k=[];this.setStyleChain=function(c){k=c;h={}};this.fontSize=function(){var c,b;if(h.hasOwnProperty("fontSize"))c=h.fontSize;else{for(b=0;void 0===c&&b<k.length;b+=1)c=k[b].fontSize();h.fontSize=c}return c||12}};odf.MasterPage=function(h,k){var c;h?(c=h.getAttributeNS(odf.Namespaces.stylens,"page-layout-name"),this.pageLayout=k.getPageLayout(c)):this.pageLayout=k.getDefaultPageLayout()};odf.MasterPageCache=function(){};odf.MasterPageCache.prototype.getMasterPage=function(h){};
+odf.StylePileEntry=function(h,k,c,b){this.masterPage=function(){var b=h.getAttributeNS(odf.Namespaces.stylens,"master-page-name"),k=null;b&&(k=c.getMasterPage(b));return k};(function(c){var n=h.getAttributeNS(odf.Namespaces.stylens,"family"),p=null;if("graphic"===n||"chart"===n)c.graphic=void 0===b?void 0:b.graphic,p=k.getPropertiesElement("graphic-properties",h,p),null!==p&&(c.graphic=new odf.GraphicProperties(p,k,c.graphic));if("paragraph"===n||"table-cell"===n||"graphic"===n||"presentation"===
+n||"chart"===n)c.paragraph=void 0===b?void 0:b.paragraph,p=k.getPropertiesElement("paragraph-properties",h,p),null!==p&&(c.paragraph=new odf.ParagraphProperties(p,k,c.paragraph));if("text"===n||"paragraph"===n||"table-cell"===n||"graphic"===n||"presentation"===n||"chart"===n)c.text=void 0===b?void 0:b.text,p=k.getPropertiesElement("text-properties",h,p),null!==p&&(c.text=new odf.TextProperties(p,k,c.text))})(this)};
+odf.StylePile=function(h,k){function c(c,a){var d,g;c.hasAttributeNS(b,"parent-style-name")&&(g=c.getAttributeNS(b,"parent-style-name"),-1===a.indexOf(g)&&(d=f(g,a)));return new odf.StylePileEntry(c,h,k,d)}var b=odf.Namespaces.stylens,g={},n={},p,m={},q={},f;f=function(b,a){var d=m[b],f;!d&&(f=g[b])&&(a.push(b),d=c(f,a),m[b]=d);return d};this.getStyle=function(b){var a=q[b]||m[b],d,f=[];a||(d=n[b],d||(d=g[b])&&f.push(b),d&&(a=c(d,f)));return a};this.addCommonStyle=function(c){var a;c.hasAttributeNS(b,
+"name")&&(a=c.getAttributeNS(b,"name"),g.hasOwnProperty(a)||(g[a]=c))};this.addAutomaticStyle=function(c){var a;c.hasAttributeNS(b,"name")&&(a=c.getAttributeNS(b,"name"),n.hasOwnProperty(a)||(n[a]=c))};this.setDefaultStyle=function(b){void 0===p&&(p=c(b,[]))};this.getDefaultStyle=function(){return p}};odf.ComputedGraphicStyle=function(){this.text=new odf.ComputedTextProperties;this.paragraph=new odf.ComputedParagraphProperties;this.graphic=new odf.ComputedGraphicProperties};
+odf.ComputedParagraphStyle=function(){this.text=new odf.ComputedTextProperties;this.paragraph=new odf.ComputedParagraphProperties};odf.ComputedTextStyle=function(){this.text=new odf.ComputedTextProperties};
+odf.StyleCache=function(h){function k(a,b,d,c){b=d.getAttributeNS(b,"class-names");var e;if(b)for(b=b.split(" "),e=0;e<b.length;e+=1)if(d=b[e])c.push(a),c.push(d)}function c(a,b){var d=y.getStyleName("paragraph",a);void 0!==d&&(b.push("paragraph"),b.push(d));a.namespaceURI!==l||"h"!==a.localName&&"p"!==a.localName||k("paragraph",l,a,b);return b}function b(a,b,d){var c=[],e,f,g,h;for(e=0;e<a.length;e+=2)g=a[e],h=a[e+1],g=m[g],h=g.getStyle(h),void 0!==h&&(h=h[b],void 0!==h&&h!==f&&(c.push(h),f=h));
+g=m[d];if(h=g.getDefaultStyle())h=h[b],void 0!==h&&h!==f&&c.push(h);return c}function g(a,b){var d=y.getStyleName("text",a),e=a.parentNode;void 0!==d&&(b.push("text"),b.push(d));"span"===a.localName&&a.namespaceURI===l&&k("text",l,a,b);if(!e||e===h)return b;e.namespaceURI!==l||"p"!==e.localName&&"h"!==e.localName?g(e,b):c(e,b);return b}function n(a){a=a.getAttributeNS(B,"family");return m[a]}var p=this,m,q,f,e,a,d,r,l=odf.Namespaces.textns,B=odf.Namespaces.stylens,y=new odf.StyleInfo,D=new odf.StyleParseUtils,
+z,t,x,w,F,L;this.getComputedGraphicStyle=function(a){var d=[];a=y.getStyleName("graphic",a);void 0!==a&&(d.push("graphic"),d.push(a));a=d.join("/");var c=e[a];runtime.assert(0===d.length%2,"Invalid style chain.");void 0===c&&(c=new odf.ComputedGraphicStyle,c.graphic.setGraphicProperties(b(d,"graphic","graphic")[0]),c.text.setStyleChain(b(d,"text","graphic")),c.paragraph.setStyleChain(b(d,"paragraph","graphic")),e[a]=c);return c};this.getComputedParagraphStyle=function(a){a=c(a,[]);var d=a.join("/"),
+e=f[d];runtime.assert(0===a.length%2,"Invalid style chain.");void 0===e&&(e=new odf.ComputedParagraphStyle,e.text.setStyleChain(b(a,"text","paragraph")),e.paragraph.setStyleChain(b(a,"paragraph","paragraph")),f[d]=e);return e};this.getComputedTextStyle=function(a){a=g(a,[]);var d=a.join("/"),c=q[d];runtime.assert(0===a.length%2,"Invalid style chain.");void 0===c&&(c=new odf.ComputedTextStyle,c.text.setStyleChain(b(a,"text","text")),q[d]=c);return c};this.getPageLayout=function(a){var b=L[a];b||((b=
+F[a])?(b=new odf.PageLayout(b,D,w),L[a]=b):b=w);return b};this.getDefaultPageLayout=function(){return w};this.getMasterPage=function(a){var b=t[a];void 0===b&&((b=z[a])?(b=new odf.MasterPage(b,p),t[a]=b):b=null);return b};this.getDefaultMasterPage=function(){return x};this.update=function(){var b,c,g=null,l=null;q={};f={};e={};z={};t={};L={};F={};a=new odf.StylePile(D,p);d=new odf.StylePile(D,p);r=new odf.StylePile(D,p);m={text:a,paragraph:d,graphic:r};for(b=h.styles.firstElementChild;b;)b.namespaceURI===
+B&&((c=n(b))?"style"===b.localName?c.addCommonStyle(b):"default-style"===b.localName&&c.setDefaultStyle(b):"default-page-layout"===b.localName&&(g=b)),b=b.nextElementSibling;w=new odf.PageLayout(g,D);for(b=h.automaticStyles.firstElementChild;b;)b.namespaceURI===B&&((c=n(b))&&"style"===b.localName?c.addAutomaticStyle(b):"page-layout"===b.localName&&(F[b.getAttributeNS(B,"name")]=b)),b=b.nextElementSibling;for(b=h.masterStyles.firstElementChild;b;)b.namespaceURI===B&&"master-page"===b.localName&&(l=
+l||b,c=b,g=c.getAttributeNS(B,"name"),0<g.length&&!z.hasOwnProperty(g)&&(z[g]=c)),b=b.nextElementSibling;x=new odf.MasterPage(l,p)}};ops.OperationTransformMatrix=function(){function h(a){a.position+=a.length;a.length*=-1}function k(a){var b=0>a.length;b&&h(a);return b}function c(a,b){function c(f){a[f]===b&&e.push(f)}var e=[];a&&["style:parent-style-name","style:next-style-name"].forEach(c);return e}function b(a,b){function c(e){a[e]===b&&delete a[e]}a&&["style:parent-style-name","style:next-style-name"].forEach(c)}function g(a){var b={};Object.keys(a).forEach(function(c){b[c]="object"===typeof a[c]?g(a[c]):a[c]});return b}function n(a,
+b,c,e){var f,g=!1,h=!1,k,m=[];e&&e.attributes&&(m=e.attributes.split(","));a&&(c||0<m.length)&&Object.keys(a).forEach(function(b){var d=a[b],e;"object"!==typeof d&&(c&&(e=c[b]),void 0!==e?(delete a[b],h=!0,e===d&&(delete c[b],g=!0)):-1!==m.indexOf(b)&&(delete a[b],h=!0))});if(b&&b.attributes&&(c||0<m.length)){k=b.attributes.split(",");for(e=0;e<k.length;e+=1)if(f=k[e],c&&void 0!==c[f]||m&&-1!==m.indexOf(f))k.splice(e,1),--e,h=!0;0<k.length?b.attributes=k.join(","):delete b.attributes}return{majorChanged:g,
+minorChanged:h}}function p(a){for(var b in a)if(a.hasOwnProperty(b))return!0;return!1}function m(a){for(var b in a)if(a.hasOwnProperty(b)&&("attributes"!==b||0<a.attributes.length))return!0;return!1}function q(a,b,c,e,f){var g=a?a[f]:null,h=b?b[f]:null,k=c?c[f]:null,q=e?e[f]:null,x;x=n(g,h,k,q);g&&!p(g)&&delete a[f];h&&!m(h)&&delete b[f];k&&!p(k)&&delete c[f];q&&!m(q)&&delete e[f];return x}function f(a,b){return{opSpecsA:[a],opSpecsB:[b]}}var e;e={AddAnnotation:{AddAnnotation:function(a,b,c){var e;
+a.position<b.position?(e=a,c=b):b.position<a.position?(e=b,c=a):(e=c?a:b,c=c?b:a);c.position<e.position+e.length&&(e.length+=2);c.position+=2;return{opSpecsA:[a],opSpecsB:[b]}},AddCursor:f,AddMember:f,AddStyle:f,ApplyDirectStyling:function(a,b){a.position<=b.position?b.position+=2:a.position<=b.position+b.length&&(b.length+=2);return{opSpecsA:[a],opSpecsB:[b]}},InsertText:function(a,b){b.position<=a.position?a.position+=b.text.length:(void 0!==a.length&&b.position<=a.position+a.length&&(a.length+=
+b.text.length),b.position+=2);return{opSpecsA:[a],opSpecsB:[b]}},MergeParagraph:function(a,b){b.sourceStartPosition<=a.position?--a.position:(void 0!==a.length&&b.sourceStartPosition<=a.position+a.length&&--a.length,b.sourceStartPosition+=2,a.position<b.destinationStartPosition&&(b.destinationStartPosition+=2));return{opSpecsA:[a],opSpecsB:[b]}},MoveCursor:function(a,b){var c=k(b);a.position<b.position?b.position+=2:a.position<b.position+b.length&&(b.length+=2);c&&h(b);return{opSpecsA:[a],opSpecsB:[b]}},
+RemoveAnnotation:function(a,b){a.position<b.position?(b.position<a.position+a.length&&(a.length-=b.length+2),b.position+=2):a.position-=b.length+2;return{opSpecsA:[a],opSpecsB:[b]}},RemoveCursor:f,RemoveMember:f,RemoveStyle:f,RemoveText:function(a,b){var c=b.position,e=b.position+b.length,f,g=[a],h=[b];a.position<=b.position?b.position+=2:a.position<e&&(b.length=a.position-b.position,f={optype:"RemoveText",memberid:b.memberid,timestamp:b.timestamp,position:a.position+2,length:e-a.position},h.unshift(f));
+b.position+b.length<=a.position?(a.position-=b.length,void 0!==a.length&&f&&(a.length=f.length>=a.length?0:a.length-f.length)):void 0!==a.length&&(f=a.position+a.length,e<=f?a.length-=b.length:c<f&&(a.length=c-a.position));return{opSpecsA:g,opSpecsB:h}},SetParagraphStyle:function(a,b){a.position<b.position&&(b.position+=2);return{opSpecsA:[a],opSpecsB:[b]}},SplitParagraph:function(a,b){a.position<b.sourceParagraphPosition&&(b.sourceParagraphPosition+=2);b.position<=a.position?a.position+=1:(void 0!==
+a.length&&b.position<=a.position+a.length&&(a.length+=1),b.position+=2);return{opSpecsA:[a],opSpecsB:[b]}},UpdateMember:f,UpdateMetadata:f,UpdateParagraphStyle:f},AddCursor:{AddCursor:f,AddMember:f,AddStyle:f,ApplyDirectStyling:f,InsertText:f,MergeParagraph:f,MoveCursor:f,RemoveAnnotation:f,RemoveCursor:f,RemoveMember:f,RemoveStyle:f,RemoveText:f,SetParagraphStyle:f,SplitParagraph:f,UpdateMember:f,UpdateMetadata:f,UpdateParagraphStyle:f},AddMember:{AddStyle:f,ApplyDirectStyling:f,InsertText:f,MergeParagraph:f,
+MoveCursor:f,RemoveAnnotation:f,RemoveCursor:f,RemoveStyle:f,RemoveText:f,SetParagraphStyle:f,SplitParagraph:f,UpdateMetadata:f,UpdateParagraphStyle:f},AddStyle:{AddStyle:f,ApplyDirectStyling:f,InsertText:f,MergeParagraph:f,MoveCursor:f,RemoveAnnotation:f,RemoveCursor:f,RemoveMember:f,RemoveStyle:function(a,d){var e,f=[a],g=[d];a.styleFamily===d.styleFamily&&(e=c(a.setProperties,d.styleName),0<e.length&&(e={optype:"UpdateParagraphStyle",memberid:d.memberid,timestamp:d.timestamp,styleName:a.styleName,
+removedProperties:{attributes:e.join(",")}},g.unshift(e)),b(a.setProperties,d.styleName));return{opSpecsA:f,opSpecsB:g}},RemoveText:f,SetParagraphStyle:f,SplitParagraph:f,UpdateMember:f,UpdateMetadata:f,UpdateParagraphStyle:f},ApplyDirectStyling:{ApplyDirectStyling:function(a,b,c){var e,f,h,k,m,n,x,w;k=[a];h=[b];if(!(a.position+a.length<=b.position||a.position>=b.position+b.length)){e=c?a:b;f=c?b:a;if(a.position!==b.position||a.length!==b.length)n=g(e),x=g(f);b=q(f.setProperties,null,e.setProperties,
+null,"style:text-properties");if(b.majorChanged||b.minorChanged)h=[],a=[],k=e.position+e.length,m=f.position+f.length,f.position<e.position?b.minorChanged&&(w=g(x),w.length=e.position-f.position,a.push(w),f.position=e.position,f.length=m-f.position):e.position<f.position&&b.majorChanged&&(w=g(n),w.length=f.position-e.position,h.push(w),e.position=f.position,e.length=k-e.position),m>k?b.minorChanged&&(n=x,n.position=k,n.length=m-k,a.push(n),f.length=k-f.position):k>m&&b.majorChanged&&(n.position=m,
+n.length=k-m,h.push(n),e.length=m-e.position),e.setProperties&&p(e.setProperties)&&h.push(e),f.setProperties&&p(f.setProperties)&&a.push(f),c?(k=h,h=a):k=a}return{opSpecsA:k,opSpecsB:h}},InsertText:function(a,b){b.position<=a.position?a.position+=b.text.length:b.position<=a.position+a.length&&(a.length+=b.text.length);return{opSpecsA:[a],opSpecsB:[b]}},MergeParagraph:function(a,b){var c=a.position,e=a.position+a.length;c>=b.sourceStartPosition&&--c;e>=b.sourceStartPosition&&--e;a.position=c;a.length=
+e-c;return{opSpecsA:[a],opSpecsB:[b]}},MoveCursor:f,RemoveAnnotation:function(a,b){var c=a.position,e=a.position+a.length,f=b.position+b.length,g=[a],h=[b];b.position<=c&&e<=f?g=[]:(f<c&&(c-=b.length+2),f<e&&(e-=b.length+2),a.position=c,a.length=e-c);return{opSpecsA:g,opSpecsB:h}},RemoveCursor:f,RemoveMember:f,RemoveStyle:f,RemoveText:function(a,b){var c=a.position+a.length,e=b.position+b.length,f=[a],g=[b];e<=a.position?a.position-=b.length:b.position<c&&(a.position<b.position?a.length=e<c?a.length-
+b.length:b.position-a.position:(a.position=b.position,e<c?a.length=c-e:f=[]));return{opSpecsA:f,opSpecsB:g}},SetParagraphStyle:f,SplitParagraph:function(a,b){b.position<a.position?a.position+=1:b.position<a.position+a.length&&(a.length+=1);return{opSpecsA:[a],opSpecsB:[b]}},UpdateMember:f,UpdateMetadata:f,UpdateParagraphStyle:f},InsertText:{InsertText:function(a,b,c){a.position<b.position?b.position+=a.text.length:a.position>b.position?a.position+=b.text.length:c?b.position+=a.text.length:a.position+=
+b.text.length;return{opSpecsA:[a],opSpecsB:[b]}},MergeParagraph:function(a,b){a.position>=b.sourceStartPosition?--a.position:(a.position<b.sourceStartPosition&&(b.sourceStartPosition+=a.text.length),a.position<b.destinationStartPosition&&(b.destinationStartPosition+=a.text.length));return{opSpecsA:[a],opSpecsB:[b]}},MoveCursor:function(a,b){var c=k(b);a.position<b.position?b.position+=a.text.length:a.position<b.position+b.length&&(b.length+=a.text.length);c&&h(b);return{opSpecsA:[a],opSpecsB:[b]}},
+RemoveAnnotation:function(a,b){var c=a.position,e=b.position+b.length,f=[a],g=[b];b.position<=c&&c<=e?(f=[],b.length+=a.text.length):e<a.position?a.position-=b.length+2:b.position+=a.text.length;return{opSpecsA:f,opSpecsB:g}},RemoveCursor:f,RemoveMember:f,RemoveStyle:f,RemoveText:function(a,b){var c;c=b.position+b.length;var e=[a],f=[b];c<=a.position?a.position-=b.length:a.position<=b.position?b.position+=a.text.length:(b.length=a.position-b.position,c={optype:"RemoveText",memberid:b.memberid,timestamp:b.timestamp,
+position:a.position+a.text.length,length:c-a.position},f.unshift(c),a.position=b.position);return{opSpecsA:e,opSpecsB:f}},SetParagraphStyle:function(a,b){b.position>a.position&&(b.position+=a.text.length);return{opSpecsA:[a],opSpecsB:[b]}},SplitParagraph:function(a,b){a.position<b.sourceParagraphPosition&&(b.sourceParagraphPosition+=a.text.length);a.position<=b.position?b.position+=a.text.length:a.position+=1;return{opSpecsA:[a],opSpecsB:[b]}},UpdateMember:f,UpdateMetadata:f,UpdateParagraphStyle:f},
+MergeParagraph:{MergeParagraph:function(a,b,c){var e=[a],f=[b],g;a.destinationStartPosition===b.destinationStartPosition?(e=[],f=[],a.moveCursor&&(g={optype:"MoveCursor",memberid:a.memberid,timestamp:a.timestamp,position:a.sourceStartPosition-1},e.push(g)),b.moveCursor&&(g={optype:"MoveCursor",memberid:b.memberid,timestamp:b.timestamp,position:b.sourceStartPosition-1},f.push(g)),a=c?a:b,a={optype:"SetParagraphStyle",memberid:a.memberid,timestamp:a.timestamp,position:a.destinationStartPosition,styleName:a.paragraphStyleName},
+c?e.push(a):f.push(a)):b.sourceStartPosition===a.destinationStartPosition?(a.destinationStartPosition=b.destinationStartPosition,--a.sourceStartPosition,a.paragraphStyleName=b.paragraphStyleName):a.sourceStartPosition===b.destinationStartPosition?(b.destinationStartPosition=a.destinationStartPosition,--b.sourceStartPosition,b.paragraphStyleName=a.paragraphStyleName):a.destinationStartPosition<b.destinationStartPosition?(--b.destinationStartPosition,--b.sourceStartPosition):(--a.destinationStartPosition,
+--a.sourceStartPosition);return{opSpecsA:e,opSpecsB:f}},MoveCursor:function(a,b){var c=b.position,e=b.position+b.length,f=Math.min(c,e),c=Math.max(c,e);f>=a.sourceStartPosition&&--f;c>=a.sourceStartPosition&&--c;0<=b.length?(b.position=f,b.length=c-f):(b.position=c,b.length=f-c);return{opSpecsA:[a],opSpecsB:[b]}},RemoveAnnotation:function(a,b){var c=b.position+b.length,e=[a],f=[b];b.position<=a.destinationStartPosition&&a.sourceStartPosition<=c?(e=[],--b.length):a.sourceStartPosition<b.position?--b.position:
+(c<a.destinationStartPosition&&(a.destinationStartPosition-=b.length+2),c<a.sourceStartPosition&&(a.sourceStartPosition-=b.length+2));return{opSpecsA:e,opSpecsB:f}},RemoveCursor:f,RemoveMember:f,RemoveStyle:f,RemoveText:function(a,b){b.position>=a.sourceStartPosition?--b.position:(b.position<a.destinationStartPosition&&(a.destinationStartPosition-=b.length),b.position<a.sourceStartPosition&&(a.sourceStartPosition-=b.length));return{opSpecsA:[a],opSpecsB:[b]}},SetParagraphStyle:function(a,b){var c=
+[a],e=[b];if(b.position>a.sourceStartPosition)--b.position;else if(b.position===a.destinationStartPosition||b.position===a.sourceStartPosition)b.position=a.destinationStartPosition,a.paragraphStyleName=b.styleName;return{opSpecsA:c,opSpecsB:e}},SplitParagraph:function(a,b){var c,e=[a],f=[b];b.position<a.destinationStartPosition?(a.destinationStartPosition+=1,a.sourceStartPosition+=1):b.position>=a.destinationStartPosition&&b.position<a.sourceStartPosition?(b.paragraphStyleName=a.paragraphStyleName,
+c={optype:"SetParagraphStyle",memberid:a.memberid,timestamp:a.timestamp,position:a.destinationStartPosition,styleName:a.paragraphStyleName},e.push(c),b.position===a.sourceStartPosition-1&&a.moveCursor&&(c={optype:"MoveCursor",memberid:a.memberid,timestamp:a.timestamp,position:b.position,length:0},e.push(c)),a.destinationStartPosition=b.position+1,a.sourceStartPosition+=1):b.position>=a.sourceStartPosition&&(--b.position,--b.sourceParagraphPosition);return{opSpecsA:e,opSpecsB:f}},UpdateMember:f,UpdateMetadata:f,
+UpdateParagraphStyle:f},MoveCursor:{MoveCursor:f,RemoveAnnotation:function(a,b){var c=k(a),e=a.position+a.length,f=b.position+b.length;b.position<=a.position&&e<=f?(a.position=b.position-1,a.length=0):(f<a.position?a.position-=b.length+2:f<e&&(a.length-=b.length+2),c&&h(a));return{opSpecsA:[a],opSpecsB:[b]}},RemoveCursor:function(a,b){return{opSpecsA:a.memberid===b.memberid?[]:[a],opSpecsB:[b]}},RemoveMember:f,RemoveStyle:f,RemoveText:function(a,b){var c=k(a),e=a.position+a.length,f=b.position+b.length;
+f<=a.position?a.position-=b.length:b.position<e&&(a.position<b.position?a.length=f<e?a.length-b.length:b.position-a.position:(a.position=b.position,a.length=f<e?e-f:0));c&&h(a);return{opSpecsA:[a],opSpecsB:[b]}},SetParagraphStyle:f,SplitParagraph:function(a,b){var c=k(a);b.position<a.position?a.position+=1:b.position<a.position+a.length&&(a.length+=1);c&&h(a);return{opSpecsA:[a],opSpecsB:[b]}},UpdateMember:f,UpdateMetadata:f,UpdateParagraphStyle:f},RemoveAnnotation:{RemoveAnnotation:function(a,b){var c=
+[a],e=[b];a.position===b.position&&a.length===b.length?(c=[],e=[]):a.position<b.position?b.position-=a.length+2:a.position-=b.length+2;return{opSpecsA:c,opSpecsB:e}},RemoveCursor:f,RemoveMember:f,RemoveStyle:f,RemoveText:function(a,b){var c=a.position+a.length,e=b.position+b.length,f=[a],g=[b];a.position<=b.position&&e<=c?(g=[],a.length-=b.length):e<a.position?a.position-=b.length:b.position<a.position?(a.position=b.position+1,b.length-=a.length+2):b.position-=a.length+2;return{opSpecsA:f,opSpecsB:g}},
+SetParagraphStyle:function(a,b){var c=b.position,e=a.position+a.length,f=[a],g=[b];a.position<=c&&c<=e?g=[]:e<c&&(b.position-=a.length+2);return{opSpecsA:f,opSpecsB:g}},SplitParagraph:function(a,b){var c=b.position,e=a.position+a.length,f=[a],g=[b];a.position<=c&&c<=e?(g=[],a.length+=1):(e<b.sourceParagraphPosition&&(b.sourceParagraphPosition-=a.length+2),e<c?b.position-=a.length+2:a.position+=1);return{opSpecsA:f,opSpecsB:g}},UpdateMember:f,UpdateMetadata:f,UpdateParagraphStyle:f},RemoveCursor:{RemoveCursor:function(a,
+b){var c=a.memberid===b.memberid;return{opSpecsA:c?[]:[a],opSpecsB:c?[]:[b]}},RemoveMember:f,RemoveStyle:f,RemoveText:f,SetParagraphStyle:f,SplitParagraph:f,UpdateMember:f,UpdateMetadata:f,UpdateParagraphStyle:f},RemoveMember:{RemoveStyle:f,RemoveText:f,SetParagraphStyle:f,SplitParagraph:f,UpdateMetadata:f,UpdateParagraphStyle:f},RemoveStyle:{RemoveStyle:function(a,b){var c=a.styleName===b.styleName&&a.styleFamily===b.styleFamily;return{opSpecsA:c?[]:[a],opSpecsB:c?[]:[b]}},RemoveText:f,SetParagraphStyle:function(a,
+b){var c,e=[a],f=[b];"paragraph"===a.styleFamily&&a.styleName===b.styleName&&(c={optype:"SetParagraphStyle",memberid:a.memberid,timestamp:a.timestamp,position:b.position,styleName:""},e.unshift(c),b.styleName="");return{opSpecsA:e,opSpecsB:f}},SplitParagraph:f,UpdateMember:f,UpdateMetadata:f,UpdateParagraphStyle:function(a,d){var e,f=[a],g=[d];"paragraph"===a.styleFamily&&(e=c(d.setProperties,a.styleName),0<e.length&&(e={optype:"UpdateParagraphStyle",memberid:a.memberid,timestamp:a.timestamp,styleName:d.styleName,
+removedProperties:{attributes:e.join(",")}},f.unshift(e)),a.styleName===d.styleName?g=[]:b(d.setProperties,a.styleName));return{opSpecsA:f,opSpecsB:g}}},RemoveText:{RemoveText:function(a,b){var c=a.position+a.length,e=b.position+b.length,f=[a],g=[b];e<=a.position?a.position-=b.length:c<=b.position?b.position-=a.length:b.position<c&&(a.position<b.position?(a.length=e<c?a.length-b.length:b.position-a.position,c<e?(b.position=a.position,b.length=e-c):g=[]):(c<e?b.length-=a.length:b.position<a.position?
+b.length=a.position-b.position:g=[],e<c?(a.position=b.position,a.length=c-e):f=[]));return{opSpecsA:f,opSpecsB:g}},SetParagraphStyle:function(a,b){a.position<b.position&&(b.position-=a.length);return{opSpecsA:[a],opSpecsB:[b]}},SplitParagraph:function(a,b){var c=a.position+a.length,e=[a],f=[b];b.position<=a.position?a.position+=1:b.position<c&&(a.length=b.position-a.position,c={optype:"RemoveText",memberid:a.memberid,timestamp:a.timestamp,position:b.position+1,length:c-b.position},e.unshift(c));a.position+
+a.length<=b.position?b.position-=a.length:a.position<b.position&&(b.position=a.position);a.position+a.length<b.sourceParagraphPosition&&(b.sourceParagraphPosition-=a.length);return{opSpecsA:e,opSpecsB:f}},UpdateMember:f,UpdateMetadata:f,UpdateParagraphStyle:f},SetParagraphStyle:{SetParagraphStyle:function(a,b,c){a.position===b.position&&(c?b.styleName=a.styleName:a.styleName=b.styleName);return{opSpecsA:[a],opSpecsB:[b]}},SplitParagraph:function(a,b){var c=[a],e=[b],f;a.position>b.position?a.position+=
+1:a.position===b.sourceParagraphPosition&&(b.paragraphStyleName=a.styleName,f=g(a),f.position=b.position+1,c.push(f));return{opSpecsA:c,opSpecsB:e}},UpdateMember:f,UpdateMetadata:f,UpdateParagraphStyle:f},SplitParagraph:{SplitParagraph:function(a,b,c){var e,f;a.position<b.position?e=!0:b.position<a.position?f=!0:a.position===b.position&&(c?e=!0:f=!0);e?(b.position+=1,b.sourceParagraphPosition=a.position<b.sourceParagraphPosition?b.sourceParagraphPosition+1:a.position+1):f&&(a.position+=1,a.sourceParagraphPosition=
+b.position<b.sourceParagraphPosition?a.sourceParagraphPosition+1:b.position+1);return{opSpecsA:[a],opSpecsB:[b]}},UpdateMember:f,UpdateMetadata:f,UpdateParagraphStyle:f},UpdateMember:{UpdateMetadata:f,UpdateParagraphStyle:f},UpdateMetadata:{UpdateMetadata:function(a,b,c){var e,f=[a],g=[b];e=c?a:b;a=c?b:a;n(a.setProperties||null,a.removedProperties||null,e.setProperties||null,e.removedProperties||null);e.setProperties&&p(e.setProperties)||e.removedProperties&&m(e.removedProperties)||(c?f=[]:g=[]);
+a.setProperties&&p(a.setProperties)||a.removedProperties&&m(a.removedProperties)||(c?g=[]:f=[]);return{opSpecsA:f,opSpecsB:g}},UpdateParagraphStyle:f},UpdateParagraphStyle:{UpdateParagraphStyle:function(a,b,c){var e,f=[a],g=[b];a.styleName===b.styleName&&(e=c?a:b,a=c?b:a,q(a.setProperties,a.removedProperties,e.setProperties,e.removedProperties,"style:paragraph-properties"),q(a.setProperties,a.removedProperties,e.setProperties,e.removedProperties,"style:text-properties"),n(a.setProperties||null,a.removedProperties||
+null,e.setProperties||null,e.removedProperties||null),e.setProperties&&p(e.setProperties)||e.removedProperties&&m(e.removedProperties)||(c?f=[]:g=[]),a.setProperties&&p(a.setProperties)||a.removedProperties&&m(a.removedProperties)||(c?g=[]:f=[]));return{opSpecsA:f,opSpecsB:g}}}};this.passUnchanged=f;this.extendTransformations=function(a){Object.keys(a).forEach(function(b){var c=a[b],f,g=e.hasOwnProperty(b);runtime.log((g?"Extending":"Adding")+" map for optypeA: "+b);g||(e[b]={});f=e[b];Object.keys(c).forEach(function(a){var e=
+f.hasOwnProperty(a);runtime.assert(b<=a,"Wrong order:"+b+", "+a);runtime.log(" "+(e?"Overwriting":"Adding")+" entry for optypeB: "+a);f[a]=c[a]})})};this.transformOpspecVsOpspec=function(a,b){var c=a.optype<=b.optype,f;runtime.log("Crosstransforming:");runtime.log(runtime.toJson(a));runtime.log(runtime.toJson(b));c||(f=a,a=b,b=f);(f=(f=e[a.optype])&&f[b.optype])?(f=f(a,b,!c),c||null===f||(f={opSpecsA:f.opSpecsB,opSpecsB:f.opSpecsA})):f=null;runtime.log("result:");f?(runtime.log(runtime.toJson(f.opSpecsA)),
+runtime.log(runtime.toJson(f.opSpecsB))):runtime.log("null");return f}};ops.OperationTransformer=function(){function h(c,b){for(var g,n,p=[],m=[];0<c.length&&b;){g=c.shift();g=k.transformOpspecVsOpspec(g,b);if(!g)return null;p=p.concat(g.opSpecsA);if(0===g.opSpecsB.length){p=p.concat(c);b=null;break}for(;1<g.opSpecsB.length;){n=h(c,g.opSpecsB.shift());if(!n)return null;m=m.concat(n.opSpecsB);c=n.opSpecsA}b=g.opSpecsB.pop()}b&&m.push(b);return{opSpecsA:p,opSpecsB:m}}var k=new ops.OperationTransformMatrix;this.getOperationTransformMatrix=function(){return k};this.transform=
+function(c,b){for(var g,k=[];0<b.length;){g=h(c,b.shift());if(!g)return null;c=g.opSpecsA;k=k.concat(g.opSpecsB)}return{opSpecsA:c,opSpecsB:k}}};var webodf_css='@namespace draw url(urn:oasis:names:tc:opendocument:xmlns:drawing:1.0);@namespace fo url(urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0);@namespace office url(urn:oasis:names:tc:opendocument:xmlns:office:1.0);@namespace presentation url(urn:oasis:names:tc:opendocument:xmlns:presentation:1.0);@namespace style url(urn:oasis:names:tc:opendocument:xmlns:style:1.0);@namespace svg url(urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0);@namespace table url(urn:oasis:names:tc:opendocument:xmlns:table:1.0);@namespace text url(urn:oasis:names:tc:opendocument:xmlns:text:1.0);@namespace webodfhelper url(urn:webodf:names:helper);@namespace cursor url(urn:webodf:names:cursor);@namespace editinfo url(urn:webodf:names:editinfo);@namespace annotation url(urn:webodf:names:annotation);@namespace dc url(http://purl.org/dc/elements/1.1/);@namespace svgns url(http://www.w3.org/2000/svg);office|document > *, office|document-content > * {display: none;}office|body, office|document {display: inline-block;position: relative;}text|p, text|h {display: block;padding: 0;margin: 0;line-height: normal;position: relative;}text|p::after, text|h::after {content: "\\200B";white-space: pre;}*[webodfhelper|containsparagraphanchor] {position: relative;}text|s {white-space: pre;}text|tab {display: inline;white-space: pre;}text|tracked-changes {display: none;}office|binary-data {display: none;}office|text {display: block;text-align: left;overflow: visible;word-wrap: break-word;}office|text::selection {background: transparent;}.webodf-virtualSelections *::selection {background: transparent;}.webodf-virtualSelections *::-moz-selection {background: transparent;}office|text * draw|text-box {display: block;border: 1px solid #d3d3d3;}office|text draw|frame {z-index: 1;}office|spreadsheet {display: block;border-collapse: collapse;empty-cells: show;font-family: sans-serif;font-size: 10pt;text-align: left;page-break-inside: avoid;overflow: hidden;}office|presentation {display: inline-block;text-align: left;}#shadowContent {display: inline-block;text-align: left;}draw|page {display: block;position: relative;overflow: hidden;}presentation|notes, presentation|footer-decl, presentation|date-time-decl {display: none;}@media print {draw|page {border: 1pt solid black;page-break-inside: avoid;}presentation|notes {}}office|spreadsheet text|p {border: 0px;padding: 1px;margin: 0px;}office|spreadsheet table|table {margin: 3px;}office|spreadsheet table|table:after {}office|spreadsheet table|table-row {counter-increment: row;}office|spreadsheet table|table-row:before {width: 3em;background: #cccccc;border: 1px solid black;text-align: center;content: counter(row);display: table-cell;}office|spreadsheet table|table-cell {border: 1px solid #cccccc;}table|table {display: table;}draw|frame table|table {width: 100%;height: 100%;background: white;}table|table-header-rows {display: table-header-group;}table|table-row {display: table-row;}table|table-column {display: table-column;}table|table-cell {width: 0.889in;display: table-cell;word-break: break-all;}draw|frame {display: block;}draw|image {display: block;width: 100%;height: 100%;top: 0px;left: 0px;background-repeat: no-repeat;background-size: 100% 100%;-moz-background-size: 100% 100%;}draw|frame > draw|image:nth-of-type(n+2) {display: none;}text|list:before {display: none;content:"";}text|list {display: block;}text|list-item {display: block;}text|number {display:none;}text|a {color: blue;text-decoration: underline;cursor: pointer;}.webodf-inactiveLinks text|a {cursor: text;}text|note-citation {vertical-align: super;font-size: smaller;}text|note-body {display: none;}text|note:hover text|note-citation {background: #dddddd;}text|note:hover text|note-body {display: block;left:1em;max-width: 80%;position: absolute;background: #ffffaa;}text|bibliography-source {display: none;}svg|title, svg|desc {display: none;}video {width: 100%;height: 100%}cursor|anchor {display: none;}cursor|cursor {display: none;}.webodf-caretOverlay {position: absolute;top: 5%;height: 1em;z-index: 10;padding-left: 1px;pointer-events: none;}.webodf-caretOverlay .caret {position: absolute;border-left: 2px solid black;top: 0;bottom: 0;right: 0;}.webodf-caretOverlay .handle {position: absolute;margin-top: 5px;padding-top: 3px;margin-left: auto;margin-right: auto;width: 64px;height: 68px;border-radius: 5px;opacity: 0.3;text-align: center;background-color: black;box-shadow: 0px 0px 5px rgb(90, 90, 90);border: 1px solid black;top: -85px;right: -32px;}.webodf-caretOverlay .handle > img {box-shadow: 0px 0px 5px rgb(90, 90, 90) inset;background-color: rgb(200, 200, 200);border-radius: 5px;border: 2px solid;height: 60px;width: 60px;display: block;margin: auto;}.webodf-caretOverlay .handle.active {opacity: 0.8;}.webodf-caretOverlay .handle:after {content: " ";position: absolute;width: 0px;height: 0px;border-style: solid;border-width: 8.7px 5px 0 5px;border-color: black transparent transparent transparent;top: 100%;left: 43%;}.webodf-caretSizer {display: inline-block;width: 0;visibility: hidden;}#eventTrap {display: block;position: absolute;bottom: 0;left: 0;outline: none;opacity: 0;color: rgba(255, 255, 255, 0);pointer-events: none;white-space: pre;overflow: hidden;}cursor|cursor > #composer {text-decoration: underline;}cursor|cursor[cursor|caret-sizer-active="true"],cursor|cursor[cursor|composing="true"] {display: inline;}editinfo|editinfo {display: inline-block;}.editInfoMarker {position: absolute;width: 10px;height: 100%;left: -20px;opacity: 0.8;top: 0;border-radius: 5px;background-color: transparent;box-shadow: 0px 0px 5px rgba(50, 50, 50, 0.75);}.editInfoMarker:hover {box-shadow: 0px 0px 8px rgba(0, 0, 0, 1);}.editInfoHandle {position: absolute;background-color: black;padding: 5px;border-radius: 5px;opacity: 0.8;box-shadow: 0px 0px 5px rgba(50, 50, 50, 0.75);bottom: 100%;margin-bottom: 10px;z-index: 3;left: -25px;}.editInfoHandle:after {content: " ";position: absolute;width: 0px;height: 0px;border-style: solid;border-width: 8.7px 5px 0 5px;border-color: black transparent transparent transparent;top: 100%;left: 5px;}.editInfo {font-family: sans-serif;font-weight: normal;font-style: normal;text-decoration: none;color: white;width: 100%;height: 12pt;}.editInfoColor {float: left;width: 10pt;height: 10pt;border: 1px solid white;}.editInfoAuthor {float: left;margin-left: 5pt;font-size: 10pt;text-align: left;height: 12pt;line-height: 12pt;}.editInfoTime {float: right;margin-left: 30pt;font-size: 8pt;font-style: italic;color: yellow;height: 12pt;line-height: 12pt;}.annotationWrapper {display: inline;position: relative;}.annotationRemoveButton:before {content: "\u00d7";color: white;padding: 5px;line-height: 1em;}.annotationRemoveButton {width: 20px;height: 20px;border-radius: 10px;background-color: black;box-shadow: 0px 0px 5px rgba(50, 50, 50, 0.75);position: absolute;top: -10px;left: -10px;z-index: 3;text-align: center;font-family: sans-serif;font-style: normal;font-weight: normal;text-decoration: none;font-size: 15px;}.annotationRemoveButton:hover {cursor: pointer;box-shadow: 0px 0px 5px rgba(0, 0, 0, 1);}.annotationNote {width: 4cm;position: absolute;display: inline;z-index: 10;top: 0;}.annotationNote > office|annotation {display: block;text-align: left;}.annotationConnector {position: absolute;display: inline;top: 0;z-index: 2;border-top: 1px dashed brown;}.annotationConnector.angular {-moz-transform-origin: left top;-webkit-transform-origin: left top;-ms-transform-origin: left top;transform-origin: left top;}.annotationConnector.horizontal {left: 0;}.annotationConnector.horizontal:before {content: "";display: inline;position: absolute;width: 0px;height: 0px;border-style: solid;border-width: 8.7px 5px 0 5px;border-color: brown transparent transparent transparent;top: -1px;left: -5px;}office|annotation {width: 100%;height: 100%;display: none;background: rgb(198, 238, 184);background: -moz-linear-gradient(90deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);background: -webkit-linear-gradient(90deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);background: -o-linear-gradient(90deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);background: -ms-linear-gradient(90deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);background: linear-gradient(180deg, rgb(198, 238, 184) 30%, rgb(180, 196, 159) 100%);box-shadow: 0 3px 4px -3px #ccc;}office|annotation > dc|creator {display: block;font-size: 10pt;font-weight: normal;font-style: normal;font-family: sans-serif;color: white;background-color: brown;padding: 4px;}office|annotation > dc|date {display: block;font-size: 10pt;font-weight: normal;font-style: normal;font-family: sans-serif;border: 4px solid transparent;color: black;}office|annotation > text|list {display: block;padding: 5px;}office|annotation text|p {font-size: 10pt;color: black;font-weight: normal;font-style: normal;text-decoration: none;font-family: sans-serif;}#annotationsPane {background-color: #EAEAEA;width: 4cm;height: 100%;display: none;position: absolute;outline: 1px solid #ccc;}.webodf-annotationHighlight {background-color: yellow;position: relative;}.webodf-selectionOverlay {position: absolute;pointer-events: none;top: 0;left: 0;top: 0;left: 0;width: 100%;height: 100%;z-index: 15;}.webodf-selectionOverlay > polygon {fill-opacity: 0.3;stroke-opacity: 0.8;stroke-width: 1;fill-rule: evenodd;}.webodf-selectionOverlay > .webodf-draggable {fill-opacity: 0.8;stroke-opacity: 0;stroke-width: 8;pointer-events: all;display: none;-moz-transform-origin: center center;-webkit-transform-origin: center center;-ms-transform-origin: center center;transform-origin: center center;}#imageSelector {display: none;position: absolute;border-style: solid;border-color: black;}#imageSelector > div {width: 5px;height: 5px;display: block;position: absolute;border: 1px solid black;background-color: #ffffff;}#imageSelector > .topLeft {top: -4px;left: -4px;}#imageSelector > .topRight {top: -4px;right: -4px;}#imageSelector > .bottomRight {right: -4px;bottom: -4px;}#imageSelector > .bottomLeft {bottom: -4px;left: -4px;}#imageSelector > .topMiddle {top: -4px;left: 50%;margin-left: -2.5px;}#imageSelector > .rightMiddle {top: 50%;right: -4px;margin-top: -2.5px;}#imageSelector > .bottomMiddle {bottom: -4px;left: 50%;margin-left: -2.5px;}#imageSelector > .leftMiddle {top: 50%;left: -4px;margin-top: -2.5px;}div.webodf-customScrollbars::-webkit-scrollbar{width: 8px;height: 8px;background-color: transparent;}div.webodf-customScrollbars::-webkit-scrollbar-track{background-color: transparent;}div.webodf-customScrollbars::-webkit-scrollbar-thumb{background-color: #444;border-radius: 4px;}.webodf-hyperlinkTooltip {display: none;color: white;background-color: black;border-radius: 5px;box-shadow: 2px 2px 5px gray;padding: 3px;position: absolute;max-width: 210px;text-align: left;word-break: break-all;z-index: 16;}.webodf-hyperlinkTooltipText {display: block;font-weight: bold;}';